qemu-img: Fix Column Width and Improve Formatting in snapshot list
When running the command `qemu-img snapshot -l SNAPSHOT` the output of VM_CLOCK (measures the offset between host and VM clock) cannot to accommodate values in the order of thousands (4-digit). This line [1] hints on the problem. Additionally, the column width for the VM_CLOCK field was reduced from 15 to 13 spaces in commitb39847a5
in line [2], resulting in a shortage of space. [1]: https://gitlab.com/qemu-project/qemu/-/blob/master/block/qapi.c?ref_type=heads#L753 [2]: https://gitlab.com/qemu-project/qemu/-/blob/master/block/qapi.c?ref_type=heads#L763 This patch restores the column width to 15 spaces and makes adjustments to the affected iotests accordingly. Furthermore, addresses a potential source of confusion by removing whitespace in column headers. Example, VM CLOCK is modified to VM_CLOCK. Additionally a '--' symbol is introduced when ICOUNT returns no output for clarity. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2062 Fixes:b39847a505
("migration: introduce icount field for snapshots") Signed-off-by: Abhiram Tilak <atp.exp@gmail.com> Message-ID: <20240123050354.22152-2-atp.exp@gmail.com> [kwolf: Fixed up qemu-iotests 261 and 286] Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
7fcb8c89f0
commit
52df1a5b61
10
block/qapi.c
10
block/qapi.c
@ -742,15 +742,15 @@ void bdrv_snapshot_dump(QEMUSnapshotInfo *sn)
|
|||||||
char *sizing = NULL;
|
char *sizing = NULL;
|
||||||
|
|
||||||
if (!sn) {
|
if (!sn) {
|
||||||
qemu_printf("%-10s%-17s%8s%20s%13s%11s",
|
qemu_printf("%-7s %-16s %8s %19s %15s %10s",
|
||||||
"ID", "TAG", "VM SIZE", "DATE", "VM CLOCK", "ICOUNT");
|
"ID", "TAG", "VM_SIZE", "DATE", "VM_CLOCK", "ICOUNT");
|
||||||
} else {
|
} else {
|
||||||
g_autoptr(GDateTime) date = g_date_time_new_from_unix_local(sn->date_sec);
|
g_autoptr(GDateTime) date = g_date_time_new_from_unix_local(sn->date_sec);
|
||||||
g_autofree char *date_buf = g_date_time_format(date, "%Y-%m-%d %H:%M:%S");
|
g_autofree char *date_buf = g_date_time_format(date, "%Y-%m-%d %H:%M:%S");
|
||||||
|
|
||||||
secs = sn->vm_clock_nsec / 1000000000;
|
secs = sn->vm_clock_nsec / 1000000000;
|
||||||
snprintf(clock_buf, sizeof(clock_buf),
|
snprintf(clock_buf, sizeof(clock_buf),
|
||||||
"%02d:%02d:%02d.%03d",
|
"%04d:%02d:%02d.%03d",
|
||||||
(int)(secs / 3600),
|
(int)(secs / 3600),
|
||||||
(int)((secs / 60) % 60),
|
(int)((secs / 60) % 60),
|
||||||
(int)(secs % 60),
|
(int)(secs % 60),
|
||||||
@ -759,8 +759,10 @@ void bdrv_snapshot_dump(QEMUSnapshotInfo *sn)
|
|||||||
if (sn->icount != -1ULL) {
|
if (sn->icount != -1ULL) {
|
||||||
snprintf(icount_buf, sizeof(icount_buf),
|
snprintf(icount_buf, sizeof(icount_buf),
|
||||||
"%"PRId64, sn->icount);
|
"%"PRId64, sn->icount);
|
||||||
|
} else {
|
||||||
|
snprintf(icount_buf, sizeof(icount_buf), "--");
|
||||||
}
|
}
|
||||||
qemu_printf("%-9s %-16s %8s%20s%13s%11s",
|
qemu_printf("%-7s %-16s %8s %19s %15s %10s",
|
||||||
sn->id_str, sn->name,
|
sn->id_str, sn->name,
|
||||||
sizing,
|
sizing,
|
||||||
date_buf,
|
date_buf,
|
||||||
|
@ -37,8 +37,8 @@ Offset Length File
|
|||||||
0x7ffe0000 0x20000 TEST_DIR/t.IMGFMT.itmd
|
0x7ffe0000 0x20000 TEST_DIR/t.IMGFMT.itmd
|
||||||
0x83400000 0x200 TEST_DIR/t.IMGFMT.itmd
|
0x83400000 0x200 TEST_DIR/t.IMGFMT.itmd
|
||||||
Snapshot list:
|
Snapshot list:
|
||||||
ID TAG
|
ID TAG
|
||||||
1 snap
|
1 snap
|
||||||
|
|
||||||
=== Test pass snapshot.1 ===
|
=== Test pass snapshot.1 ===
|
||||||
|
|
||||||
@ -78,8 +78,8 @@ Offset Length File
|
|||||||
0x7fff0000 0x10000 TEST_DIR/t.IMGFMT
|
0x7fff0000 0x10000 TEST_DIR/t.IMGFMT
|
||||||
0x83400000 0x200 TEST_DIR/t.IMGFMT
|
0x83400000 0x200 TEST_DIR/t.IMGFMT
|
||||||
Snapshot list:
|
Snapshot list:
|
||||||
ID TAG
|
ID TAG
|
||||||
1 snap
|
1 snap
|
||||||
|
|
||||||
=== Test pass snapshot.2 ===
|
=== Test pass snapshot.2 ===
|
||||||
|
|
||||||
@ -119,8 +119,8 @@ Offset Length File
|
|||||||
0x7fff0000 0x10000 TEST_DIR/t.IMGFMT
|
0x7fff0000 0x10000 TEST_DIR/t.IMGFMT
|
||||||
0x83400000 0x200 TEST_DIR/t.IMGFMT
|
0x83400000 0x200 TEST_DIR/t.IMGFMT
|
||||||
Snapshot list:
|
Snapshot list:
|
||||||
ID TAG
|
ID TAG
|
||||||
1 snap
|
1 snap
|
||||||
|
|
||||||
=== Test pass snapshot.3 ===
|
=== Test pass snapshot.3 ===
|
||||||
|
|
||||||
@ -157,8 +157,8 @@ Offset Length File
|
|||||||
0x7fff0000 0x10000 TEST_DIR/t.IMGFMT
|
0x7fff0000 0x10000 TEST_DIR/t.IMGFMT
|
||||||
0x83400000 0x200 TEST_DIR/t.IMGFMT
|
0x83400000 0x200 TEST_DIR/t.IMGFMT
|
||||||
Snapshot list:
|
Snapshot list:
|
||||||
ID TAG
|
ID TAG
|
||||||
1 snap
|
1 snap
|
||||||
|
|
||||||
=== Test pass bitmap.0 ===
|
=== Test pass bitmap.0 ===
|
||||||
|
|
||||||
|
@ -393,7 +393,7 @@ _check_test_img -r all
|
|||||||
|
|
||||||
echo
|
echo
|
||||||
echo "$((sn_count - 1)) snapshots should remain:"
|
echo "$((sn_count - 1)) snapshots should remain:"
|
||||||
echo " qemu-img info reports $(_img_info | grep -c '^ \{32\}') snapshots"
|
echo " qemu-img info reports $(_img_info | grep -c '^ \{30\}') snapshots"
|
||||||
echo " Image header reports $(peek_file_be "$TEST_IMG" 60 4) snapshots"
|
echo " Image header reports $(peek_file_be "$TEST_IMG" 60 4) snapshots"
|
||||||
|
|
||||||
echo
|
echo
|
||||||
@ -520,7 +520,7 @@ _check_test_img -r all
|
|||||||
|
|
||||||
echo
|
echo
|
||||||
echo '65536 snapshots should remain:'
|
echo '65536 snapshots should remain:'
|
||||||
echo " qemu-img info reports $(_img_info | grep -c '^ \{32\}') snapshots"
|
echo " qemu-img info reports $(_img_info | grep -c '^ \{30\}') snapshots"
|
||||||
echo " Image header reports $(peek_file_be "$TEST_IMG" 60 4) snapshots"
|
echo " Image header reports $(peek_file_be "$TEST_IMG" 60 4) snapshots"
|
||||||
|
|
||||||
# success, all done
|
# success, all done
|
||||||
|
@ -33,8 +33,8 @@ QEMU X.Y.Z monitor - type 'help' for more information
|
|||||||
(qemu) savevm snap0
|
(qemu) savevm snap0
|
||||||
(qemu) info snapshots
|
(qemu) info snapshots
|
||||||
List of snapshots present on all disks:
|
List of snapshots present on all disks:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
(qemu) loadvm snap0
|
(qemu) loadvm snap0
|
||||||
(qemu) quit
|
(qemu) quit
|
||||||
|
|
||||||
@ -44,8 +44,8 @@ QEMU X.Y.Z monitor - type 'help' for more information
|
|||||||
(qemu) savevm snap0
|
(qemu) savevm snap0
|
||||||
(qemu) info snapshots
|
(qemu) info snapshots
|
||||||
List of snapshots present on all disks:
|
List of snapshots present on all disks:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
(qemu) loadvm snap0
|
(qemu) loadvm snap0
|
||||||
(qemu) quit
|
(qemu) quit
|
||||||
|
|
||||||
@ -69,8 +69,8 @@ QEMU X.Y.Z monitor - type 'help' for more information
|
|||||||
(qemu) savevm snap0
|
(qemu) savevm snap0
|
||||||
(qemu) info snapshots
|
(qemu) info snapshots
|
||||||
List of snapshots present on all disks:
|
List of snapshots present on all disks:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
(qemu) loadvm snap0
|
(qemu) loadvm snap0
|
||||||
(qemu) quit
|
(qemu) quit
|
||||||
|
|
||||||
@ -94,8 +94,8 @@ QEMU X.Y.Z monitor - type 'help' for more information
|
|||||||
(qemu) savevm snap0
|
(qemu) savevm snap0
|
||||||
(qemu) info snapshots
|
(qemu) info snapshots
|
||||||
List of snapshots present on all disks:
|
List of snapshots present on all disks:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
(qemu) loadvm snap0
|
(qemu) loadvm snap0
|
||||||
(qemu) quit
|
(qemu) quit
|
||||||
|
|
||||||
@ -105,8 +105,8 @@ QEMU X.Y.Z monitor - type 'help' for more information
|
|||||||
(qemu) savevm snap0
|
(qemu) savevm snap0
|
||||||
(qemu) info snapshots
|
(qemu) info snapshots
|
||||||
List of snapshots present on all disks:
|
List of snapshots present on all disks:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
(qemu) loadvm snap0
|
(qemu) loadvm snap0
|
||||||
(qemu) quit
|
(qemu) quit
|
||||||
|
|
||||||
@ -119,8 +119,8 @@ QEMU X.Y.Z monitor - type 'help' for more information
|
|||||||
(qemu) savevm snap0
|
(qemu) savevm snap0
|
||||||
(qemu) info snapshots
|
(qemu) info snapshots
|
||||||
List of snapshots present on all disks:
|
List of snapshots present on all disks:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
(qemu) loadvm snap0
|
(qemu) loadvm snap0
|
||||||
(qemu) quit
|
(qemu) quit
|
||||||
|
|
||||||
@ -134,8 +134,8 @@ QEMU X.Y.Z monitor - type 'help' for more information
|
|||||||
(qemu) savevm snap0
|
(qemu) savevm snap0
|
||||||
(qemu) info snapshots
|
(qemu) info snapshots
|
||||||
List of snapshots present on all disks:
|
List of snapshots present on all disks:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
(qemu) loadvm snap0
|
(qemu) loadvm snap0
|
||||||
(qemu) quit
|
(qemu) quit
|
||||||
|
|
||||||
@ -145,15 +145,15 @@ QEMU X.Y.Z monitor - type 'help' for more information
|
|||||||
(qemu) savevm snap0
|
(qemu) savevm snap0
|
||||||
(qemu) info snapshots
|
(qemu) info snapshots
|
||||||
List of snapshots present on all disks:
|
List of snapshots present on all disks:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
(qemu) loadvm snap0
|
(qemu) loadvm snap0
|
||||||
(qemu) quit
|
(qemu) quit
|
||||||
|
|
||||||
Internal snapshots on overlay:
|
Internal snapshots on overlay:
|
||||||
Snapshot list:
|
Snapshot list:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
1 snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
1 snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
Internal snapshots on backing file:
|
Internal snapshots on backing file:
|
||||||
|
|
||||||
=== -blockdev with NBD server on the backing file ===
|
=== -blockdev with NBD server on the backing file ===
|
||||||
@ -166,17 +166,17 @@ QEMU X.Y.Z monitor - type 'help' for more information
|
|||||||
(qemu) savevm snap0
|
(qemu) savevm snap0
|
||||||
(qemu) info snapshots
|
(qemu) info snapshots
|
||||||
List of snapshots present on all disks:
|
List of snapshots present on all disks:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
-- snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
(qemu) loadvm snap0
|
(qemu) loadvm snap0
|
||||||
(qemu) quit
|
(qemu) quit
|
||||||
|
|
||||||
Internal snapshots on overlay:
|
Internal snapshots on overlay:
|
||||||
Snapshot list:
|
Snapshot list:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
1 snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
1 snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
Internal snapshots on backing file:
|
Internal snapshots on backing file:
|
||||||
Snapshot list:
|
Snapshot list:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
1 snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
1 snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
*** done
|
*** done
|
||||||
|
@ -69,7 +69,8 @@ $QEMU_IMG snapshot -l "$TEST_IMG" | tail -n 1 | tr -s ' ' \
|
|||||||
-e 's/\./(VM state size unit)/' \
|
-e 's/\./(VM state size unit)/' \
|
||||||
-e 's/\./(snapshot date)/' \
|
-e 's/\./(snapshot date)/' \
|
||||||
-e 's/\./(snapshot time)/' \
|
-e 's/\./(snapshot time)/' \
|
||||||
-e 's/\./(VM clock)/'
|
-e 's/\./(VM clock)/' \
|
||||||
|
-e 's/\./(icount)/'
|
||||||
|
|
||||||
# success, all done
|
# success, all done
|
||||||
echo "*** done"
|
echo "*** done"
|
||||||
|
@ -4,5 +4,5 @@ QEMU X.Y.Z monitor - type 'help' for more information
|
|||||||
(qemu) savevm abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
(qemu) savevm abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
||||||
(qemu) quit
|
(qemu) quit
|
||||||
Output structure:
|
Output structure:
|
||||||
(snapshot ID) (snapshot name) (VM state size value) (VM state size unit) (snapshot date) (snapshot time) (VM clock)
|
(snapshot ID) (snapshot name) (VM state size value) (VM state size unit) (snapshot date) (snapshot time) (VM clock) (icount)
|
||||||
*** done
|
*** done
|
||||||
|
@ -14,8 +14,8 @@ wrote 524288/524288 bytes at offset 0
|
|||||||
(qemu) quit
|
(qemu) quit
|
||||||
|
|
||||||
Snapshot list:
|
Snapshot list:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
1 snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
1 snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
No errors were found on the image.
|
No errors were found on the image.
|
||||||
|
|
||||||
=== Verify that loading the snapshot reverts to the old content ===
|
=== Verify that loading the snapshot reverts to the old content ===
|
||||||
@ -47,9 +47,9 @@ read 64512/64512 bytes at offset 66560
|
|||||||
(qemu) quit
|
(qemu) quit
|
||||||
|
|
||||||
Snapshot list:
|
Snapshot list:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
1 snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
1 snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
2 snap1 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
2 snap1 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
No errors were found on the image.
|
No errors were found on the image.
|
||||||
|
|
||||||
=== qemu-img snapshot can revert to snapshots ===
|
=== qemu-img snapshot can revert to snapshots ===
|
||||||
@ -79,8 +79,8 @@ read 64512/64512 bytes at offset 66560
|
|||||||
(qemu) quit
|
(qemu) quit
|
||||||
|
|
||||||
Snapshot list:
|
Snapshot list:
|
||||||
ID TAG VM SIZE DATE VM CLOCK ICOUNT
|
ID TAG VM_SIZE DATE VM_CLOCK ICOUNT
|
||||||
1 snap0 SIZE yyyy-mm-dd hh:mm:ss 00:00:00.000
|
1 snap0 SIZE yyyy-mm-dd hh:mm:ss 0000:00:00.000 --
|
||||||
No errors were found on the image.
|
No errors were found on the image.
|
||||||
|
|
||||||
=== Error cases ===
|
=== Error cases ===
|
||||||
|
Loading…
Reference in New Issue
Block a user