[PATCH for-6.1?] iotest: Further enhance qemu-img-bitmaps

Eric Blake posted 1 patch 2 years, 9 months ago
Failed in applying to current master (apply log)
tests/qemu-iotests/tests/qemu-img-bitmaps     | 6 ++++++
tests/qemu-iotests/tests/qemu-img-bitmaps.out | 5 +++++
2 files changed, 11 insertions(+)
[PATCH for-6.1?] iotest: Further enhance qemu-img-bitmaps
Posted by Eric Blake 2 years, 9 months ago
Add a regression test to make sure we detect attempts to use 'qemu-img
bitmap' to modify an in-use local file.

Suggested-by: Nir Soffer <nsoffer@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
---

Sadly, this missed my bitmaps pull request today.  If there's any
reason to respin that pull request, I'm inclined to add this in, as it
just touches the iotests; otherwise, if it slips to 6.2 it's not too
bad.

 tests/qemu-iotests/tests/qemu-img-bitmaps     | 6 ++++++
 tests/qemu-iotests/tests/qemu-img-bitmaps.out | 5 +++++
 2 files changed, 11 insertions(+)

diff --git a/tests/qemu-iotests/tests/qemu-img-bitmaps b/tests/qemu-iotests/tests/qemu-img-bitmaps
index 7a3fe8c3d37a..3b6fade11735 100755
--- a/tests/qemu-iotests/tests/qemu-img-bitmaps
+++ b/tests/qemu-iotests/tests/qemu-img-bitmaps
@@ -129,6 +129,12 @@ $QEMU_IMG map --output=json --image-opts \
 $QEMU_IMG map --output=json --image-opts \
     "$IMG,x-dirty-bitmap=qemu:dirty-bitmap:b3" | _filter_qemu_img_map

+echo
+echo "=== bitmap command fails to modify image already in use ==="
+echo
+
+$QEMU_IMG bitmap --add "$TEST_IMG" b4 2>&1 | _filter_testdir
+
 nbd_server_stop

 echo
diff --git a/tests/qemu-iotests/tests/qemu-img-bitmaps.out b/tests/qemu-iotests/tests/qemu-img-bitmaps.out
index e851f0320ecb..c6e12dd700aa 100644
--- a/tests/qemu-iotests/tests/qemu-img-bitmaps.out
+++ b/tests/qemu-iotests/tests/qemu-img-bitmaps.out
@@ -116,6 +116,11 @@ Format specific information:
 { "start": 2097152, "length": 1048576, "depth": 0, "present": false, "zero": false, "data": false},
 { "start": 3145728, "length": 7340032, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}]

+=== bitmap command fails to modify image already in use ===
+
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
+Is another process using the image [TEST_DIR/t.qcow2]?
+
 === Check handling of inconsistent bitmap ===

 image: TEST_DIR/t.IMGFMT
-- 
2.31.1


Re: [PATCH for-6.1?] iotest: Further enhance qemu-img-bitmaps
Posted by Nir Soffer 2 years, 9 months ago
On 7/21/21 11:46 PM, Eric Blake wrote:
> Add a regression test to make sure we detect attempts to use 'qemu-img
> bitmap' to modify an in-use local file.
> 
> Suggested-by: Nir Soffer <nsoffer@redhat.com>
> Signed-off-by: Eric Blake <eblake@redhat.com>
> ---
> 
> Sadly, this missed my bitmaps pull request today.  If there's any
> reason to respin that pull request, I'm inclined to add this in, as it
> just touches the iotests; otherwise, if it slips to 6.2 it's not too
> bad.
> 
>   tests/qemu-iotests/tests/qemu-img-bitmaps     | 6 ++++++
>   tests/qemu-iotests/tests/qemu-img-bitmaps.out | 5 +++++
>   2 files changed, 11 insertions(+)
> 
> diff --git a/tests/qemu-iotests/tests/qemu-img-bitmaps b/tests/qemu-iotests/tests/qemu-img-bitmaps
> index 7a3fe8c3d37a..3b6fade11735 100755
> --- a/tests/qemu-iotests/tests/qemu-img-bitmaps
> +++ b/tests/qemu-iotests/tests/qemu-img-bitmaps
> @@ -129,6 +129,12 @@ $QEMU_IMG map --output=json --image-opts \
>   $QEMU_IMG map --output=json --image-opts \
>       "$IMG,x-dirty-bitmap=qemu:dirty-bitmap:b3" | _filter_qemu_img_map
> 
> +echo
> +echo "=== bitmap command fails to modify image already in use ==="
> +echo
> +
> +$QEMU_IMG bitmap --add "$TEST_IMG" b4 2>&1 | _filter_testdir
> +
>   nbd_server_stop
> 
>   echo
> diff --git a/tests/qemu-iotests/tests/qemu-img-bitmaps.out b/tests/qemu-iotests/tests/qemu-img-bitmaps.out
> index e851f0320ecb..c6e12dd700aa 100644
> --- a/tests/qemu-iotests/tests/qemu-img-bitmaps.out
> +++ b/tests/qemu-iotests/tests/qemu-img-bitmaps.out
> @@ -116,6 +116,11 @@ Format specific information:
>   { "start": 2097152, "length": 1048576, "depth": 0, "present": false, "zero": false, "data": false},
>   { "start": 3145728, "length": 7340032, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}]
> 
> +=== bitmap command fails to modify image already in use ===
> +
> +qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
> +Is another process using the image [TEST_DIR/t.qcow2]?
> +
>   === Check handling of inconsistent bitmap ===
> 
>   image: TEST_DIR/t.IMGFMT
> 

It would be nice to test more than --add. I guess the implementation
is shared but if someone change it the test will protect us.

Reviewed-by: Nir Soffer <nsoffer@redhat.com>


Re: [PATCH for-6.1?] iotest: Further enhance qemu-img-bitmaps
Posted by Hanna Reitz 2 years, 4 months ago
On 21.07.21 22:46, Eric Blake wrote:
> Add a regression test to make sure we detect attempts to use 'qemu-img
> bitmap' to modify an in-use local file.
>
> Suggested-by: Nir Soffer <nsoffer@redhat.com>
> Signed-off-by: Eric Blake <eblake@redhat.com>
> ---
>
> Sadly, this missed my bitmaps pull request today.  If there's any
> reason to respin that pull request, I'm inclined to add this in, as it
> just touches the iotests; otherwise, if it slips to 6.2 it's not too
> bad.

(Going through my patches folder...)

Not sure if you’re still interested in this, but if so, we should skip 
this test case if OFD locks are not available (like 153 does).

Hanna


Re: [PATCH for-6.1?] iotest: Further enhance qemu-img-bitmaps
Posted by Vladimir Sementsov-Ogievskiy 2 years, 9 months ago
21.07.2021 23:46, Eric Blake wrote:
> Add a regression test to make sure we detect attempts to use 'qemu-img
> bitmap' to modify an in-use local file.
> 
> Suggested-by: Nir Soffer <nsoffer@redhat.com>
> Signed-off-by: Eric Blake <eblake@redhat.com>
> ---
> 
> Sadly, this missed my bitmaps pull request today.  If there's any
> reason to respin that pull request, I'm inclined to add this in, as it
> just touches the iotests; otherwise, if it slips to 6.2 it's not too
> bad.
> 
>   tests/qemu-iotests/tests/qemu-img-bitmaps     | 6 ++++++
>   tests/qemu-iotests/tests/qemu-img-bitmaps.out | 5 +++++
>   2 files changed, 11 insertions(+)
> 
> diff --git a/tests/qemu-iotests/tests/qemu-img-bitmaps b/tests/qemu-iotests/tests/qemu-img-bitmaps
> index 7a3fe8c3d37a..3b6fade11735 100755
> --- a/tests/qemu-iotests/tests/qemu-img-bitmaps
> +++ b/tests/qemu-iotests/tests/qemu-img-bitmaps
> @@ -129,6 +129,12 @@ $QEMU_IMG map --output=json --image-opts \
>   $QEMU_IMG map --output=json --image-opts \
>       "$IMG,x-dirty-bitmap=qemu:dirty-bitmap:b3" | _filter_qemu_img_map
> 
> +echo
> +echo "=== bitmap command fails to modify image already in use ==="
> +echo
> +
> +$QEMU_IMG bitmap --add "$TEST_IMG" b4 2>&1 | _filter_testdir
> +
>   nbd_server_stop
> 
>   echo
> diff --git a/tests/qemu-iotests/tests/qemu-img-bitmaps.out b/tests/qemu-iotests/tests/qemu-img-bitmaps.out
> index e851f0320ecb..c6e12dd700aa 100644
> --- a/tests/qemu-iotests/tests/qemu-img-bitmaps.out
> +++ b/tests/qemu-iotests/tests/qemu-img-bitmaps.out
> @@ -116,6 +116,11 @@ Format specific information:
>   { "start": 2097152, "length": 1048576, "depth": 0, "present": false, "zero": false, "data": false},
>   { "start": 3145728, "length": 7340032, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}]
> 
> +=== bitmap command fails to modify image already in use ===
> +
> +qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
> +Is another process using the image [TEST_DIR/t.qcow2]?
> +
>   === Check handling of inconsistent bitmap ===
> 
>   image: TEST_DIR/t.IMGFMT
> 


I'm not against, but why you decided to add such a test? Lock should work for any operation, what's the reason to check bitmaps separately? Or it was broken recently?

anyway:
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>

-- 
Best regards,
Vladimir