[libvirt] [PATCH 0/5] Add support for fine grained discard control of qemu

* The 'discard_granularity' property is available to 'scsi-hd', 'virtio-blk' and 'ide-*'. It impacts the 'Optimal Unmap Granularity' field in the block limits VPD page: Optimal Unmap Granularity = discard granularity / logical block size * The 'max_unmap_size' property is available to 'scsi-hd' and 'scsi-block'. It impacts the 'Maximum unmap LBA count' field in the block limits VPD page: Maximum unmap LBA count = max unmap size / logical block size Lin Ma (5): conf: Add support for discard granularity qemu: Add Support for discard granularity conf: Add support for unmap limit qemu: caps: Add max_unmap_size property of scsi-disk qemu: Add support for max_unmap_size property of scsi-disk docs/formatdomain.html.in | 18 +++++++- docs/schemas/domaincommon.rng | 10 +++++ src/conf/domain_conf.c | 43 ++++++++++++++++++- src/conf/domain_conf.h | 2 + src/qemu/qemu_capabilities.c | 2 + src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 13 ++++++ src/qemu/qemu_domain.c | 4 ++ .../caps_2.1.1.x86_64.xml | 1 + .../caps_2.10.0.aarch64.xml | 1 + .../caps_2.10.0.ppc64.xml | 1 + .../caps_2.10.0.s390x.xml | 1 + .../caps_2.10.0.x86_64.xml | 1 + .../caps_2.11.0.s390x.xml | 1 + .../caps_2.11.0.x86_64.xml | 1 + .../caps_2.12.0.aarch64.xml | 1 + .../caps_2.12.0.ppc64.xml | 1 + .../caps_2.12.0.s390x.xml | 1 + .../caps_2.12.0.x86_64.xml | 1 + .../caps_2.4.0.x86_64.xml | 1 + .../caps_2.5.0.x86_64.xml | 1 + .../caps_2.6.0.aarch64.xml | 1 + .../qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 + .../caps_2.6.0.x86_64.xml | 1 + .../qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 + .../caps_2.7.0.x86_64.xml | 1 + .../qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 + .../caps_2.8.0.x86_64.xml | 1 + .../qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 + .../qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 + .../caps_2.9.0.x86_64.xml | 1 + .../qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 1 + .../caps_3.0.0.riscv32.xml | 1 + .../caps_3.0.0.riscv64.xml | 1 + .../qemucapabilitiesdata/caps_3.0.0.s390x.xml | 1 + .../caps_3.0.0.x86_64.xml | 1 + .../qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 1 + .../caps_3.1.0.x86_64.xml | 1 + .../caps_4.0.0.aarch64.xml | 1 + .../qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 1 + .../caps_4.0.0.riscv32.xml | 1 + .../caps_4.0.0.riscv64.xml | 1 + .../qemucapabilitiesdata/caps_4.0.0.s390x.xml | 1 + .../caps_4.0.0.x86_64.xml | 1 + .../caps_4.1.0.x86_64.xml | 1 + .../caps_4.2.0.aarch64.xml | 1 + .../qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 1 + .../qemucapabilitiesdata/caps_4.2.0.s390x.xml | 1 + .../caps_4.2.0.x86_64.xml | 1 + .../caps_5.0.0.aarch64.xml | 1 + .../qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 + .../caps_5.0.0.riscv64.xml | 1 + .../caps_5.0.0.x86_64.xml | 1 + .../caps_5.1.0.x86_64.xml | 1 + tests/qemuxml2argvdata/disk-blockio.args | 2 +- tests/qemuxml2argvdata/disk-blockio.xml | 2 +- .../disk-scsi-disk-max_unmap_size.args | 32 ++++++++++++++ .../disk-scsi-disk-max_unmap_size.xml | 28 ++++++++++++ tests/qemuxml2argvtest.c | 4 ++ 59 files changed, 203 insertions(+), 4 deletions(-) create mode 100644 tests/qemuxml2argvdata/disk-scsi-disk-max_unmap_size.args create mode 100644 tests/qemuxml2argvdata/disk-scsi-disk-max_unmap_size.xml -- 2.26.0

Signed-off-by: Lin Ma <lma@suse.com> --- docs/formatdomain.html.in | 6 +++++- docs/schemas/domaincommon.rng | 5 +++++ src/conf/domain_conf.c | 19 ++++++++++++++++++- src/conf/domain_conf.h | 1 + src/qemu/qemu_domain.c | 2 ++ 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 20c28a47e3..59ee50225a 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -3019,7 +3019,7 @@ <driver name='qemu' type='raw'/> <source dev='/dev/sda'/> <geometry cyls='16383' heads='16' secs='63' trans='lba'/> - <blockio logical_block_size='512' physical_block_size='4096'/> + <blockio logical_block_size='512' physical_block_size='4096' discard_granularity='4096'/> <target dev='hdj' bus='ide'/> </disk> <disk type='volume' device='disk'> @@ -4067,6 +4067,10 @@ BLKPBSZGET ioctl and describes the disk's hardware sector size which can be relevant for the alignment of disk data. </dd> + <dt><code>discard_granularity</code></dt> + <dd>Its value impacts the Optimal Unmap Granularity field in + the block limits VPD page. <span class="since">Since 6.5.0</span> + </dd> </dl> </dd> </dl> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index e3bf7f5d55..5206c4e246 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -2177,6 +2177,11 @@ <data type="integer"/> </attribute> </optional> + <optional> + <attribute name="discard_granularity"> + <data type="integer"/> + </attribute> + </optional> </element> </define> <!-- diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index e9336fd72d..7a6a124ffd 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -10425,6 +10425,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt, g_autofree char *vendor = NULL; g_autofree char *product = NULL; g_autofree char *domain_name = NULL; + g_autofree char *discard_granularity = NULL; if (!(def = virDomainDiskDefNew(xmlopt))) return NULL; @@ -10522,6 +10523,16 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt, physical_block_size); goto error; } + discard_granularity = + virXMLPropString(cur, "discard_granularity"); + if (discard_granularity && + virStrToLong_ui(discard_granularity, NULL, 0, + &def->blockio.discard_granularity) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("invalid granularity size '%s'"), + discard_granularity); + goto error; + } } else if (!virDomainDiskGetDriver(def) && virXMLNodeNameEqual(cur, "driver")) { if (virDomainVirtioOptionsParseXML(cur, &def->virtio) < 0) @@ -24958,7 +24969,8 @@ virDomainDiskBlockIoDefFormat(virBufferPtr buf, virDomainDiskDefPtr def) { if (def->blockio.logical_block_size > 0 || - def->blockio.physical_block_size > 0) { + def->blockio.physical_block_size > 0 || + def->blockio.discard_granularity > 0) { virBufferAddLit(buf, "<blockio"); if (def->blockio.logical_block_size > 0) { virBufferAsprintf(buf, @@ -24970,6 +24982,11 @@ virDomainDiskBlockIoDefFormat(virBufferPtr buf, " physical_block_size='%u'", def->blockio.physical_block_size); } + if (def->blockio.discard_granularity > 0) { + virBufferAsprintf(buf, + " discard_granularity='%u'", + def->blockio.discard_granularity); + } virBufferAddLit(buf, "/>\n"); } } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index bda8fb6bce..9056e5e9b6 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -549,6 +549,7 @@ struct _virDomainDiskDef { struct { unsigned int logical_block_size; unsigned int physical_block_size; + unsigned int discard_granularity; } blockio; virDomainBlockIoTuneInfo blkdeviotune; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 2dad823a86..c582550def 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -8743,6 +8743,8 @@ qemuDomainDiskChangeSupported(virDomainDiskDefPtr disk, "blockio logical_block_size", false); CHECK_EQ(blockio.physical_block_size, "blockio physical_block_size", false); + CHECK_EQ(blockio.discard_granularity, + "blockio discard_granularity", false); CHECK_EQ(blkdeviotune.total_bytes_sec, "blkdeviotune total_bytes_sec", -- 2.26.0

The default discard granularity is set to the logical block size or 4k by qemu, whichever is largest. The Optimal Unmap Granularity field in the block limits VPD page is impacted by it: Optimal Unmap Granularity = discard granularity / logical block size Signed-off-by: Lin Ma <lma@suse.com> --- src/qemu/qemu_command.c | 3 +++ tests/qemuxml2argvdata/disk-blockio.args | 2 +- tests/qemuxml2argvdata/disk-blockio.xml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index f27246b4c6..43f3a4c2a3 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1849,6 +1849,9 @@ qemuBuildDiskDeviceStr(const virDomainDef *def, if (disk->blockio.physical_block_size > 0) virBufferAsprintf(&opt, ",physical_block_size=%u", disk->blockio.physical_block_size); + if (disk->blockio.discard_granularity > 0) + virBufferAsprintf(&opt, ",discard_granularity=%u", + disk->blockio.discard_granularity); } if (disk->wwn) { diff --git a/tests/qemuxml2argvdata/disk-blockio.args b/tests/qemuxml2argvdata/disk-blockio.args index 72aa592fef..b02f833692 100644 --- a/tests/qemuxml2argvdata/disk-blockio.args +++ b/tests/qemuxml2argvdata/disk-blockio.args @@ -30,5 +30,5 @@ readonly=on \ -device ide-cd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1 \ -drive file=/tmp/idedisk.img,format=raw,if=none,id=drive-ide0-0-2 \ -device ide-hd,bus=ide.0,unit=2,drive=drive-ide0-0-2,id=ide0-0-2,bootindex=1,\ -logical_block_size=512,physical_block_size=512 \ +logical_block_size=512,physical_block_size=512,discard_granularity=4096 \ -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 diff --git a/tests/qemuxml2argvdata/disk-blockio.xml b/tests/qemuxml2argvdata/disk-blockio.xml index 1f78b38cb6..8ae53cdeb5 100644 --- a/tests/qemuxml2argvdata/disk-blockio.xml +++ b/tests/qemuxml2argvdata/disk-blockio.xml @@ -23,7 +23,7 @@ <source file='/tmp/idedisk.img'/> <target dev='hdc' bus='ide'/> <address type='drive' controller='0' bus='0' target='0' unit='2'/> - <blockio logical_block_size='512' physical_block_size='512'/> + <blockio logical_block_size='512' physical_block_size='512' discard_granularity='4096'/> </disk> <controller type='usb' index='0'/> <controller type='ide' index='0'/> -- 2.26.0

Signed-off-by: Lin Ma <lma@suse.com> --- docs/formatdomain.html.in | 12 ++++++++++++ docs/schemas/domaincommon.rng | 5 +++++ src/conf/domain_conf.c | 26 +++++++++++++++++++++++++- src/conf/domain_conf.h | 1 + src/qemu/qemu_domain.c | 2 ++ 5 files changed, 45 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 59ee50225a..c4c510ab5f 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -3015,6 +3015,13 @@ <target dev='sda' bus='scsi'/> <address type='drive' controller='0' bus='0' target='3' unit='0'/> </disk> + <disk type='file' device='disk'> + <driver name='qemu' type='qcow2'/> + <source file='/var/lib/libvirt/images/domain.qcow2'/> + <blockio max_unmap_size='1073741824'/> + <target dev='sdb' bus='scsi'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + </disk> <disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/sda'/> @@ -4071,6 +4078,11 @@ <dd>Its value impacts the Optimal Unmap Granularity field in the block limits VPD page. <span class="since">Since 6.5.0</span> </dd> + <dt><code>max_unmap_size</code></dt> + <dd>Available for scsi disks only. It impacts the Maximum + Unmap LBA count field in the block limits VPD page. + <span class="since">Since 6.5.0 (QEMU 2.0)</span> + </dd> </dl> </dd> </dl> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 5206c4e246..8d037c4d07 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -2182,6 +2182,11 @@ <data type="integer"/> </attribute> </optional> + <optional> + <attribute name="max_unmap_size"> + <data type="integer"/> + </attribute> + </optional> </element> </define> <!-- diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 7a6a124ffd..a546d9cc6f 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -6145,6 +6145,13 @@ virDomainDiskDefValidate(const virDomainDef *def, return -1; } + if (disk->blockio.max_unmap_size && disk->bus != VIR_DOMAIN_DISK_BUS_SCSI) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("max_unmap_size attribute is only supported by " + "scsi-hd or scsi-block")); + return -1; + } + if (disk->bus != VIR_DOMAIN_DISK_BUS_VIRTIO && (disk->model == VIR_DOMAIN_DISK_MODEL_VIRTIO || disk->model == VIR_DOMAIN_DISK_MODEL_VIRTIO_TRANSITIONAL || @@ -10426,6 +10433,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt, g_autofree char *product = NULL; g_autofree char *domain_name = NULL; g_autofree char *discard_granularity = NULL; + g_autofree char *max_unmap_size = NULL; if (!(def = virDomainDiskDefNew(xmlopt))) return NULL; @@ -10533,6 +10541,16 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt, discard_granularity); goto error; } + max_unmap_size = + virXMLPropString(cur, "max_unmap_size"); + if (max_unmap_size && + virStrToLong_ui(max_unmap_size, NULL, 0, + &def->blockio.max_unmap_size) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("invalid unmap limits size '%s'"), + max_unmap_size); + goto error; + } } else if (!virDomainDiskGetDriver(def) && virXMLNodeNameEqual(cur, "driver")) { if (virDomainVirtioOptionsParseXML(cur, &def->virtio) < 0) @@ -24970,7 +24988,8 @@ virDomainDiskBlockIoDefFormat(virBufferPtr buf, { if (def->blockio.logical_block_size > 0 || def->blockio.physical_block_size > 0 || - def->blockio.discard_granularity > 0) { + def->blockio.discard_granularity > 0 || + def->blockio.max_unmap_size > 0) { virBufferAddLit(buf, "<blockio"); if (def->blockio.logical_block_size > 0) { virBufferAsprintf(buf, @@ -24987,6 +25006,11 @@ virDomainDiskBlockIoDefFormat(virBufferPtr buf, " discard_granularity='%u'", def->blockio.discard_granularity); } + if (def->blockio.max_unmap_size > 0) { + virBufferAsprintf(buf, + " max_unmap_size='%u'", + def->blockio.max_unmap_size); + } virBufferAddLit(buf, "/>\n"); } } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 9056e5e9b6..79bb30b666 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -550,6 +550,7 @@ struct _virDomainDiskDef { unsigned int logical_block_size; unsigned int physical_block_size; unsigned int discard_granularity; + unsigned int max_unmap_size; } blockio; virDomainBlockIoTuneInfo blkdeviotune; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index c582550def..28564f48ec 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -8745,6 +8745,8 @@ qemuDomainDiskChangeSupported(virDomainDiskDefPtr disk, "blockio physical_block_size", false); CHECK_EQ(blockio.discard_granularity, "blockio discard_granularity", false); + CHECK_EQ(blockio.max_unmap_size, + "blockio max_unmap_size", false); CHECK_EQ(blkdeviotune.total_bytes_sec, "blkdeviotune total_bytes_sec", -- 2.26.0

Signed-off-by: Lin Ma <lma@suse.com> --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml | 1 + 48 files changed, 49 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index aa90eab229..0046cc6498 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -587,6 +587,7 @@ VIR_ENUM_IMPL(virQEMUCaps, "cpu.migratable", "query-cpu-model-expansion.migratable", "fw_cfg", + "scsi-disk.max_unmap_size", ); @@ -1401,6 +1402,7 @@ static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsSCSIDisk[] = { { "write-cache", QEMU_CAPS_DISK_WRITE_CACHE, NULL }, { "device_id", QEMU_CAPS_SCSI_DISK_DEVICE_ID, NULL }, { "werror", QEMU_CAPS_STORAGE_WERROR, NULL }, + { "max_unmap_size", QEMU_CAPS_SCSI_DISK_MAX_UNMAP_SIZE, NULL }, }; static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsIDEDrive[] = { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 0839c50bc4..cfa52f7eb6 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -568,6 +568,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_CPU_MIGRATABLE, /* -cpu ...,migratable=on|off */ QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_MIGRATABLE, /* query-cpu-model-expansion supports migratable:false */ QEMU_CAPS_FW_CFG, /* -fw_cfg command line option */ + QEMU_CAPS_SCSI_DISK_MAX_UNMAP_SIZE, /* scsi-hd.max_unmap_size */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index 050e3c7059..a4253fc6c4 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -110,6 +110,7 @@ <flag name='i8042'/> <flag name='tcg'/> <flag name='pvscsi'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2001001</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml index 0848b1e18b..98d0619d1c 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml @@ -143,6 +143,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700287</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml index 82a37edd9c..51e3cc3949 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml @@ -143,6 +143,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900287</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml index 7a1ad3d173..c66b0fa8b2 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml @@ -109,6 +109,7 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100287</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml index cca369de2c..9ce9bd77a1 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml @@ -187,6 +187,7 @@ <flag name='pvscsi'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100287</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml index 1108aa46d0..069be41087 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml @@ -116,6 +116,7 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2011000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100288</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml index 0dc0252c8e..fe075ad676 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml @@ -193,6 +193,7 @@ <flag name='pvscsi'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2011000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100288</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml index 78070c0401..a8d42c8d88 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml @@ -159,6 +159,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2012000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700289</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml index 45d3baf080..ce6fddc4c9 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -160,6 +160,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900289</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml index f9b92d11f2..9950ce1001 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml @@ -128,6 +128,7 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2012000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100289</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml index 6387b5b77e..b6d615d986 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml @@ -203,6 +203,7 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100289</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml index 310f69499f..68e3c81180 100644 --- a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml @@ -137,6 +137,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2004000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100242</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml index af9b9e96fd..f4170be8f7 100644 --- a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml @@ -143,6 +143,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2005000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100243</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml index ec17ca5c27..aa9212465d 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml @@ -126,6 +126,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2006000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700244</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml index 13e6df006e..4cb63f8233 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml @@ -122,6 +122,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2006000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900244</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml index c25731997e..8149fdeacd 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml @@ -155,6 +155,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2006000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100244</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml index 2421b46f35..7fe337bdaa 100644 --- a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml @@ -93,6 +93,7 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2007000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100245</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml index 9f25bd17ec..dc3ed5ea83 100644 --- a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml @@ -160,6 +160,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2007000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100245</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml index 083562f641..a952cd0606 100644 --- a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml @@ -98,6 +98,7 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2007093</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100246</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml index 5426e8a54b..9c44ca00a2 100644 --- a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml @@ -163,6 +163,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2008000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100246</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml index fe49896e72..49e2e3bd26 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml @@ -135,6 +135,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2009000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900247</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml index 32861f67ba..3b7c58f43d 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml @@ -103,6 +103,7 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2009000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100247</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml index 66eed229b4..608dbdf0fd 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml @@ -181,6 +181,7 @@ <flag name='pvscsi'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2009000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100247</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml index 95f982eadf..9e8e2779c5 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml @@ -162,6 +162,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>2012050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900239</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml index 35d08c67ec..59b3c38268 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml @@ -98,6 +98,7 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>3000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml index 42635c2e6d..a141226761 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml @@ -98,6 +98,7 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>3000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml b/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml index 96d8953496..ad3fc5b57b 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml @@ -131,6 +131,7 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>3000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100239</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml index 58863ffdc2..d77955b3a1 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml @@ -209,6 +209,7 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>3000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100239</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml index 3a21eb3aab..ca959c2e8c 100644 --- a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml @@ -167,6 +167,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>3000091</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml index 4cb80d0b59..2a725a81ea 100644 --- a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml @@ -212,6 +212,7 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>3000092</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml index b1047ca044..344ab25058 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml @@ -173,6 +173,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml index a4916c2279..f484916393 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml @@ -181,6 +181,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml b/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml index ec7c6b05e1..4edea4bace 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml @@ -174,6 +174,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml index d8924a10e8..5098dce962 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml @@ -174,6 +174,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml b/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml index 671c28cb82..557cee3a9a 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml @@ -139,6 +139,7 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml index a8a0284829..a318d59ecc 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml @@ -217,6 +217,7 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml index 18d39faf90..523a3e4d14 100644 --- a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml @@ -223,6 +223,7 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>4001000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100241</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml index 11d487eefe..ae97581ab2 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml @@ -185,6 +185,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>4001050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700242</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml index 4d44cd4ac6..54dc4ad17f 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml @@ -186,6 +186,7 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>4001050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900242</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml index 6db5926aaa..65f95b05a3 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml @@ -149,6 +149,7 @@ <flag name='virtio.packed'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>4002000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100242</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml index d3592ea5c4..6edf492b7d 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml @@ -231,6 +231,7 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>4002000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100242</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml index 7f993b38e1..f768e28d79 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml @@ -194,6 +194,7 @@ <flag name='virtio-blk-pci.scsi.default.disabled'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>5000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700241</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml index 409120262e..f742dca59b 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml @@ -202,6 +202,7 @@ <flag name='virtio-blk-pci.scsi.default.disabled'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>5000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900241</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml index fb4956f144..1545a6ee81 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml @@ -190,6 +190,7 @@ <flag name='virtio-blk-pci.scsi.default.disabled'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>5000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml index d4afc2e3f6..22b295f820 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml @@ -237,6 +237,7 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>5000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100241</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml index f798a7c361..5cb0f9013c 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml @@ -237,6 +237,7 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='scsi-disk.max_unmap_size'/> <version>5000050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100242</microcodeVersion> -- 2.26.0

The default max_unmap_size is set to 1GB by qemu. The Maximum unmap LBA count field in the block limits VPD page is impacted by it: Maximum unmap LBA count = max unmap size / logical block size Signed-off-by: Lin Ma <lma@suse.com> --- src/qemu/qemu_command.c | 10 ++++++ .../disk-scsi-disk-max_unmap_size.args | 32 +++++++++++++++++++ .../disk-scsi-disk-max_unmap_size.xml | 28 ++++++++++++++++ tests/qemuxml2argvtest.c | 4 +++ 4 files changed, 74 insertions(+) create mode 100644 tests/qemuxml2argvdata/disk-scsi-disk-max_unmap_size.args create mode 100644 tests/qemuxml2argvdata/disk-scsi-disk-max_unmap_size.xml diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 43f3a4c2a3..78f856766e 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1852,6 +1852,16 @@ qemuBuildDiskDeviceStr(const virDomainDef *def, if (disk->blockio.discard_granularity > 0) virBufferAsprintf(&opt, ",discard_granularity=%u", disk->blockio.discard_granularity); + if (disk->blockio.max_unmap_size > 0) { + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_DISK_MAX_UNMAP_SIZE)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("max_unmap_size property isn't supported by " + "this QEMU binary")); + return NULL; + } + virBufferAsprintf(&opt, ",max_unmap_size=%u", + disk->blockio.max_unmap_size); + } } if (disk->wwn) { diff --git a/tests/qemuxml2argvdata/disk-scsi-disk-max_unmap_size.args b/tests/qemuxml2argvdata/disk-scsi-disk-max_unmap_size.args new file mode 100644 index 0000000000..1d399ca451 --- /dev/null +++ b/tests/qemuxml2argvdata/disk-scsi-disk-max_unmap_size.args @@ -0,0 +1,32 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-QEMUGuest1 \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-i386 \ +-name QEMUGuest1 \ +-S \ +-machine pc,accel=tcg,usb=off,dump-guest-core=off \ +-m 214 \ +-realtime mlock=off \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ +server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=control \ +-rtc base=utc \ +-no-shutdown \ +-no-acpi \ +-device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x3 \ +-usb \ +-drive file=/var/lib/libvirt/images/guest.raw,format=raw,if=none,id=drive-scsi0-0-0-0 \ +-device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,\ +id=scsi0-0-0-0,bootindex=1,max_unmap_size=1073741824 \ +-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4 diff --git a/tests/qemuxml2argvdata/disk-scsi-disk-max_unmap_size.xml b/tests/qemuxml2argvdata/disk-scsi-disk-max_unmap_size.xml new file mode 100644 index 0000000000..06c20e3431 --- /dev/null +++ b/tests/qemuxml2argvdata/disk-scsi-disk-max_unmap_size.xml @@ -0,0 +1,28 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>219136</memory> + <currentMemory unit='KiB'>219136</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-i386</emulator> + <disk type='file' device='disk'> + <driver name='qemu' type='raw'/> + <source file='/var/lib/libvirt/images/guest.raw'/> + <target dev='sda' bus='scsi'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + <blockio max_unmap_size='1073741824'/> + </disk> + <controller type='usb' index='0'/> + <controller type='scsi' index='0' model='virtio-scsi'/> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 02f8846e57..632dcd1ad8 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1262,6 +1262,10 @@ mymain(void) QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI); DO_TEST("disk-serial", QEMU_CAPS_KVM); + DO_TEST("disk-scsi-disk-max_unmap_size", + QEMU_CAPS_BLOCKIO, + QEMU_CAPS_VIRTIO_SCSI, + QEMU_CAPS_SCSI_DISK_MAX_UNMAP_SIZE); DO_TEST_PARSE_ERROR("disk-fdc-incompatible-address", NONE); DO_TEST_PARSE_ERROR("disk-ide-incompatible-address", -- 2.26.0
participants (1)
-
Lin Ma