On Thu, May 13, 2021 at 7:23 PM Pavel Hrdina <phrdina(a)redhat.com> wrote:
Pavel Hrdina (2):
storage: add support for QCOW2 cluster_size option
storage_file: add support to probe cluster_size from QCOW2 images
docs/formatstorage.html.in | 6 ++
docs/schemas/storagecommon.rng | 7 +++
docs/schemas/storagevol.rng | 3 +
src/conf/storage_conf.c | 12 ++++
src/storage/storage_util.c | 8 +++
src/storage_file/storage_file_probe.c | 55 +++++++++++++------
.../qcow2-clusterSize.argv | 6 ++
tests/storagevolxml2argvtest.c | 4 ++
.../vol-qcow2-clusterSize.xml | 17 ++++++
.../vol-qcow2-clusterSize.xml | 17 ++++++
tests/storagevolxml2xmltest.c | 1 +
11 files changed, 120 insertions(+), 16 deletions(-)
create mode 100644 tests/storagevolxml2argvdata/qcow2-clusterSize.argv
create mode 100644 tests/storagevolxml2xmlin/vol-qcow2-clusterSize.xml
create mode 100644 tests/storagevolxml2xmlout/vol-qcow2-clusterSize.xml
Works for me when patched with libvirt v7.3.0-184-gdf28ba289c
➜ ~ cat
/tmp/cluster.xml
<volume type='file'>
<name>cluster.qcow2</name>
<key>/var/lib/libvirt/images/cluster.qcow2</key>
<capacity unit='bytes'>5368709</capacity>
<physical unit='bytes'>1271660544</physical>
<target>
<path>/var/lib/libvirt/images/hhan-pc.qcow2</path>
<format type='qcow2'/>
<permissions>
<mode>0600</mode>
<owner>0</owner>
<group>0</group>
<label>system_u:object_r:virt_image_t:s0</label>
</permissions>
<timestamps>
<atime>1621221448.682657229</atime>
<mtime>1618908525.055934734</mtime>
<ctime>1618908525.253934734</ctime>
<btime>0</btime>
</timestamps>
<compat>1.1</compat>
<clusterSize>1024</clusterSize>
<features>
<lazy_refcounts/>
</features>
</target>
</volume>
➜ ~ virt-xml-validate /tmp/cluster.xml
/tmp/cluster.xml validates
➜ ~ virsh vol-create images /tmp/cluster.xml
Vol cluster.qcow2 created from /tmp/cluster.xml
➜ ~ qemu-img info /var/lib/libvirt/images/cluster.qcow2
image: /var/lib/libvirt/images/cluster.qcow2
file format: qcow2
virtual size: 5.12 MiB (5368832 bytes)
disk size: 4 KiB
cluster_size: 1024
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: true
refcount bits: 16
corrupt: false
extended l2: false
➜ ~ virsh vol-dumpxml --pool images cluster.qcow2
<volume type='file'>
<name>cluster.qcow2</name>
<key>/var/lib/libvirt/images/cluster.qcow2</key>
<capacity unit='bytes'>5368832</capacity>
<allocation unit='bytes'>4096</allocation>
<physical unit='bytes'>3400</physical>
<target>
<path>/var/lib/libvirt/images/cluster.qcow2</path>
<format type='qcow2'/>
<permissions>
<mode>0600</mode>
<owner>0</owner>
<group>0</group>
<label>system_u:object_r:virt_image_t:s0</label>
</permissions>
<timestamps>
<atime>1621224886.854657229</atime>
<mtime>1621224875.045657229</mtime>
<ctime>1621224875.049657229</ctime>
<btime>0</btime>
</timestamps>
<compat>1.1</compat>
<clusterSize unit='B'>1024</clusterSize>
<features>
<lazy_refcounts/>
</features>
</target>
</volume>
--
2.31.1
--
Reviewed-by: Han Han <hhan(a)redhat.com>
Tested-by: Han Han <hhan(a)redhat.com>