qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 1/3] block: block: introduce bdrv_io_plug() a


From: Ming Lei
Subject: Re: [Qemu-devel] [PATCH v2 1/3] block: block: introduce bdrv_io_plug() and bdrv_io_unplug()
Date: Wed, 2 Jul 2014 08:46:38 +0800

On Wed, Jul 2, 2014 at 12:56 AM, Paolo Bonzini <address@hidden> wrote:
> Il 01/07/2014 17:21, Kevin Wolf ha scritto:
>
>>>>> Does this bs->file forwarding work for more than the raw driver? For
>>>>> example, if drv is an image format driver that needs to read some
>>>>> metadata from the image before it can submit the payload, does this
>>>>> still do what you were intending?
>>>
>>>
>>> Sorry for not understanding the problem, and you are right, these
>>> patches can't support other formats, and for solving the dependency,
>>> changes to image format driver should be needed.
>>
>>
>> Then let's drop the bs->file recursion here and add an explicit
>> .bdrv_io_plug/unplug callback to the raw driver.
>
>
> Actually I thought about this in my review, and there's no reason for this
> not to work for image formats.
>
> While bs->file is plugged, image formats will start executing their
> bdrv_co_readv/bdrv_co_writev callbacks, and issue reads or writes as
> necessary.  The reads and writes will accumulate in bs->file until it is
> unplugged, which is exactly the effect we want.

For some image formats, meta data need to be read first before
the payload can be read since how/what to read payload might
depend on content of meta data.

>
> The change in bdrv_drain_all is ugly though.  I don't have a better idea,
> but I would like to understand better why it is needed.  Ming Lei, did you
> see a deadlock without it?

Not yet, just for safe reason to make sure all queued data has chance
to be flushed. If you think it isn't necessary, I can remove it.

Thanks,
--
Ming Lei



reply via email to

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