qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RFC: towards systemd socket activation in q-s-d


From: Eric Blake
Subject: RFC: towards systemd socket activation in q-s-d
Date: Fri, 27 Jan 2023 15:26:15 -0600
User-agent: NeoMutt/20220429

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]