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);
 		}

Reply via email to