From: Max Reitz <mreitz@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
"qemu-block@nongnu.org" <qemu-block@nongnu.org>
Cc: "kwolf@redhat.com" <kwolf@redhat.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"qemu-stable@nongnu.org" <qemu-stable@nongnu.org>
Subject: Re: [PATCH 2/2] iotests: add test for backup-top failure on permission activation
Date: Tue, 21 Jan 2020 15:01:10 +0100 [thread overview]
Message-ID: <d6bc8179-9a83-3ecd-2c8d-f71e1021f5d9@redhat.com> (raw)
In-Reply-To: <08bc201e-b40c-a79c-6388-bd17a3a8316c@virtuozzo.com>
[-- Attachment #1.1: Type: text/plain, Size: 6681 bytes --]
On 21.01.20 14:55, Vladimir Sementsov-Ogievskiy wrote:
> 21.01.2020 16:51, Max Reitz wrote:
>> On 21.01.20 14:48, Vladimir Sementsov-Ogievskiy wrote:
>>> 21.01.2020 15:39, Max Reitz wrote:
>>>> On 21.01.20 11:40, Vladimir Sementsov-Ogievskiy wrote:
>>>>> 21.01.2020 12:41, Max Reitz wrote:
>>>>>> On 21.01.20 10:23, Vladimir Sementsov-Ogievskiy wrote:
>>>>>>> 21.01.2020 12:14, Max Reitz wrote:
>>>>>>>> On 20.01.20 18:20, Vladimir Sementsov-Ogievskiy wrote:
>>>>>>>>> 20.01.2020 20:04, Max Reitz wrote:
>>>>>>>>>> On 16.01.20 16:54, Vladimir Sementsov-Ogievskiy wrote:
>>>>>>>>>>> This test checks that bug is really fixed by previous commit.
>>>>>>>>>>>
>>>>>>>>>>> Cc: qemu-stable@nongnu.org # v4.2.0
>>>>>>>>>>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>>>>>>>>>> ---
>>>>>>>>>>> tests/qemu-iotests/283 | 75 ++++++++++++++++++++++++++++++++++++++
>>>>>>>>>>> tests/qemu-iotests/283.out | 8 ++++
>>>>>>>>>>> tests/qemu-iotests/group | 1 +
>>>>>>>>>>> 3 files changed, 84 insertions(+)
>>>>>>>>>>> create mode 100644 tests/qemu-iotests/283
>>>>>>>>>>> create mode 100644 tests/qemu-iotests/283.out
>>>>>>>>>>
>>>>>>>>>> The test looks good to me, I just have a comment nit and a note on the
>>>>>>>>>> fact that this should probably be queued only after Thomas’s “Enable
>>>>>>>>>> more iotests during "make check-block"” series.
>>>>>>>>>>
>>>>>>>>>>> diff --git a/tests/qemu-iotests/283 b/tests/qemu-iotests/283
>>>>>>>>>>> new file mode 100644
>>>>>>>>>>> index 0000000000..f0f216d109
>>>>>>>>>>> --- /dev/null
>>>>>>>>>>> +++ b/tests/qemu-iotests/283
>>>>>>>>>>> @@ -0,0 +1,75 @@
>>>>>>>>>>> +#!/usr/bin/env python
>>>>>>>>>>> +#
>>>>>>>>>>> +# Test for backup-top filter permission activation failure
>>>>>>>>>>> +#
>>>>>>>>>>> +# Copyright (c) 2019 Virtuozzo International GmbH.
>>>>>>>>>>> +#
>>>>>>>>>>> +# This program is free software; you can redistribute it and/or modify
>>>>>>>>>>> +# it under the terms of the GNU General Public License as published by
>>>>>>>>>>> +# the Free Software Foundation; either version 2 of the License, or
>>>>>>>>>>> +# (at your option) any later version.
>>>>>>>>>>> +#
>>>>>>>>>>> +# This program is distributed in the hope that it will be useful,
>>>>>>>>>>> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
>>>>>>>>>>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>>>>>>>>>>> +# GNU General Public License for more details.
>>>>>>>>>>> +#
>>>>>>>>>>> +# You should have received a copy of the GNU General Public License
>>>>>>>>>>> +# along with this program. If not, see <http://www.gnu.org/licenses/>.
>>>>>>>>>>> +#
>>>>>>>>>>> +
>>>>>>>>>>> +import iotests
>>>>>>>>>>> +
>>>>>>>>>>> +# The test is unrelated to formats, restrict it to qcow2 to avoid extra runs
>>>>>>>>>>> +iotests.verify_image_format(supported_fmts=['qcow2'])
>>>>>>>>>>> +
>>>>>>>>>>> +size = 1024 * 1024
>>>>>>>>>>> +
>>>>>>>>>>> +"""
>>>>>>>>>>> +On activation, backup-top is going to unshare write permission on its
>>>>>>>>>>> +source child. It will be impossible for the following configuration:
>>>>>>>>>>
>>>>>>>>>> “The following configuration will become impossible”?
>>>>>>>>>
>>>>>>>>> Hmm, no, the configuration is possible. But "it", i.e. "unshare write permission",
>>>>>>>>> is impossible with such configuration..
>>>>>>>>
>>>>>>>> But backup_top always unshares the write permission on the source.
>>>>>>>
>>>>>>> Yes, and I just try to say, that this action will fail. And the test checks that it
>>>>>>> fails (and it crashes with current master instead of fail).
>>>>>>
>>>>>> OK. So what I was trying to say is that the comment currently only
>>>>>> states that this will fail. I’d prefer it to also reassure me that it’s
>>>>>> correct that this fails (because all writes on the backup source must go
>>>>>> through backup_top), and that this is exactly what we want to test here.
>>>>>>
>>>>>> On first reading, I was wondering why exactly this comment would tell me
>>>>>> all these things, because I didn’t know what the test wants to test in
>>>>>> the first place.
>>>>>>
>>>>>> Max
>>>>>
>>>>> Hmm, something like:
>>>>>
>>>>> Backup wants to copy a point-in-time state of the source node. So, it catches all writes
>>>>> to the source node by appending backup-top filter above it. So we handle all changes which
>>>>> comes from source node parents. To prevent appearing of new writing parents during the
>>>>> progress, backup-top unshares write permission on its source child. This has additional
>>>>> implication: as this "unsharing" is propagated by default by backing/file children,
>>>>> backup-top conflicts with any side parents of source sub-tree with write permission.
>>>>> And this is in good relation with the general idea: with such parents we can't guarantee
>>>>> point-in-time backup.
>>>>
>>>> Works for me (thanks :-)), but a shorter “When performing a backup, all
>>>> writes on the source subtree must go through the backup-top filter so it
>>>> can copy all data to the target before it is changed. Therefore,
>>>> backup-top cannot allow other nodes to change data on its source child.”
>>>> would work for me just as well.
>>>>
>>>>> So, trying to backup the configuration with writing side parents of
>>>>> source sub-tree nodes should fail. Let's test it.
>>>
>>> But than, we need somehow link part about appending backup-top and so-on...
>>>
>>> When performing a backup, all writes on the source subtree must go through the backup-top filter so it can copy all data to the target before it is changed.
>>> backup-top filter is appended above source node, to achieve this thing, so all parents of source node are handled.
>>> A configuration with side parents of source sub-tree with write permission is unsupported (we'd have append several backup-top filter like nodes to handle such parents).
>>> The test create an example of such configuration and checks that backup fails.
>>
>> Sounds good!
>>
>> (Except maybe s/that backup fails/that a backup is then not allowed/?
>> “backup fails” might also mean that the job just produces garbage.)
>
> OK for me. May be "backup is then not allowed (blockdev-backup command should fail)".
>
> Should I resend? I think it's better drop "auto" mark and not create extra dependency on other series.
I’d prefer a resend so I don’t modify the comment in a way you don’t want.
You can keep the test in auto, as I’ve just merged Thomas’s series
(which was the dependency).
Max
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
prev parent reply other threads:[~2020-01-21 14:48 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-16 15:54 [PATCH 0/2] backup-top failure path fix Vladimir Sementsov-Ogievskiy
2020-01-16 15:54 ` [PATCH 1/2] block/backup-top: fix failure path Vladimir Sementsov-Ogievskiy
2020-01-20 16:50 ` Max Reitz
2020-01-16 15:54 ` [PATCH 2/2] iotests: add test for backup-top failure on permission activation Vladimir Sementsov-Ogievskiy
2020-01-20 17:04 ` Max Reitz
2020-01-20 17:20 ` Vladimir Sementsov-Ogievskiy
2020-01-21 9:14 ` Max Reitz
2020-01-21 9:23 ` Vladimir Sementsov-Ogievskiy
2020-01-21 9:41 ` Max Reitz
2020-01-21 10:40 ` Vladimir Sementsov-Ogievskiy
2020-01-21 12:39 ` Max Reitz
2020-01-21 12:53 ` Vladimir Sementsov-Ogievskiy
2020-01-21 13:29 ` Max Reitz
2020-01-21 13:48 ` Vladimir Sementsov-Ogievskiy
2020-01-21 13:51 ` Max Reitz
2020-01-21 13:55 ` Vladimir Sementsov-Ogievskiy
2020-01-21 14:01 ` Max Reitz [this message]
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=d6bc8179-9a83-3ecd-2c8d-f71e1021f5d9@redhat.com \
--to=mreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@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).