Module Name: src Committed By: mlelstv Date: Fri May 19 15:42:43 UTC 2023
Modified Files: src/sys/dev: vnd.c Log Message: Neither limit the number of requests for the page daemon. Otherwise you may deadlock when the backend needs to allocate memory and the page daemon needs to flush dirty vnd buffers. See PR 57421 for details. To generate a diff of this commit: cvs rdiff -u -r1.288 -r1.289 src/sys/dev/vnd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/vnd.c diff -u src/sys/dev/vnd.c:1.288 src/sys/dev/vnd.c:1.289 --- src/sys/dev/vnd.c:1.288 Tue Mar 14 12:55:43 2023 +++ src/sys/dev/vnd.c Fri May 19 15:42:43 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: vnd.c,v 1.288 2023/03/14 12:55:43 hannken Exp $ */ +/* $NetBSD: vnd.c,v 1.289 2023/05/19 15:42:43 mlelstv Exp $ */ /*- * Copyright (c) 1996, 1997, 1998, 2008, 2020 The NetBSD Foundation, Inc. @@ -91,7 +91,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: vnd.c,v 1.288 2023/03/14 12:55:43 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vnd.c,v 1.289 2023/05/19 15:42:43 mlelstv Exp $"); #if defined(_KERNEL_OPT) #include "opt_vnd.h" @@ -123,6 +123,8 @@ __KERNEL_RCSID(0, "$NetBSD: vnd.c,v 1.28 #include <sys/compat_stub.h> #include <sys/atomic.h> +#include <uvm/uvm.h> + #include <net/zlib.h> #include <miscfs/genfs/genfs.h> @@ -559,7 +561,7 @@ vndstrategy(struct buf *bp) * thread to add requests, as a wedge on vnd queues * requests with biodone() -> dkstart() -> vndstrategy(). */ - if (curlwp != vnd->sc_kthread) { + if (curlwp != vnd->sc_kthread && curlwp != uvm.pagedaemon_lwp) { while (vnd->sc_pending >= VND_MAXPENDING(vnd)) tsleep(&vnd->sc_pending, PRIBIO, "vndpc", 0); }