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)