Subject: kern/2657: [dM] vnd can disk_unbusy without disk_busy
To: None <gnats-bugs@NetBSD.ORG>
From: der Mouse <mouse@Collatz.McRCIM.McGill.EDU>
List: netbsd-bugs
Date: 07/25/1996 17:54:35
>Number: 2657
>Category: kern
>Synopsis: [dM] vnd can disk_unbusy without disk_busy
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: kern-bug-people (Kernel Bug People)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu Jul 25 18:05:00 1996
>Last-Modified:
>Originator: der Mouse
>Organization:
Dos-
>Release: $NetBSD: vnd.c,v 1.26 1996/03/30 23:06:11 christos Exp $
>Environment:
Any (found on a SPARC IPC)
>Description:
If VOP_BMAP() fails, vndstrategy will call biodone(), which
will call vndiodone(), which will call disk_unbusy(), on a
buffer that has never had a disk_busy() call done on it. This
typically tickles the panic in disk_unbusy():
panic("disk_unbusy: %s: dk_busy < 0", diskp->dk_name);
>How-To-Repeat:
Arrange for VOP_BMAP to fail, then try to access that part of
the vnd. I'm not sure what's causing VOP_BMAP to fail; I
currently suspect the cause is that the file has holes in it.
>Fix:
Unknown. _Something_ needs to be done; even if the vnd chooses
to not support files with holes (which should be documented if
it's the case - the manpage makes no mention of any such
restriction), panicking with an unclear error is _not_ the
right way to handle it. :-)
der Mouse
mouse@collatz.mcrcim.mcgill.edu
01 EE 31 F6 BB 0C 34 36 00 F3 7C 5A C1 A0 67 1D
>Audit-Trail:
>Unformatted:
(this is the latest, as of this morning's sup, on the -current
sup, which is the 1.2 release branch)