tech-kern archive

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

Re: panic: biodone2 already



On Fri, Aug 10, 2018 at 06:55:46AM -0000, Michael van Elst wrote:
> a queued operation eventually returns with a call to xbd_handler.
> - for every buffer returned, dk_done is called which finally ends
>   in invoking biodone.

After adding debug statements, I can now tel the offending buf_t 
is queued once, but xbd_handler finds it hundred of times in 
response queue here:
        for (i = sc->sc_ring.rsp_cons; i != resp_prod; i++) {
                blkif_response_t *rep = RING_GET_RESPONSE(&sc->sc_ring, i);
                struct xbd_req *xbdreq = &sc->sc_reqs[rep->id];
                bp = xbdreq->req_bp;


It decides to call dk_done for the last occurence and return. Next
call to xbd_handler finds the same offending buf_t leading the queue.
dk_done is called again, leading to the panic.

Where should I look for the code whrere the receive ring is populated in
the dom0?


-- 
Emmanuel Dreyfus
manu%netbsd.org@localhost


Home | Main Index | Thread Index | Old Index