Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Aug 1999 05:10:02 -0700 (PDT)
From:      Bruce Evans <bde@zeta.org.au>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: kern/10959: 3.1-STABLE crashes due to a floppy mount problem
Message-ID:  <199908111210.FAA18480@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/10959; it has been noted by GNATS.

From: Bruce Evans <bde@zeta.org.au>
To: freebsd-gnats-submit@freebsd.org, jkoshy@freebsd.org
Cc:  
Subject: Re: kern/10959: 3.1-STABLE crashes due to a floppy mount problem
Date: Wed, 11 Aug 1999 22:02:40 +1000

 > I took a stab at reproducing and analysing this PR.  The good news is
 > that the problem is reproducible in -current.
 
 The good news is that you found a new bug :-).  Rev.1.196 of vfs_bio.c
 causes lots of problems by arranging for writes to be retried forever
 after an error.  Some of the problems are converted from endless retries
 to panics by filesystem bugs.
 
 > (a) at what point should we attempt to detect read-only media?
 
 Before opening it read-write.  Detection on every i/o is still required
 since removable media may become read-only (not to mention inaccessible)
 between i/o's.
 
 > (b) how do we ensure that a (forced?) unmount really scrubs all the
 >     buffers that are associated with the device being unmounted?
 
 (i) Don't forget to call vinvalbuf() on the mounted-on device in the
     filesystem's VOP_UNMOUNT() routine.  msdosfs_unmount() forgets to.
     Fixing this won't help much.  If the mount point has an unwritable
     block but no fs-specific vnodes have an unwritable block, then the
     unmount will hang retrying writes forever, despite being forced.
     The panic is probably rare even for mishandled floppies, because an
     unwritable block in an fs-specific vnode will cause a hang earlier.
 
 (ii) Don't allow the vinvalbuf() in (i) to fail.  It can fail in some
      cases, but these cases probably can't occur for devices.  Anyway,
      VOP_UNMOUNT() shouldn't proceed when vinvalbuf() fails.
 
 Bruce
 


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199908111210.FAA18480>