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 m...@netbsd.org