[PATCH 5/7] qemu: fd: Add helpers allowing storing FD set data in status XML

Martin Kletzander mkletzan at redhat.com
Tue Jan 31 16:54:43 UTC 2023


On Tue, Jan 31, 2023 at 05:32:11PM +0100, Peter Krempa wrote:
>Rollback of FD sets passed to qemu is also needed after possible restart
>of libvirtd when we need to serialize the data into status XML. For this
>purpose we need to access the fdset ID once it was passed to qemu and
>potentially re-create a 'qemuFDPass' struct in passed state.
>
>Introduce 'qemuFDPassNewPassed' and 'qemuFDPassIsPassed'.
>
>Signed-off-by: Peter Krempa <pkrempa at redhat.com>
>---
> src/qemu/qemu_fd.c | 41 +++++++++++++++++++++++++++++++++++++++++
> src/qemu/qemu_fd.h |  7 +++++++
> 2 files changed, 48 insertions(+)
>
>diff --git a/src/qemu/qemu_fd.c b/src/qemu/qemu_fd.c
>index ebeeb65505..9eaaa098ee 100644
>--- a/src/qemu/qemu_fd.c
>+++ b/src/qemu/qemu_fd.c
>@@ -96,6 +96,47 @@ qemuFDPassNew(const char *prefix,
> }
>
>
>+/**
>+ * qemuFDPassNewPassed:
>+ * @fdSetID: ID of an FDset which was allready passed to qemu
>+ *
>+ * Create qemuFDPass pointing to an already passed FD. Useful to usw with
>+ * qemuFDPassTransferMonitorRollback, when restoring after restart.
>+ */
>+qemuFDPass *
>+qemuFDPassNewPassed(unsigned int fdSetID)
>+{
>+    qemuFDPass *fdpass = g_new0(qemuFDPass, 1);
>+
>+    fdpass->fdSetID = fdSetID;
>+    fdpass->passed = true;
>+
>+    return fdpass;
>+}
>+
>+
>+/**
>+ * qemuFDPassIsPassed:
>+ * @fdpass: The fd passing helper struct
>+ * @id: when non-NULL filled with the fdset ID
>+ *
>+ * Returns true if @fdpass was passed to qemu. In such case @id is also filled
>+ * with the ID of the fdset if non-NULL.
>+ */
>+bool
>+qemuFDPassIsPassed(qemuFDPass *fdpass,
>+                   unsigned *id)
>+{
>+    if (!fdpass)
>+        return false;

Shouldn't this rather be like this?

if (!fdpass || !fdpass->passed)
     return false;

>+
>+    if (id)
>+        *id = fdpass->fdSetID;
>+
>+    return true;
>+}
>+
>+
> /**
>  * qemuFDPassAddFD:
>  * @fdpass: The fd passing helper struct
>diff --git a/src/qemu/qemu_fd.h b/src/qemu/qemu_fd.h
>index 032b9442ee..cd0ff2c690 100644
>--- a/src/qemu/qemu_fd.h
>+++ b/src/qemu/qemu_fd.h
>@@ -31,6 +31,13 @@ qemuFDPass *
> qemuFDPassNew(const char *prefix,
>               void *dompriv);
>
>+qemuFDPass *
>+qemuFDPassNewPassed(unsigned int fdSetID);
>+
>+bool
>+qemuFDPassIsPassed(qemuFDPass *fdpass,
>+                   unsigned *id);
>+
> void
> qemuFDPassAddFD(qemuFDPass *fdpass,
>                 int *fd,
>-- 
>2.39.1
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20230131/abbce99d/attachment-0001.sig>


More information about the libvir-list mailing list