[libvirt] [PATCH v2 01/12] virstoragefile: Introduce virStoragePRDef

John Ferlan jferlan at redhat.com
Fri Mar 2 12:49:22 UTC 2018



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 at 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,
>  }
>  
>  

[...]




More information about the libvir-list mailing list