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, qemu-devel@nongnu.org,
	armbru@redhat.com, stefanha@redhat.com, den@openvz.org,
	andrey.shinkevich@virtuozzo.com, jsnow@redhat.com
Subject: Re: [PATCH v15 13/13] block: apply COR-filter to block-stream jobs
Date: Tue, 5 Jan 2021 13:52:22 +0100	[thread overview]
Message-ID: <86990a8d-1c20-62ea-f18c-ff34af4b9cbc@redhat.com> (raw)
In-Reply-To: <e1d9bfea-ff70-1a02-0422-d59ebf1dc011@virtuozzo.com>

On 22.12.20 19:07, Vladimir Sementsov-Ogievskiy wrote:
> 22.12.2020 19:20, Max Reitz wrote:
>> On 16.12.20 07:17, Vladimir Sementsov-Ogievskiy wrote:
>>> From: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
>>>
>>> This patch completes the series with the COR-filter applied to
>>> block-stream operations.
>>>
>>> Adding the filter makes it possible in future implement discarding
>>> copied regions in backing files during the block-stream job, to reduce
>>> the disk overuse (we need control on permissions).
>>>
>>> Also, the filter now is smart enough to do copy-on-read with specified
>>> base, so we have benefit on guest reads even when doing block-stream of
>>> the part of the backing chain.
>>>
>>> Several iotests are slightly modified due to filter insertion.
>>>
>>> Signed-off-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
>>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>> ---
>>>   block/stream.c             | 105 ++++++++++++++++++++++---------------
>>>   tests/qemu-iotests/030     |   8 +--
>>>   tests/qemu-iotests/141.out |   2 +-
>>>   tests/qemu-iotests/245     |  20 ++++---
>>>   4 files changed, 80 insertions(+), 55 deletions(-)
>>>
>>> diff --git a/block/stream.c b/block/stream.c
>>> index 626dfa2b22..1fa742b0db 100644
>>> --- a/block/stream.c
>>> +++ b/block/stream.c
>>
>> [...]
>>
>>> @@ -266,30 +251,62 @@ void stream_start(const char *job_id, 
>>> BlockDriverState *bs,
>>
>> [...]
>>
>>>       /* Make sure that the image is opened in read-write mode */
>>>       bs_read_only = bdrv_is_read_only(bs);
>>>       if (bs_read_only) {
>>> -        if (bdrv_reopen_set_read_only(bs, false, errp) != 0) {
>>> -            bs_read_only = false;
>>> -            goto fail;
>>> +        int ret;
>>> +        /* Hold the chain during reopen */
>>> +        if (bdrv_freeze_backing_chain(bs, above_base, errp) < 0) {
>>> +            return;
>>> +        }
>>> +
>>> +        ret = bdrv_reopen_set_read_only(bs, false, errp);
>>> +
>>> +        /* failure, or cor-filter will hold the chain */
>>> +        bdrv_unfreeze_backing_chain(bs, above_base);
>>> +
>>> +        if (ret < 0) {
>>
>> Shouldn’t we keep the “bs_read_only = false;” here?
>>
> 
> No, as we don't goto fail.

Ah, right, then it won’t do anything.

> (pre-patch, we goto fail here, and don't want 
> fail: code path to reopend back to RW (as reopening to RO is failed 
> anyway (and we hope it's transactional enough)))

That’s why we had bs_read_only = false; pre-patch, so the reopen back to 
RW is skipped.

And with this patch, we don’t need anything else from the “fail” path 
(freezing is done by the filter, and the filter doesn’t exist yet), so 
it’s correct to condense the “bs_read_only = false; goto fail;” into a 
plain “return”.

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



  reply	other threads:[~2021-01-05 12:55 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-16  6:16 [PATCH v15 00/13] Apply COR-filter to the block-stream permanently Vladimir Sementsov-Ogievskiy
2020-12-16  6:16 ` [PATCH v15 01/13] copy-on-read: support preadv/pwritev_part functions Vladimir Sementsov-Ogievskiy
2020-12-16  6:16 ` [PATCH v15 02/13] block: add API function to insert a node Vladimir Sementsov-Ogievskiy
2020-12-16  6:16 ` [PATCH v15 03/13] copy-on-read: add filter drop function Vladimir Sementsov-Ogievskiy
2020-12-16  6:16 ` [PATCH v15 04/13] qapi: add filter-node-name to block-stream Vladimir Sementsov-Ogievskiy
2020-12-22 15:24   ` Max Reitz
2020-12-16  6:16 ` [PATCH v15 05/13] qapi: copy-on-read filter: add 'bottom' option Vladimir Sementsov-Ogievskiy
2020-12-16  6:16 ` [PATCH v15 06/13] iotests: add #310 to test bottom node in COR driver Vladimir Sementsov-Ogievskiy
2020-12-16  6:16 ` [PATCH v15 07/13] block: include supported_read_flags into BDS structure Vladimir Sementsov-Ogievskiy
2020-12-16  6:16 ` [PATCH v15 08/13] copy-on-read: skip non-guest reads if no copy needed Vladimir Sementsov-Ogievskiy
2020-12-16  6:16 ` [PATCH v15 09/13] stream: rework backing-file changing Vladimir Sementsov-Ogievskiy
2020-12-22 15:59   ` Max Reitz
2020-12-22 17:53     ` Vladimir Sementsov-Ogievskiy
2021-01-05 12:51       ` Max Reitz
2020-12-16  6:17 ` [PATCH v15 10/13] qapi: block-stream: add "bottom" argument Vladimir Sementsov-Ogievskiy
2020-12-22 16:07   ` Max Reitz
2020-12-22 18:00     ` Vladimir Sementsov-Ogievskiy
2020-12-22 18:11       ` Vladimir Sementsov-Ogievskiy
2021-01-05 12:51       ` Max Reitz
2020-12-16  6:17 ` [PATCH v15 11/13] iotests: 30: prepare to COR filter insertion by stream job Vladimir Sementsov-Ogievskiy
2020-12-16  6:17 ` [PATCH v15 12/13] block/stream: add s->target_bs Vladimir Sementsov-Ogievskiy
2020-12-16  6:17 ` [PATCH v15 13/13] block: apply COR-filter to block-stream jobs Vladimir Sementsov-Ogievskiy
2020-12-22 16:20   ` Max Reitz
2020-12-22 18:07     ` Vladimir Sementsov-Ogievskiy
2021-01-05 12:52       ` Max Reitz [this message]
2021-01-05 15:30   ` Max Reitz
2021-01-05 16:08 ` [PATCH v15 00/13] Apply COR-filter to the block-stream permanently Max Reitz
2021-01-08 10:24   ` 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=86990a8d-1c20-62ea-f18c-ff34af4b9cbc@redhat.com \
    --to=mreitz@redhat.com \
    --cc=andrey.shinkevich@virtuozzo.com \
    --cc=armbru@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=stefanha@redhat.com \
    --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).