diff mbox series

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

Message ID 20210721204616.652155-1-eblake@redhat.com (mailing list archive)
State New, archived
Headers show
Series [for-6.1?] iotest: Further enhance qemu-img-bitmaps | expand

Commit Message

Eric Blake July 21, 2021, 8:46 p.m. UTC
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(+)

Comments

Nir Soffer July 21, 2021, 9:53 p.m. UTC | #1
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>
Vladimir Sementsov-Ogievskiy July 22, 2021, 12:22 p.m. UTC | #2
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>
Hanna Czenczek Dec. 23, 2021, 9:24 a.m. UTC | #3
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
diff mbox series

Patch

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