Bug 1666884
| Summary: | persistent bitmaps prevent qcow2 image resize | |||
|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Eric Blake <eblake> | |
| Component: | qemu-kvm-rhev | Assignee: | John Snow <jsnow> | |
| Status: | CLOSED ERRATA | QA Contact: | aihua liang <aliang> | |
| Severity: | unspecified | Docs Contact: | ||
| Priority: | unspecified | |||
| Version: | 7.7 | CC: | aliang, chayang, coli, juzhang, ngu, qzhang, timao, virt-maint | |
| Target Milestone: | rc | |||
| Target Release: | --- | |||
| Hardware: | Unspecified | |||
| OS: | Unspecified | |||
| Whiteboard: | ||||
| Fixed In Version: | qemu-kvm-rhev-2.12.0-27.el7 | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 1683037 1717161 (view as bug list) | Environment: | ||
| Last Closed: | 2019-08-22 09:19:59 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
| Bug Depends On: | ||||
| Bug Blocks: | 1683037, 1717161 | |||
|
Description
Eric Blake
2019-01-16 20:49:10 UTC
For incremental_live_backup, test on qemu-kvm-rhev-2.12.0-23.el7.x86_64, only in this
testing scenarios, we can hit this issue.
1.Start guest with a qcow2 image.
-object iothread,id=iothread0 \
-blockdev driver=file,node-name=file_base,filename=/home/kvm_autotest_root/images/rhel77-64-virtio.qcow2,auto-read-only=on \
-blockdev driver=qcow2,file=file_base,node-name=drive_image1,auto-read-only=on \
-device virtio-blk-pci,id=image1,drive=drive_image1,bus=pci.0,iothread=iothread0 \
2.Create a persistent bitmap.
{ "execute": "block-dirty-bitmap-add", "arguments": {"node": "drive_image1", "name": "bitmap0","persistent":true}}
3.Shutdown vm.
(qemu)quit
4.Re-start it with the qcow2 image.
-object iothread,id=iothread0 \
-blockdev driver=file,node-name=file_base,filename=/home/kvm_autotest_root/images/rhel77-64-virtio.qcow2,auto-read-only=on \
-blockdev driver=qcow2,file=file_base,node-name=drive_image1,auto-read-only=on \
-device virtio-blk-pci,id=image1,drive=drive_image1,bus=pci.0,iothread=iothread0 \
5.Do block resize
{ "execute": "block_resize", "arguments": { "node-name":"drive_image1", "size":32212254720}}
Test Result:
Block_resize in step5 failed with error info:
{"error": {"class": "GenericError", "desc": "Can't resize an image which has bitmaps"}}
When we do block_resize after step2, don't hit this issue.
Preliminary fixes for this have been posted upstream, setting to assigned. Ref: https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg01319.html Reproduce this bug offline as below.
Tested with:
qemu-kvm-rhev-2.12.0-25.el7
kernel-3.10.0-1014.el7
Steps:
1. Boot a guest with a data disk of qcow2 format.
# /usr/libexec/qemu-kvm \
......
-device virtio-blk-pci,id=virtio_blk_pci1,drive=my_file1,bus=pcie.0,addr=06 \
-blockdev driver=qcow2,cache.direct=off,cache.no-flush=on,node-name=my_file1,file.driver=file,file.filename=data.qcow2 \
......
2. Check blocks info with HMP
(qemu) info block
my_file: sn.qcow2 (qcow2)
Attached to: /machine/peripheral/virtio_blk_pci0/virtio-backend
Cache mode: writethrough, ignore flushes
Backing file: json:{"driver": "raw", "file": {"pool": "rbd", "image": "new_base.img", "driver": "rbd"}} (chain depth: 1)
my_file1: data.qcow2 (qcow2)
Attached to: /machine/peripheral/virtio_blk_pci1/virtio-backend
Cache mode: writethrough, ignore flushes
(qemu)
3. Create a persistent bitmap by QMP
{"QMP": {"version": {"qemu": {"micro": 0, "minor": 12, "major": 2}, "package": "qemu-kvm-rhev-2.12.0-25.el7"}, "capabilities": []}}
{"execute": "qmp_capabilities"}
{"return": {}}
{ "execute": "block-dirty-bitmap-add", "arguments": {"node": "my_file1", "name": "bitmap0","persistent":true}}
{"return": {}}
4. Shutdown the guest
5. Resize the data disk
# qemu-img resize data.qcow2 +1G
qemu-img: Can't resize an image which has bitmaps
Fix included in qemu-kvm-rhev-2.12.0-27.el7 Verified in qemu-kvm-rhev-2.12.0-27.el7, it has been fixed. Will set bug's status to "Verified" after "ON_QA".
Test steps:
1.Start guest with qemu cmds:
/usr/libexec/qemu-kvm \
-name 'avocado-vt-vm1' \
-machine pc \
-nodefaults \
-device VGA,bus=pci.0,addr=0x2 \
-chardev socket,id=qmp_id_qmpmonitor1,path=/var/tmp/monitor-qmpmonitor1-20190412-011839-sZJY2UtD,server,nowait \
-mon chardev=qmp_id_qmpmonitor1,mode=control \
-chardev socket,id=qmp_id_catch_monitor,path=/var/tmp/monitor-catch_monitor-20190412-011839-sZJY2UtD,server,nowait \
-mon chardev=qmp_id_catch_monitor,mode=control \
-device pvpanic,ioport=0x505,id=idbSDNv4 \
-chardev socket,id=serial_id_serial0,path=/var/tmp/serial-serial0-20190412-011839-sZJY2UtD,server,nowait \
-device isa-serial,chardev=serial_id_serial0 \
-chardev socket,id=seabioslog_id_20190412-011839-sZJY2UtD,path=/var/tmp/seabios-20190412-011839-sZJY2UtD,server,nowait \
-device isa-debugcon,chardev=seabioslog_id_20190412-011839-sZJY2UtD,iobase=0x402 \
-device nec-usb-xhci,id=usb1,bus=pci.0,addr=0x3 \
-object iothread,id=iothread0 \
-device virtio-scsi-pci,id=virtio_scsi_pci0,bus=pci.0,addr=0x4,iothread=iothread0 \
-blockdev driver=file,node-name=file_node,filename=/home/kvm_autotest_root/images/rhel77-64-virtio-scsi.qcow2 \
-blockdev driver=qcow2,node-name=drive_image1,file=file_node \
-device scsi-hd,id=image1,drive=drive_image1 \
-device virtio-net-pci,mac=9a:dc:dd:de:df:e0,id=idb7yKIW,vectors=4,netdev=idpOQ1y9,bus=pci.0,addr=0x5 \
-netdev tap,id=idpOQ1y9,vhost=on \
-m 30720 \
-smp 16,maxcpus=16,cores=8,threads=1,sockets=2 \
-cpu 'IvyBridge',+kvm_pv_unhalt \
-device usb-tablet,id=usb-tablet1,bus=usb1.0,port=1 \
-vnc :0 \
-rtc base=utc,clock=host,driftfix=slew \
-boot menu=off,strict=off,order=cdn,once=c \
-enable-kvm \
-monitor stdio \
-qmp tcp:0:3000,server,nowait \
2.Add a persistent bitmap
{ "execute": "block-dirty-bitmap-add", "arguments": {"node": "drive_image1", "name": "bitmap1","persistent":true,"disabled":true,"granularity":4096}}
3.Resize disk size to 30G
{ "execute": "block_resize", "arguments": { "node-name":"drive_image1", "size":32212254720}}
4.Check image info.
# qemu-img info rhel77-64-virtio-scsi.qcow2 -U
image: rhel77-64-virtio-scsi.qcow2
file format: qcow2
virtual size: 30G (32212254720 bytes)
disk size: 4.3G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
5.Shutdown vm, resize disk size to 31G
qemu-img resize /home/kvm_autotest_root/images/rhel77-64-virtio-scsi.qcow2 +1G
6.Check image info:
# qemu-img info rhel77-64-virtio-scsi.qcow2
image: rhel77-64-virtio-scsi.qcow2
file format: qcow2
virtual size: 31G (33285996544 bytes)
disk size: 4.3G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
bitmaps:
[0]:
flags:
name: bitmap1
granularity: 4096
refcount bits: 16
corrupt: false
7.Re-start vm, shrink its size to 30G
{ "execute": "block_resize", "arguments": { "node-name":"drive_image1", "size":32212254720}}
8.Check image info:
qemu-img info rhel77-64-virtio-scsi.qcow2 -U
image: rhel77-64-virtio-scsi.qcow2
file format: qcow2
virtual size: 30G (32212254720 bytes)
disk size: 4.3G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
bitmaps:
[0]:
flags:
[0]: in-use
name: bitmap1
granularity: 4096
refcount bits: 16
corrupt: false
9.Shutdown vm, shrink its size to 29G.
qemu-img resize --shrink /home/kvm_autotest_root/images/rhel77-64-virtio-scsi.qcow2 -1G
10.Check image info:
qemu-img info rhel77-64-virtio-scsi.qcow2
image: rhel77-64-virtio-scsi.qcow2
file format: qcow2
virtual size: 29G (31138512896 bytes)
disk size: 4.3G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
bitmaps:
[0]:
flags:
name: bitmap1
granularity: 4096
refcount bits: 16
corrupt: false
11.Re-start vm, then remove bitmap and resize image size to 30G:
{ 'execute': 'block-dirty-bitmap-remove', 'arguments': {'node':'drive_image1', 'name':'bitmap1'}}
{ "execute": "block_resize", "arguments": { "node-name":"drive_image1", "size":32212254720}}
12.Check image info:
qemu-img info rhel77-64-virtio-scsi.qcow2 -U
image: rhel77-64-virtio-scsi.qcow2
file format: qcow2
virtual size: 30G (32212254720 bytes)
disk size: 4.3G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2019:2553 |