Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 10 Feb 2002 14:10:50 +1100 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        John Baldwin <jhb@FreeBSD.ORG>
Cc:        Mikhail Teterin <mi@aldan.algebra.com>, <current@FreeBSD.ORG>
Subject:   RE: panic: bdwrite: buffer is not busy
Message-ID:  <20020212021235.796E39F38A@okeeffe.bestweb.net>

next in thread | raw e-mail | index | archive | help
On Sat, 9 Feb 2002, John Baldwin wrote:

> On 09-Feb-02 Mikhail Teterin wrote:
> > While attempting to ``fdisk fd0.1440''. Or ``fdisk fd0''. Or
> > ``newfs_msdos fd0.1440'' with or without the floppy inside :-\
> > With todays or Jan 3rd kernel (my previous upgrade).
>
> Only use fdisk on hard disks.  Still it shouldn't panic.  The bdwrite is just
> extra garbage, the real panic is due to a NULL pointer dereference:

This is a well known bug in the device layer.  I reported it on 2001/12/26
and fixed it locally a little later.  See the thread in -current about
"panic during fdisk'ing a md(4) device" for patches.

> I'm guessing that devsw() is returning NULL here.  You could add a KASSERT() to
> this macro just before the call to d_strategy() along the lines of
>
>         KASSERT(devsw((bp)->bio_dev) != NULL, ("no devsw for bio"));    \

Right.  From my original bug report:

! "fdisk /dev/fd0" now causes a null pointer panic in readdisklabel().
! This is because fdioctl() attempts to construct a (slightly wrong)
! device using dkmodpart(), but dkmodpart() only constructs a half-baked
! device since it only calls makedev().  The device is missing a devsw
! so DEV_STRATEGY() in readdisklabel() panics on it.

Bruce


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

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




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