tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: vwakeup: neg numoutput



Mark Davies writes:
> On Friday 18 April 2008 20:58:43 Manuel Bouyer wrote:
> > On Fri, Apr 18, 2008 at 02:34:22PM +1200, Mark Davies wrote:
> > > > panic: vwakeup: neg numoutput, vp 0xffffa0000d7a9568
> > > > Stopped in pid 0.4 (system) at  netbsd:breakpoint+0x5:  leave
> > > > breakpoint() at netbsd:breakpoint+0x5
> > > > panic() at netbsd:panic+0x25b
> > > > vwakeup() at netbsd:vwakeup+0x7c
> > > > biodone2() at netbsd:biodone2+0xaa
> > > > biointr() at netbsd:biointr+0x3c
> > > > softint_thread() at netbsd:softint_thread+0x89
> > >
> > > Did you get a resolution to this?
> > >
> > > I'm seeing the same panic and backtrace on a 4.99.58 xen/i386 dom0
> > > with a single 4.99.58 domU.  Happens when I try to copy a large
> > > amount of data over the network from a third machine to the domU.
> >
> > I think I've seen it only once myself.
> 
> Its done it to me 4 or 5 times now.  Trying to scp or rdist about 7GB 
> of /usr/pkg and /usr/local to the domU, it gets about 1 or 2 GB 
> transferred then the dom0 panics :-(

In both xbdback_xenbus.c and xbdback.c we have this code:

        if ((xbd_io->xio_buf.b_flags & B_READ) == 0)
                xbd_io->xio_buf.b_vp->v_numoutput++;

Should this not read:

        if ((xbd_io->xio_buf.b_flags & B_READ) == 0) {
                mutex_enter(&xbd_io->xio_buf.b_vp->v_interlock);
                xbd_io->xio_buf.b_vp->v_numoutput++;
                mutex_exit(&xbd_io->xio_buf.b_vp->v_interlock);
        }

(or somesuch) to properly update v_numoutput ?  Most other changes
to v_numoutput are holding the vp->v_interlock, but if this one is, 
I'm completely missing how it's doing it...

(I ran into what I believe is a similar issue in wapbl-land, and I'm 
hoping that what I think is the fix for wapbl is applicable in this 
case too...)

Later...

Greg Oster




Home | Main Index | Thread Index | Old Index