Re: [Qemu-devel] [PATCH 1/3] block: add BlockBackend->in_flight counter

2018-02-12 Thread Stefan Hajnoczi
On Fri, Feb 09, 2018 at 06:26:41PM +0100, Paolo Bonzini wrote: > On 09/02/2018 18:23, Kevin Wolf wrote: > > Am 09.02.2018 um 17:28 hat Paolo Bonzini geschrieben: > >> On 08/02/2018 18:18, Stefan Hajnoczi wrote: > >>> +BlockDriverState *bs = blk_bs(blk); > >>> + > >>> +if (bs) { > >>> +

Re: [Qemu-devel] [PATCH 1/3] block: add BlockBackend->in_flight counter

2018-02-09 Thread Paolo Bonzini
On 09/02/2018 18:23, Kevin Wolf wrote: > Am 09.02.2018 um 17:28 hat Paolo Bonzini geschrieben: >> On 08/02/2018 18:18, Stefan Hajnoczi wrote: >>> +BlockDriverState *bs = blk_bs(blk); >>> + >>> +if (bs) { >>> +bdrv_drained_begin(bs); >>> +} >>> + >>> +/* We may have aio reque

Re: [Qemu-devel] [PATCH 1/3] block: add BlockBackend->in_flight counter

2018-02-09 Thread Kevin Wolf
Am 09.02.2018 um 17:28 hat Paolo Bonzini geschrieben: > On 08/02/2018 18:18, Stefan Hajnoczi wrote: > > +BlockDriverState *bs = blk_bs(blk); > > + > > +if (bs) { > > +bdrv_drained_begin(bs); > > +} > > + > > +/* We may have aio requests like -ENOMEDIUM in flight */ > > +

Re: [Qemu-devel] [PATCH 1/3] block: add BlockBackend->in_flight counter

2018-02-09 Thread Paolo Bonzini
On 08/02/2018 18:18, Stefan Hajnoczi wrote: > +BlockDriverState *bs = blk_bs(blk); > + > +if (bs) { > +bdrv_drained_begin(bs); > +} > + > +/* We may have aio requests like -ENOMEDIUM in flight */ > +while (atomic_mb_read(&blk->in_flight) > 0) { > +aio_poll(blk_ge

Re: [Qemu-devel] [PATCH 1/3] block: add BlockBackend->in_flight counter

2018-02-09 Thread Eric Blake
On 02/08/2018 11:18 AM, Stefan Hajnoczi wrote: BlockBackend currently relies on BlockDriverState->in_flight to track requests for blk_drain(). There is a corner case where BlockDriverState->in_flight cannot be used though: blk->root can be NULL when there is no medium. This results in a segfaul