Re: [PATCH] qemuProcessSetupDisksTransientHotplug: Add checking set-action capability

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

 



On Thu, Aug 26, 2021 at 04:11:15PM +0200, Ján Tomko wrote:
> On a Wednesday in 2021, Masayoshi Mizuma wrote:
> > From: Masayoshi Mizuma <m.mizuma@xxxxxxxxxxxxxx>
> > 
> > The VM is terminated abnormally when <transient shareBacking='yes'/>
> > is set to the disk option and the qemu doesn't have set-action capability.
> > 
> >  # virsh start guest01
> >  error: Failed to start domain 'guest01'
> >  error: internal error: qemu unexpectedly closed the monitor
> > 
> >  #
> > 
> > Add checking the capability before system_reset QMP command is sent
> > so that the VM can stop correctly when the qemu doesn't have the cap.
> > 
> 
> From the commit message it's hard to see the connection between missing
> QEMU_CAPS_SET_ACTION and not calling the system_reset command, since
> the command was present long before set-action.
> 
> Is this the same issue?
> https://listman.redhat.com/archives/libvir-list/2021-July/msg00119.html

I'm sorry I didn't make it clear enough. It's a similar issue, but it isn't
the same issue. This patch tried to fix a new issue which was introduced
the lifecycle event series.

> 
> If I understand correctly, even after Peter's lifecycle event series
> we cannot support the combination of:
> * -no-reboot on the command line (which is still done for QEMUs without
>    SET_ACTION, i.e. older than 6.0)
> * transient shareBacking disks
> 
> In that case, this can be rejected much sooner in qemuValidate, before
> even trying to start the QEMU process.

That seems a great idea, thanks! I'll post the v2 to add check in the validation.
Like as follows:

diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index 8906aa52d9..47f12944aa 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -3033,6 +3033,13 @@ qemuValidateDomainDeviceDefDiskTransient(const virDomainDiskDef *disk,
     }

     if (disk->transientShareBacking == VIR_TRISTATE_BOOL_YES) {
+        if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SET_ACTION)) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                       _("transiend disk backing image sharing isn't supported by this QEMU binary (%s)"),
+                       disk->dst);
+            return -1;
+        }
+
         /* sharing the backing file requires hotplug of the disk in the qemu driver */
         switch (disk->bus) {
         case VIR_DOMAIN_DISK_BUS_USB:
---

- Masa

> 
> > Signed-off-by: Masayoshi Mizuma <m.mizuma@xxxxxxxxxxxxxx>
> > ---
> > src/qemu/qemu_process.c | 3 +++
> > 1 file changed, 3 insertions(+)
> > 
> > diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> > index 3b4af61bf8..4bedd04679 100644
> > --- a/src/qemu/qemu_process.c
> > +++ b/src/qemu/qemu_process.c
> > @@ -7010,6 +7010,9 @@ qemuProcessSetupDisksTransientHotplug(virDomainObj *vm,
> >     if (hasHotpluggedDisk) {
> >         int rc;
> > 
> > +        if (!(virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_SET_ACTION)))
> 
> The error message is missing.
> 
> Jano
> 
> > +            return -1;
> > +
> >         if (qemuDomainObjEnterMonitorAsync(priv->driver, vm, asyncJob) < 0)
> >             return -1;
> > 
> > -- 
> > 2.27.0
> > 





[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux