NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/38762: panic: vwakeup: neg numoutput
The following reply was made to PR kern/38762; it has been noted by GNATS.
From: Antti Kantee <pooka%cs.hut.fi@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: kern/38762: panic: vwakeup: neg numoutput
Date: Mon, 28 Jul 2008 03:31:15 +0300
On Sun Jul 27 2008 at 22:30:02 +0000, Greg Oster wrote:
> The following reply was made to PR kern/38762; it has been noted by GNATS.
>
> From: Greg Oster <oster%cs.usask.ca@localhost>
> To: gnats-bugs%NetBSD.org@localhost
> Cc:
> Subject: Re: kern/38762: panic: vwakeup: neg numoutput
> Date: Sun, 27 Jul 2008 16:27:36 -0600
>
> Andreas Gustafsson writes:
> > The following reply was made to PR kern/38762; it has been noted by GNATS.
> >
> > From: gson%gson.org@localhost (Andreas Gustafsson)
> > To: gnats-bugs%NetBSD.org@localhost
> > Cc:
> > Subject: Re: kern/38762: panic: vwakeup: neg numoutput
> > Date: Sun, 27 Jul 2008 21:49:10 +0300
> >
> > The panic still happens with 4.99.70 (source date 20080725-1531 EET).
>
> I'm unable to replicate this panic, but could you try this patch and
> see if it changes anything?
Very unlikely because a) genfs_compat_gop_write() is for file systems
which don't support UBC (unlike ffs) and b) the numoutput is for the
write done to the buffer from getiobuf(), not VOP_WRITE().
Probably a problem with usb, scsi, or whatever.
> Thanks.
>
> Later...
>
> Greg Oster
>
> -----------
> Index: genfs_io.c
> ===================================================================
> RCS file: /cvsroot/src/sys/miscfs/genfs/genfs_io.c,v
> retrieving revision 1.8.2.1
> diff -u -r1.8.2.1 genfs_io.c
> --- genfs_io.c 10 Jun 2008 14:51:22 -0000 1.8.2.1
> +++ genfs_io.c 27 Jul 2008 22:23:43 -0000
> @@ -1513,13 +1513,14 @@
> uio.uio_rw = UIO_WRITE;
> uio.uio_resid = npages << PAGE_SHIFT;
> UIO_SETUP_SYSSPACE(&uio);
> - /* XXX vn_lock */
> - error = VOP_WRITE(vp, &uio, 0, cred);
>
> mutex_enter(&vp->v_interlock);
> vp->v_numoutput++;
> mutex_exit(&vp->v_interlock);
>
> + /* XXX vn_lock */
> + error = VOP_WRITE(vp, &uio, 0, cred);
> +
> bp = getiobuf(vp, true);
> bp->b_cflags = BC_BUSY | BC_AGE;
> bp->b_lblkno = offset >> vp->v_mount->mnt_fs_bshift;
>
>
>
Home |
Main Index |
Thread Index |
Old Index