When using domxml-to-native, we must generate CLI args that can be used
in a standalone scenario. This means no FD passing can be used. To
achieve this we must clear the QEMU_CAPS_CHARDEV_FD_PASS capability bit.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
src/qemu/qemu_process.c | 5 +++++
src/qemu/qemu_process.h | 2 ++
2 files changed, 7 insertions(+)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index ac32dafcbe..40d35cbe6b 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -5124,6 +5124,9 @@ qemuProcessInit(virQEMUDriverPtr driver,
vm->def->os.machine)))
goto cleanup;
+ if (flags & VIR_QEMU_PROCESS_START_STANDALONE)
+ virQEMUCapsClear(priv->qemuCaps, QEMU_CAPS_CHARDEV_FD_PASS);
+
if (qemuDomainUpdateCPU(vm, updatedCPU, &origCPU) < 0)
goto cleanup;
@@ -6632,6 +6635,8 @@ qemuProcessCreatePretendCmd(virQEMUDriverPtr driver,
flags |= VIR_QEMU_PROCESS_START_PRETEND;
flags |= VIR_QEMU_PROCESS_START_NEW;
+ if (standalone)
+ flags |= VIR_QEMU_PROCESS_START_STANDALONE;
if (qemuProcessInit(driver, vm, NULL, QEMU_ASYNC_JOB_NONE,
!!migrateURI, flags) < 0)
diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h
index 531c2a0cc7..07ce3a9915 100644
--- a/src/qemu/qemu_process.h
+++ b/src/qemu/qemu_process.h
@@ -81,6 +81,8 @@ typedef enum {
VIR_QEMU_PROCESS_START_PRETEND = 1 << 3,
VIR_QEMU_PROCESS_START_NEW = 1 << 4, /* internal, new VM is starting */
VIR_QEMU_PROCESS_START_GEN_VMID = 1 << 5, /* Generate a new VMID */
+ VIR_QEMU_PROCESS_START_STANDALONE = 1 << 6, /* Require CLI args to be usable standalone,
+ ie no FD passing and the like */
} qemuProcessStartFlags;
int qemuProcessStart(virConnectPtr conn,
--
2.17.1
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On 06/28/2018 06:50 AM, Daniel P. Berrangé wrote: > When using domxml-to-native, we must generate CLI args that can be used > in a standalone scenario. This means no FD passing can be used. To > achieve this we must clear the QEMU_CAPS_CHARDEV_FD_PASS capability bit. > > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> > --- > src/qemu/qemu_process.c | 5 +++++ > src/qemu/qemu_process.h | 2 ++ > 2 files changed, 7 insertions(+) > > diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c > index ac32dafcbe..40d35cbe6b 100644 > --- a/src/qemu/qemu_process.c > +++ b/src/qemu/qemu_process.c > @@ -5124,6 +5124,9 @@ qemuProcessInit(virQEMUDriverPtr driver, > vm->def->os.machine))) > goto cleanup; > > + if (flags & VIR_QEMU_PROCESS_START_STANDALONE) > + virQEMUCapsClear(priv->qemuCaps, QEMU_CAPS_CHARDEV_FD_PASS); > + Is priv->qemuCaps a transient copy, or do you need counterpart code to reinstate the capability as needed after the current API call is completed? > if (qemuDomainUpdateCPU(vm, updatedCPU, &origCPU) < 0) > goto cleanup; > > @@ -6632,6 +6635,8 @@ qemuProcessCreatePretendCmd(virQEMUDriverPtr driver, > > flags |= VIR_QEMU_PROCESS_START_PRETEND; > flags |= VIR_QEMU_PROCESS_START_NEW; > + if (standalone) > + flags |= VIR_QEMU_PROCESS_START_STANDALONE; > > if (qemuProcessInit(driver, vm, NULL, QEMU_ASYNC_JOB_NONE, > !!migrateURI, flags) < 0) > diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h > index 531c2a0cc7..07ce3a9915 100644 > --- a/src/qemu/qemu_process.h > +++ b/src/qemu/qemu_process.h > @@ -81,6 +81,8 @@ typedef enum { > VIR_QEMU_PROCESS_START_PRETEND = 1 << 3, > VIR_QEMU_PROCESS_START_NEW = 1 << 4, /* internal, new VM is starting */ > VIR_QEMU_PROCESS_START_GEN_VMID = 1 << 5, /* Generate a new VMID */ > + VIR_QEMU_PROCESS_START_STANDALONE = 1 << 6, /* Require CLI args to be usable standalone, > + ie no FD passing and the like */ > } qemuProcessStartFlags; > > int qemuProcessStart(virConnectPtr conn, > -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
On Thu, Jun 28, 2018 at 07:42:33AM -0500, Eric Blake wrote: > On 06/28/2018 06:50 AM, Daniel P. Berrangé wrote: > > When using domxml-to-native, we must generate CLI args that can be used > > in a standalone scenario. This means no FD passing can be used. To > > achieve this we must clear the QEMU_CAPS_CHARDEV_FD_PASS capability bit. > > > > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> > > --- > > src/qemu/qemu_process.c | 5 +++++ > > src/qemu/qemu_process.h | 2 ++ > > 2 files changed, 7 insertions(+) > > > > diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c > > index ac32dafcbe..40d35cbe6b 100644 > > --- a/src/qemu/qemu_process.c > > +++ b/src/qemu/qemu_process.c > > @@ -5124,6 +5124,9 @@ qemuProcessInit(virQEMUDriverPtr driver, > > vm->def->os.machine))) > > goto cleanup; > > + if (flags & VIR_QEMU_PROCESS_START_STANDALONE) > > + virQEMUCapsClear(priv->qemuCaps, QEMU_CAPS_CHARDEV_FD_PASS); > > + > > Is priv->qemuCaps a transient copy, or do you need counterpart code to > reinstate the capability as needed after the current API call is completed? Yes, you can't see it in the diffstat, but one line higher up we call virQEMUCapsCacheLookupCopy() which deep clones the caps. This ensures the caps refects the QEMU capabilities at the time it was launched, even if the binary on disk then changes. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
On 06/28/2018 07:50 AM, Daniel P. Berrangé wrote: > When using domxml-to-native, we must generate CLI args that can be used > in a standalone scenario. This means no FD passing can be used. To > achieve this we must clear the QEMU_CAPS_CHARDEV_FD_PASS capability bit. > > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> > --- > src/qemu/qemu_process.c | 5 +++++ > src/qemu/qemu_process.h | 2 ++ > 2 files changed, 7 insertions(+) > Reviewed-by: John Ferlan <jferlan@redhat.com> John -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2025 Red Hat, Inc.