[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safe
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely |
Date: |
Tue, 22 Nov 2011 12:04:05 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111115 Thunderbird/8.0 |
Am 22.11.2011 11:24, schrieb supriya kannery:
> Stefan Hajnoczi wrote:
>> On Mon, Nov 21, 2011 at 12:13 PM, supriya kannery <address@hidden> wrote:
>>
>>> Stefan Hajnoczi wrote:
>>>
>>>> On Fri, Nov 11, 2011 at 6:48 AM, Supriya Kannery
>>>> <address@hidden> wrote:
>>>>
>>>>
>>>>> @@ -708,17 +731,31 @@ int bdrv_reopen(BlockDriverState *bs, in
>>>>> qerror_report(QERR_DATA_SYNC_FAILED, bs->device_name);
>>>>> return ret;
>>>>> }
>>>>> - open_flags = bs->open_flags;
>>>>> - bdrv_close(bs);
>>>>>
>>>>> - ret = bdrv_open(bs, bs->filename, bdrv_flags, drv);
>>>>> - if (ret < 0) {
>>>>> - /* Reopen failed. Try to open with original flags */
>>>>> - qerror_report(QERR_REOPEN_FILE_FAILED, bs->filename);
>>>>> - ret = bdrv_open(bs, bs->filename, open_flags, drv);
>>>>> + /* Use driver specific reopen() if available */
>>>>> + if (drv->bdrv_reopen_prepare) {
>>>>>
>>>>>
>>>> This seems weird to me because we're saying a driver may have
>>>> drv->bdrv_reopen_prepare == NULL but the public bdrv_reopen_prepare()
>>>> function doesn't check and return -ENOTSUP.
>>>>
>>>>
>>> If drv->bdrv_reopen_prepare == NULL , then we are not calling the
>>> publick bdrv_reopen_prepare at all. Unless we later call public
>>> bdrv_reopen_prepare
>>> from elsewhere without checking drv->bdrv_reopen_prepare, a check for
>>> -ENOTSUP inside the public one is not needed right?
>>>
>>> Also, we are handling reopening for even those drivers which don't
>>> have its own bdrv_reopen_prepare defined, by taking the "else"
>>> control path. So condition for reporting "ENOTSUP" shouldn't come
>>> up as of now. Please let me know your thoughts.
>>>
>>
>> How does VMDK implement its prepare/commit/abort? It needs to use the
>> "public" bdrv_reopen_prepare() function on its image files.
>>
>
> bdrv_reopen() is the public interface which gets called by any of the
> image formats.
> So VMDK or any image format has to call bdrv_reopen which decides to call
> driver specific prepare/commit/abort or simply close and reopen the file.
No, that doesn't work. In order to get all-or-nothing semantics, you
need to explicitly prepare all child images and only when you know the
results of all preparations, you can decide whether to commit or abort all.
Kevin
- Re: [Qemu-devel] [v9 Patch 4/6]Qemu: Add commandline -drive option 'hostcache', (continued)
[Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, Supriya Kannery, 2011/11/11
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, Luiz Capitulino, 2011/11/17
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, Stefan Hajnoczi, 2011/11/17
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, supriya kannery, 2011/11/21
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, Stefan Hajnoczi, 2011/11/21
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, supriya kannery, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely,
Kevin Wolf <=
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, supriya kannery, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, Stefan Hajnoczi, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 5/6]Qemu: Framework for reopening images safely, Supriya Kannery, 2011/11/22
[Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, Supriya Kannery, 2011/11/11
- Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, Stefan Hajnoczi, 2011/11/17
- Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, supriya kannery, 2011/11/21
- Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, supriya kannery, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, Stefan Hajnoczi, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, Christoph Hellwig, 2011/11/22
- Re: [Qemu-devel] [v9 Patch 6/6]Qemu: raw posix implementation of reopen functions, supriya kannery, 2011/11/22