On 04/23/2018 09:14 AM, 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>
Reviewed-by: John Ferlan <jferlan(a)redhat.com>
Even though this is present there's still an adjustment or two that
needs to be made to formatdomain.html.in
---
docs/formatdomain.html.in | 23 +++-
docs/schemas/domaincommon.rng | 34 +-----
docs/schemas/storagecommon.rng | 50 ++++++++
src/conf/domain_conf.c | 38 ++++++
src/libvirt_private.syms | 3 +
src/util/virstoragefile.c | 131 +++++++++++++++++++++
src/util/virstoragefile.h | 14 +++
.../disk-virtio-scsi-reservations.xml | 49 ++++++++
.../disk-virtio-scsi-reservations.xml | 1 +
tests/qemuxml2xmltest.c | 2 +
10 files changed, 314 insertions(+), 31 deletions(-)
create mode 100644 tests/qemuxml2argvdata/disk-virtio-scsi-reservations.xml
create mode 120000 tests/qemuxml2xmloutdata/disk-virtio-scsi-reservations.xml
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index ada0df227f..6ed2fd349d 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -2565,7 +2565,10 @@
</disk>
<disk type='block' device='lun'>
<driver name='qemu' type='raw'/>
- <source dev='/dev/sda'/>
+ <source dev='/dev/sda'>
+ <reservations enabled='yes' managed='no'>
+ <source type='unix' path='/path/to/qemu-pr-helper'
mode='client'/>
+ </reservations>
<target dev='sda' bus='scsi'/>
<address type='drive' controller='0' bus='0'
target='3' unit='0'/>
</disk>
@@ -2928,6 +2931,24 @@
<a href="formatstorageencryption.html">Storage
Encryption</a>
page for more information.
</dd>
+ <dt><code>reservations</code></dt>
+ <dd><span class="since">Since libvirt
4.3.0</span>, the
4.4.0
+ <code>reservations</code> can be a
sub-element of the> + <code>source</code> element for storage
sources (QEM
driver only).
QEMU
+ If present (and enabled) it enables persistent
reservations for SCSI
+ based disks. The element has one mandatory attribute
+ <code>enabled</code> with accepted values
<code>yes</code> and
+ <code>no</code>. If the feature is enabled, then there's
another
+ mandatory attribute <code>managed</code> (accepted values are
the
+ same as for <code>enabled</code>) that enables or disables
libvirt
+ spawning a helper process. When the PR is unmanaged, then hypervisor
+ acts as a client and path to server socket must be provided in child
+ element <code>source</code>, which currently accepts only the
+ following attributes: <code>type</code> with one value
+ <code>unix</code>, <code>path</code> with path the
socket, and
+ finally <code>mode</code> which accepts either
<code>server</code>
+ or <code>client</code> and specifies the role of hypervisor.
I know I've pointed this out before - mode only accepts client. Yes the
grammar supports both, but the code supports only one and that's all we
should list.
+ </dd>
Can we squeeze in a (somewhat facetiously :-)):
It's recommended to allow libvirt manage the persistent reservations.
Or
Please don't use unmanaged mode, it's going to be really painful for all
involved ;-)
John
</dl>
<p>