[libvirt] New QEMU daemon for persistent reservations

Michal Privoznik mprivozn at redhat.com
Tue Oct 3 15:59:35 UTC 2017


On 09/10/2017 11:38 AM, Paolo Bonzini wrote:
> On 28/08/2017 13:11, Michal Privoznik wrote:
>> On 08/25/2017 12:41 AM, Paolo Bonzini wrote:
>>> On 22/08/2017 18:27, Paolo Bonzini wrote:
>>>> Hi all,
>>

>>>
>>> The XML to use the helper with a predefined socket could be:
>>>
>>> 	<disk ...>
>>> 	   <pr mode='connect'>/path/to/unix.socket'</pr>
>>> 	</disk>

This looks okay-ish. But from future proof POV, I'd have the path as an
attribute, or as a separate sub-element of <pr/> so that we can stick
more elements into it if we need to.

>>
>> Do we want to/need to expose the path here? I mean, is user expected to
>> do something with it? We don't expose monitor path anywhere but keep it
>> private (of course we store it in so called status XML which is a
>> persistent storage solely for purpose of reloading the internal state
>> when daemon is restarted).
> 
> In this case, yes.  This is for the case of a global daemon.

I'm thinking if we should just use virDomainChrSourceDefPtr for this. I
mean, if you take look at the vhost-user XML format it looks something
like this:

  <interface type='vhostuser'>
    <mac address='52:54:00:3b:83:1b'/>
    <source type='unix' path='/tmp/vhost2.sock' mode='client'/>
    <model type='virtio'/>
    <driver queues='5'/>
  </interface>

http://libvirt.org/formatdomain.html#elementVhostuser

So we could have:

  <disk>
    <pr>
      <source type='unix' path='/path/to/unix.socket' mode='client'/>
    </pr>
  </disk>

The advantage of this is that we can express other connection modes if
the pr-helper is ever going to support them (although, if you need to
pass FDs around, UNIX socket is the only way for you). Then again, I
think it follows what we have elsewhere. Also, if we go this way, we can
forbid any type='' but unix and mode='server'.


> 
>>>
>>> while to use it with a dedicated daemon
>>>
>>> 	<disk ...>
>>> 	   <pr mode='private'>/path/to/qemu-pr-helper</pr>
>>> 	</disk>

Ah, this breaks my design. I guess

  <disk>
    <pr>
      <source type='unix' path='/path/to/qemu-pr-helper' mode='server'/>
    </pr>
  </disk>

is pure madness, isn't it?

Michal




More information about the libvir-list mailing list