qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org,
	Alberto Garcia <berto@igalia.com>, Eric Blake <eblake@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 03/19] block: Respect backing bs in bdrv_refresh_filename
Date: Tue, 3 May 2016 12:50:55 +0200	[thread overview]
Message-ID: <5728828F.5070809@redhat.com> (raw)
In-Reply-To: <20160502153603.GI4882@noname.redhat.com>


[-- Attachment #1.1: Type: text/plain, Size: 3269 bytes --]

On 02.05.2016 17:36, Kevin Wolf wrote:
> Am 26.04.2016 um 23:32 hat Max Reitz geschrieben:
>> Basically, bdrv_refresh_filename() should respect all children of a
>> BlockDriverState. However, generally those children are driver-specific,
>> so this function cannot handle the general case. On the other hand,
>> there are only few drivers which use other children than @file and
>> @backing (that being vmdk, quorum, and blkverify).
>>
>> Most block drivers only use @file and/or @backing (if they use any
>> children at all). Both can be implemented directly in
>> bdrv_refresh_filename.
>>
>> The user overriding the file's filename is already handled, however, the
>> user overriding the backing file is not. If this is done, opening the
>> BDS with the plain filename of its file will not be correct, so we may
>> not set bs->exact_filename in that case.
>>
>> iotest 051 contains test cases for overwriting the backing file, and so
>> its output changes with this patch applied (which I consider a good
>> thing).
>>
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>>  block.c                       | 14 +++++++++++++-
>>  tests/qemu-iotests/051.out    |  8 ++++----
>>  tests/qemu-iotests/051.pc.out |  8 ++++----
>>  3 files changed, 21 insertions(+), 9 deletions(-)
>>
>> diff --git a/block.c b/block.c
>> index e178488..aff9ea3 100644
>> --- a/block.c
>> +++ b/block.c
>> @@ -3925,6 +3925,7 @@ void bdrv_refresh_filename(BlockDriverState *bs)
>>  
>>          opts = qdict_new();
>>          has_open_options = append_open_options(opts, bs);
>> +        has_open_options |= bs->backing_overridden;
>>  
>>          /* If no specific options have been given for this BDS, the filename of
>>           * the underlying file should suffice for this one as well */
>> @@ -3936,13 +3937,24 @@ void bdrv_refresh_filename(BlockDriverState *bs)
>>           * file BDS. The full options QDict of that file BDS should somehow
>>           * contain a representation of the filename, therefore the following
>>           * suffices without querying the (exact_)filename of this BDS. */
>> -        if (bs->file->bs->full_open_options) {
>> +        if (bs->file->bs->full_open_options &&
>> +            (!bs->backing || bs->backing->bs->full_open_options))
>> +        {
>>              qdict_put_obj(opts, "driver",
>>                            QOBJECT(qstring_from_str(drv->format_name)));
>> +
>>              QINCREF(bs->file->bs->full_open_options);
>>              qdict_put_obj(opts, "file",
>>                            QOBJECT(bs->file->bs->full_open_options));
>>  
>> +            if (bs->backing) {
>> +                QINCREF(bs->backing->bs->full_open_options);
>> +                qdict_put_obj(opts, "backing",
>> +                              QOBJECT(bs->backing->bs->full_open_options));
>> +            } else if (bs->backing_overridden && !bs->backing) {
>> +                qdict_put_obj(opts, "backing", QOBJECT(qstring_new()));
>> +            }
> 
> I see that the surrounding code does the same, but what's wrong with
> qdict_put()?

That it's a macro. clang_complete does not tell me about macros.

Will fix and try to keep in mind in the future, thanks.

Max


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

  reply	other threads:[~2016-05-03 10:53 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-26 21:31 [Qemu-devel] [PATCH 00/19] block: Fix some filename generation issues Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 01/19] block: Use children list in bdrv_refresh_filename Max Reitz
2016-04-27  0:36   ` Eric Blake
2016-05-31  7:35   ` Alberto Garcia
2016-04-26 21:32 ` [Qemu-devel] [PATCH 02/19] block: Add BDS.backing_overridden Max Reitz
2016-04-27  0:37   ` Eric Blake
2016-05-02 15:35   ` Kevin Wolf
2016-05-03 10:49     ` Max Reitz
2016-05-03 13:34       ` Kevin Wolf
2016-04-26 21:32 ` [Qemu-devel] [PATCH 03/19] block: Respect backing bs in bdrv_refresh_filename Max Reitz
2016-05-02 15:36   ` Kevin Wolf
2016-05-03 10:50     ` Max Reitz [this message]
2016-04-26 21:32 ` [Qemu-devel] [PATCH 04/19] block: Add bdrv_default_refresh_format_filename Max Reitz
2016-06-20 13:16   ` Alberto Garcia
2016-04-26 21:32 ` [Qemu-devel] [PATCH 05/19] block: Add bdrv_default_refresh_protocol_filename Max Reitz
2016-06-20 13:18   ` Alberto Garcia
2016-04-26 21:32 ` [Qemu-devel] [PATCH 06/19] block: Make bdrv_default_refresh_format_filename public Max Reitz
2016-05-02 15:36   ` Kevin Wolf
2016-05-03 11:19     ` Max Reitz
2016-05-03 13:31       ` Kevin Wolf
2016-05-03 13:48         ` Max Reitz
2016-05-03 14:34           ` Kevin Wolf
2016-05-03 14:52             ` Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 07/19] qcow2: Implement bdrv_refresh_filename() Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 08/19] block: Make path_combine() return the path Max Reitz
2016-06-20 13:44   ` Alberto Garcia
2016-04-26 21:32 ` [Qemu-devel] [PATCH 09/19] block: bdrv_get_full_backing_filename_from_...'s ret. val Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 10/19] block: bdrv_get_full_backing_filename's " Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 11/19] block: Add bdrv_make_absolute_filename() Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 12/19] block: Fix bdrv_find_backing_image() Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 13/19] block: Add bdrv_dirname() Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 14/19] blkverify: Make bdrv_dirname() return NULL Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 15/19] quorum: " Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 16/19] block/nbd: Implement bdrv_dirname() Max Reitz
2016-05-02 15:36   ` Kevin Wolf
2016-05-03 11:28     ` Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 17/19] block: Use bdrv_dirname() for relative filenames Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 18/19] block: Add 'base-directory' BDS option Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 19/19] iotests: Add quorum case to test 110 Max Reitz
2016-11-02 15:00 ` [Qemu-devel] [PATCH 00/19] block: Fix some filename generation issues Alberto Garcia
2016-11-02 15:05   ` Max Reitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5728828F.5070809@redhat.com \
    --to=mreitz@redhat.com \
    --cc=berto@igalia.com \
    --cc=eblake@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).