mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 17:23:56 -06:00
iotests/{024, 271}: add testcases for qemu-img rebase
As the previous commit changes the logic of "qemu-img rebase" (it's using write alignment now), let's add a couple more test cases which would ensure it works correctly. In particular, the following scenarios: 024: add test case for rebase within one backing chain when the overlay cluster size > backings cluster size; 271: add test case for rebase images that contain subclusters. Check that no extra allocations are being made. Signed-off-by: Andrey Drobyshev <andrey.drobyshev@virtuozzo.com> Reviewed-by: Hanna Czenczek <hreitz@redhat.com> Message-ID: <20230919165804.439110-7-andrey.drobyshev@virtuozzo.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
12df580b3b
commit
f93e65ee51
4 changed files with 211 additions and 0 deletions
|
@ -257,6 +257,66 @@ $QEMU_IO "$OVERLAY" -c "read -P 0x00 $(( CLUSTER_SIZE * 4 )) $CLUSTER_SIZE" \
|
|||
|
||||
echo
|
||||
|
||||
# Check that rebase within the chain is working when
|
||||
# overlay cluster size > backings cluster size
|
||||
# (here overlay cluster size == 2 * backings cluster size)
|
||||
#
|
||||
# base_new <-- base_old <-- overlay
|
||||
#
|
||||
# Backing (new): -- -- -- -- -- --
|
||||
# Backing (old): -- 11 -- -- 22 --
|
||||
# Overlay: |-- --|-- --|-- --|
|
||||
#
|
||||
# We should end up having 1st and 3rd cluster allocated, and their halves
|
||||
# being read as zeroes.
|
||||
|
||||
echo
|
||||
echo "=== Test rebase with different cluster sizes ==="
|
||||
echo
|
||||
|
||||
echo "Creating backing chain"
|
||||
echo
|
||||
|
||||
TEST_IMG=$BASE_NEW _make_test_img $(( CLUSTER_SIZE * 6 ))
|
||||
TEST_IMG=$BASE_OLD _make_test_img -b "$BASE_NEW" -F $IMGFMT \
|
||||
$(( CLUSTER_SIZE * 6 ))
|
||||
CLUSTER_SIZE=$(( CLUSTER_SIZE * 2 )) TEST_IMG=$OVERLAY \
|
||||
_make_test_img -b "$BASE_OLD" -F $IMGFMT $(( CLUSTER_SIZE * 6 ))
|
||||
|
||||
TEST_IMG=$OVERLAY _img_info
|
||||
|
||||
echo
|
||||
echo "Fill backing files with data"
|
||||
echo
|
||||
|
||||
$QEMU_IO "$BASE_OLD" -c "write -P 0x11 $CLUSTER_SIZE $CLUSTER_SIZE" \
|
||||
-c "write -P 0x22 $(( CLUSTER_SIZE * 4 )) $CLUSTER_SIZE" \
|
||||
| _filter_qemu_io
|
||||
|
||||
echo
|
||||
echo "Rebase onto another image in the same chain"
|
||||
echo
|
||||
|
||||
$QEMU_IMG rebase -b "$BASE_NEW" -F $IMGFMT "$OVERLAY"
|
||||
|
||||
echo "Verify that data is read the same before and after rebase"
|
||||
echo
|
||||
|
||||
$QEMU_IO "$OVERLAY" -c "read -P 0x00 0 $CLUSTER_SIZE" \
|
||||
-c "read -P 0x11 $CLUSTER_SIZE $CLUSTER_SIZE" \
|
||||
-c "read -P 0x00 $(( CLUSTER_SIZE * 2 )) $(( CLUSTER_SIZE * 2 ))" \
|
||||
-c "read -P 0x22 $(( CLUSTER_SIZE * 4 )) $CLUSTER_SIZE" \
|
||||
-c "read -P 0x00 $(( CLUSTER_SIZE * 5 )) $CLUSTER_SIZE" \
|
||||
| _filter_qemu_io
|
||||
|
||||
echo
|
||||
echo "Verify that untouched cluster remains unallocated"
|
||||
echo
|
||||
|
||||
$QEMU_IMG map "$OVERLAY" | _filter_qemu_img_map
|
||||
|
||||
echo
|
||||
|
||||
# success, all done
|
||||
echo "*** done"
|
||||
rm -f $seq.full
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue