On 17/09/2018 13:48, Kevin Wolf wrote: > Am 14.09.2018 um 19:38 hat Paolo Bonzini geschrieben: >> On 14/09/2018 19:14, Kevin Wolf wrote: >>>> As you mention, you could have a nested aio_poll() in the main thread, >>>> for example invoked from a bottom half, but in that case I'd rather >>>> track the caller that is creating the bottom half and see if it lacks a >>>> bdrv_ref/bdrv_unref (or perhaps it's even higher in the tree that is >>>> missing). >>> I went back to the commit where I first added the patch (it already >>> contained the ref/unref pair) and tried if I could reproduce a bug with >>> the pair removed. I couldn't. >>> >>> I'm starting to think that maybe I was just overly cautious with the >>> ref/unref. I may have confused the nested aio_poll() crash with a >>> different situation. I've dealt with so many crashes and hangs while >>> working on this series that it's quite possible. >> >> Are you going to drop the patch hen? > > I think I can drop the ref/unref pair, but not the whole patch (whose > main point is reordering dec_in_flight vs. the AIO callback).
You're right, though I think I did that on purpose back in the day. IIRC it was related to bdrv_drain, which might never complete if called from an AIO callback. Paolo