Subject: PR/20296 CVS commit: src/sys/dev
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: Manuel Bouyer <bouyer@netbsd.org>
List: netbsd-bugs
Date: 09/03/2006 19:50:03
The following reply was made to PR kern/20296; it has been noted by GNATS.
From: Manuel Bouyer <bouyer@netbsd.org>
To: gnats-bugs@NetBSD.org
Cc:
Subject: PR/20296 CVS commit: src/sys/dev
Date: Sun, 3 Sep 2006 19:49:34 +0000 (UTC)
Module Name: src
Committed By: bouyer
Date: Sun Sep 3 19:49:34 UTC 2006
Modified Files:
src/sys/dev: vnd.c
Log Message:
Back out rev 1.149.
From various discussion about vndstrategy (see
http://mail-index.netbsd.org/tech-kern/2005/03/29/0034.html
http://mail-index.netbsd.org/tech-kern/2005/03/23/0015.html)
it's not correct to tsleep() in a strategy routine, which may be called from
interrupt context.
Unfortunably this reopens PR/10731, PR/12189, PR/20296, PR/34293
As for what the correct fix it, this needs to be analysed deeper. I suspect
throttling the caller in vnd only hides the problem; the same caller writing
to some other device could exaust all buffers as well. If this driver doesn't
need to allocate buffer this won't cause a deadlock, but it's bad for
performances on systems with e.g. multiple drives. Also, others stacked
block device drivers may also have this issue.
To generate a diff of this commit:
cvs rdiff -r1.149 -r1.150 src/sys/dev/vnd.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.