qemu-block
[Top][All Lists]
Advanced

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

Re: [Qemu-block] [PATCH v2 05/12] block: Introduce "drained begin/end" A


From: Kevin Wolf
Subject: Re: [Qemu-block] [PATCH v2 05/12] block: Introduce "drained begin/end" API
Date: Tue, 13 Oct 2015 11:31:42 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

Am 12.10.2015 um 16:27 hat Paolo Bonzini geschrieben:
> 
> 
> On 12/10/2015 13:50, Fam Zheng wrote:
> > +void bdrv_drained_begin(BlockDriverState *bs)
> > +{
> > +    if (bs->quiesce_counter++) {
> > +        return;
> > +    }
> > +    aio_disable_external(bdrv_get_aio_context(bs));
> > +    bdrv_drain(bs);
> > +}
> 
> I think bdrv_drain should be called unconditionally, i.e. before the
> "if".  This should also solve Kevin's doubt about new allocating write
> request reenabling the timer: any write request from the drained section
> happens normally, until you get a nested drain request and then the
> callback completes the requests.

This would mean that once you've sent an I/O request inside a drain
section, you have to expect that more internal I/O might be going on
after the request has completed. If you don't want this, you have to
issue another bdrv_drain() or use a nested bdrv_drained_begin/end()
section.

Sounds reasonable enough to me, but I guess this should be explicitly
documented.

Kevin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]