In https://bugzilla.redhat.com/show_bug.cgi?id=2055229, the question was raised on how to make qemu-storage-daemon sufficiently powerful to be a full-blown replacement to qemu-nbd. One of the features still lacking is the ability to do systemd socket activation (qemu-nbd does this, qemu-storage-daemon needs a way to do it).
But that bug further noted that systemd supports LISTEN_FDNAMES to supply names to a passed-in fd (right now, qemu-nbd does not use names, but merely expects one fd in LISTEN_FDS). Dan had the idea that it would be nice to write a systemd file that passes in a socket name for a QMP socket, as in: [Socket] ListenStream=/var/run/myapp/qsd.qmp FileDescriptorName=qmp Service=myapp-qsd.service and further notes that QAPI SocketAddressType supports @fd which is a name in QMP (a previously-added fd passed through the older 'getfd' command, rather than the newer 'add-fd' command), but an integer on the command line. With LISTEN_FDNAMES, we could mix systemd socket activation with named fds for any command line usage that already supports SocketAddressType (not limited to just q-s-d usage). I'm at a point where I can take a shot at implementing this, but want some feedback on whether it is better to try to shoehorn a generic solution into the existing @fd member of the SocketAddressType union, or whether it would be better to add yet another union member @systemd-fd or some similar name to make it explicit when a command line parameter wants to refer to an fd being passed through systemd socket activation LISTEN_FDS and friends. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
