Il lun 16 giu 2025, 21:00 Annie Li <annie...@oracle.com> ha scritto: > > My understanding of the qemu document is that it's OK to run one > > helper per QEMU or even per host, but multiple disks shouldn't share > > the same socket since it is possible that multiple commands may be > > sent concurrently. > >> Maybe QEMU has some internal lock that does the right thing and > >> serializes requests? >
Multiple disks can share the socket, the serialization of requests is handled with a mutex in scsi/pr-manager-helper.c. > I'll dig the qemu-pr-helper source code. Any thoughts are welcome :) > > In libvirt, the socket parameter is configured with '-k' option in > qemuProcessStartManagedPRDaemon, > > if (!(cmd = virCommandNewArgList(prHelperPath, > "-k", socketPath, > NULL))) > and qemu-pr-helper creates socket by the following, > saddr = (SocketAddress){ > .type = SOCKET_ADDRESS_TYPE_UNIX, > .u.q_unix.path = socket_path, > }; > server_ioc = qio_channel_socket_new(); > The 'socket_path' is a global pointer and points to the socketPath > parameter configured with '-k'(see above in libvirt). Later, > qemu-pr-helper reads out requests from the socket channel. However, I > don't see the helper specifically processes PR commands sent > concurrently by multiple disks. If multiple disks share the same socket, > there is certainly an issue as what is described in the qemu document. > I'm wondering if I've missed something here? > > Thanks > > Annie > > > Thanks > > > > Annie > > > >> > >> Michal > >> > >>>> Due to this limitation above, only one persistent reservation disk is > >>>> allowed as managed in theory. However, libvirt doesn't throw out any > >>>> error or warning when the VM is booted up with multiple managed > >>>> persistent reservation disks. I am wondering if I've missed something > >>>> here? > >>>> > >>>> For unmanaged persistent reservation disks, libvirt doesn't start the > >>>> pr-helper program for them. It is user's responsibility to start this > >>>> program with customized socket file per disk, but the complexity > >>>> increases with numbers of persistent reservation disks, especially in > >>>> the case of hotplug/hotunplog. Is there any plan to support multiple > >>>> managed persistent reservation disks with separate pr-helper/socket > >>>> file? > >>>> > >>>> Any suggestions/clarifications are greatly appreciated. > >>>> > >>>> Thanks > >>>> > >>>> Annie > >>>> > >