On 02/21/2018 01:11 PM, Michal Privoznik wrote:
This is a definition that holds information on SCSI persistent
reservation settings. The XML part looks like this:
<reservations enabled='yes' managed='no'>
<source type='unix' path='/path/to/qemu-pr-helper.sock'
mode='client'/>
</reservations>
If @managed is set to 'yes' then the <source/> is not parsed.
This design was agreed on here:
https://www.redhat.com/archives/libvir-list/2017-November/msg01005.html
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
docs/formatdomain.html.in | 25 +++-
docs/schemas/domaincommon.rng | 34 +----
docs/schemas/storagecommon.rng | 50 +++++++
src/conf/domain_conf.c | 36 +++++
src/libvirt_private.syms | 3 +
src/util/virstoragefile.c | 148 +++++++++++++++++++++
src/util/virstoragefile.h | 15 +++
.../disk-virtio-scsi-reservations-not-managed.xml | 40 ++++++
.../disk-virtio-scsi-reservations.xml | 38 ++++++
.../disk-virtio-scsi-reservations-not-managed.xml | 1 +
.../disk-virtio-scsi-reservations.xml | 1 +
tests/qemuxml2xmltest.c | 4 +
12 files changed, 364 insertions(+), 31 deletions(-)
create mode 100644 tests/qemuxml2argvdata/disk-virtio-scsi-reservations-not-managed.xml
create mode 100644 tests/qemuxml2argvdata/disk-virtio-scsi-reservations.xml
create mode 120000
tests/qemuxml2xmloutdata/disk-virtio-scsi-reservations-not-managed.xml
create mode 120000 tests/qemuxml2xmloutdata/disk-virtio-scsi-reservations.xml
Something else that dawned on me when looking at the original series.
[...]
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index f2ddde7a3..a1a6b0162 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -5199,6 +5199,13 @@ virDomainDiskDefValidate(const virDomainDiskDef *disk)
}
}
+ if (disk->src->pr &&
+ disk->device != VIR_DOMAIN_DISK_DEVICE_LUN) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("<reservations/> allowed only for lun
disks"));
+ return -1;
+ }
+
If someone is using a storage pool such as:
<disk type='volume' device='lun'>
<driver name='qemu' type='raw'/>
<source pool='sourcepool' volume='unit:0:4:0'/>
<target dev='sda' bus='scsi'/>
</disk>
then how do they define/use the PR? For LUN's like iSCSI and NPIV it can
be easier or even preferred to use the storage pool as opposed to using
the <source protocol=..."/> syntax.
Search on iscsi in the formatdomain page for iSCSI syntax examples.
See:
https://wiki.libvirt.org/page/NPIV_in_libvirt for the NPIV syntax
examples.
John
/* Reject disks with a bus type that is not compatible with the
* given address type. The function considers only buses that are
* handled in common code. For other bus types it's not possible
@@ -8613,6 +8620,29 @@ virDomainDiskSourcePrivateDataParse(xmlXPathContextPtr ctxt,
}
[...]