qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
	qemu-block@nongnu.org
Cc: fam@euphon.net, kwolf@redhat.com, jsnow@redhat.com,
	qemu-devel@nongnu.org, den@openvz.org
Subject: Re: [PATCH v4 02/10] block: reverse order for reopen commits
Date: Tue, 24 Sep 2019 12:12:50 +0200	[thread overview]
Message-ID: <8aa8b6f1-0698-fa97-64e7-1dd251d0eeee@redhat.com> (raw)
In-Reply-To: <20190807141226.193501-3-vsementsov@virtuozzo.com>


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

On 07.08.19 16:12, Vladimir Sementsov-Ogievskiy wrote:
> It's needed to fix reopening qcow2 with bitmaps to RW. Currently it
> can't work, as qcow2 needs write access to file child, to mark bitmaps
> in-image with IN_USE flag. But usually children goes after parents in
> reopen queue and file child is still RO on qcow2 reopen commit. Reverse
> reopen order to fix it.
> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
>  block.c | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/block.c b/block.c
> index 696162cd7a..d59f9f97cb 100644
> --- a/block.c
> +++ b/block.c
> @@ -3476,10 +3476,16 @@ int bdrv_reopen_multiple(BlockReopenQueue *bs_queue, Error **errp)
>          bs_entry->perms_checked = true;
>      }
>  
> -    /* If we reach this point, we have success and just need to apply the
> -     * changes
> +    /*
> +     * If we reach this point, we have success and just need to apply the
> +     * changes.
> +     *
> +     * Reverse order is used to comfort qcow2 driver: on commit it need to write
> +     * IN_USE flag to the image, to mark bitmaps in the image as invalid. But
> +     * children are usually goes after parents in reopen-queue, so go from last
> +     * to first element.
>       */
> -    QTAILQ_FOREACH(bs_entry, bs_queue, entry) {
> +    QTAILQ_FOREACH_REVERSE(bs_entry, bs_queue, entry) {
>          bdrv_reopen_commit(&bs_entry->state);
>      }

I suppose this works, but only because everything but the IN_USE thing
actually behaves correctly.  In theory, all the work is done by the time
.prepare is through, so we can call commit in any order anyway.

So I’m still of the opinion that writing IN_USE in commit is just plain
wrong.

It feels like you’re trying to work around wrongs in reopen by piling
more wrongs on top.  I don’t like reopen already, and I don’t think this
makes it any better.

I don’t like how the comment implies that everything is just as it
should be, but that isn’t the real problem here, so whatever.


Well, at least the change is simple, and it doesn’t make things worse
than they actually are already (that is, wrong), so

Acked-by: Max Reitz <mreitz@redhat.com>


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

  reply	other threads:[~2019-09-24 10:14 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-07 14:12 [Qemu-devel] [PATCH v4 00/10] qcow2-bitmaps: rewrite reopening logic Vladimir Sementsov-Ogievskiy
2019-08-07 14:12 ` [Qemu-devel] [PATCH v4 01/10] block: switch reopen queue from QSIMPLEQ to QTAILQ Vladimir Sementsov-Ogievskiy
2019-09-24  9:50   ` Max Reitz
2019-08-07 14:12 ` [Qemu-devel] [PATCH v4 02/10] block: reverse order for reopen commits Vladimir Sementsov-Ogievskiy
2019-09-24 10:12   ` Max Reitz [this message]
2019-09-26 23:10     ` John Snow
2019-08-07 14:12 ` [Qemu-devel] [PATCH v4 03/10] iotests: add test-case to 165 to test reopening qcow2 bitmaps to RW Vladimir Sementsov-Ogievskiy
2019-09-26 22:57   ` John Snow
2019-09-27  7:28     ` Vladimir Sementsov-Ogievskiy
2019-09-27 10:22       ` Vladimir Sementsov-Ogievskiy
2019-09-27 10:29       ` Vladimir Sementsov-Ogievskiy
2019-09-27 18:30         ` John Snow
2019-09-27 19:54           ` Vladimir Sementsov-Ogievskiy
2019-08-07 14:12 ` [Qemu-devel] [PATCH v4 04/10] iotests.py: add event_wait_log and events_wait_log helpers Vladimir Sementsov-Ogievskiy
2019-09-26 23:05   ` John Snow
2019-09-27  7:31     ` Vladimir Sementsov-Ogievskiy
2019-09-27 10:38       ` Vladimir Sementsov-Ogievskiy
2019-08-07 14:12 ` [Qemu-devel] [PATCH v4 05/10] block/qcow2-bitmap: get rid of bdrv_has_changed_persistent_bitmaps Vladimir Sementsov-Ogievskiy
2019-08-07 14:12 ` [Qemu-devel] [PATCH v4 06/10] block/qcow2-bitmap: drop qcow2_reopen_bitmaps_rw_hint() Vladimir Sementsov-Ogievskiy
2019-08-07 14:12 ` [Qemu-devel] [PATCH v4 07/10] block/qcow2-bitmap: do not remove bitmaps on reopen-ro Vladimir Sementsov-Ogievskiy
2019-08-07 14:12 ` [Qemu-devel] [PATCH v4 08/10] iotests: add test 260 to check bitmap life after snapshot + commit Vladimir Sementsov-Ogievskiy
2019-09-26 23:09   ` John Snow
2019-08-07 14:12 ` [Qemu-devel] [PATCH v4 09/10] block/qcow2-bitmap: fix and improve qcow2_reopen_bitmaps_rw Vladimir Sementsov-Ogievskiy
2019-09-26 23:21   ` John Snow
2019-09-27  7:52     ` Vladimir Sementsov-Ogievskiy
2019-09-27 18:59       ` John Snow
2019-09-27 19:57         ` Vladimir Sementsov-Ogievskiy
2019-08-07 14:12 ` [Qemu-devel] [PATCH v4 10/10] qcow2-bitmap: move bitmap reopen-rw code to qcow2_reopen_commit Vladimir Sementsov-Ogievskiy
2019-09-26 23:24   ` John Snow
2019-09-27  9:13   ` Max Reitz
2019-09-05  9:54 ` [Qemu-devel] [PATCH v4 00/10] qcow2-bitmaps: rewrite reopening logic Vladimir Sementsov-Ogievskiy
2019-09-19 18:24   ` bugfix ping " Vladimir Sementsov-Ogievskiy
2019-09-26 23:25 ` [Qemu-devel] " John Snow
2019-09-27  7:53   ` Vladimir Sementsov-Ogievskiy

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=8aa8b6f1-0698-fa97-64e7-1dd251d0eeee@redhat.com \
    --to=mreitz@redhat.com \
    --cc=den@openvz.org \
    --cc=fam@euphon.net \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=vsementsov@virtuozzo.com \
    /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).