Disk extend during migration

Vojtech Juranek vjuranek at redhat.com
Mon Aug 2 13:34:52 UTC 2021


On Monday, 2 August 2021 14:30:05 CEST Peter Krempa wrote:
> On Mon, Aug 02, 2021 at 14:20:44 +0200, Vojtech Juranek wrote:
> > Hi,
> > as a follow-up of BZ #1883399 [1], we are reviewing vdsm VM migration
> > flows and solve few follow-up bugs, e.g. BZ #1981079 [2]. I have couple
> > of questions related to libvirt:
> > 
> > * if we run disk extend during migration, it can happen that migration
> > finishes sooner than disk extend. In such case we will try to set disk
> > threshold on already stopped VM (we handle libvirt event that VM was
> > stopper, but due to Python GIL there can be a delay between obtaining
> > appropriate signal from libvirt  and handling it). In such case we get
> > libvirt
> > VIR_ERR_OPERATION_INVALID when setting disk threshold. 

actually I was wrong here and the issue is actually caused by delay libvirt 
setBlockThreshold() call, form vdsm log:

2021-08-02 09:06:01,918-0400 WARN  (mailbox-hsm/3) [virt.vm] (vmId='2dad9038-3e3a-4b5e-8d20-b0da37d9ef79') setting theshold using dom <vdsm.virt.virdomain.Notifying object at 0x7fd06610df28> (drivemonitor:122)

[...]

2021-08-02 09:06:03,967-0400 WARN  (libvirt/events) [virt.vm] (vmId='2dad9038-3e3a-4b5e-8d20-b0da37d9ef79') libvirt event Stopped detail 3 opaque None (vm:5657)

[...]

2021-08-02 09:06:03,969-0400 WARN  (mailbox-hsm/3) [virt.vm] (vmId='2dad9038-3e3a-4b5e-8d20-b0da37d9ef79') Domain not connected, skipping set block threshold for drive 'sdc' (drivemonitor:133)


so it took about 2 second to libvirt setBlockThreshold() call to return and in meantime
migration was finished and we get VIR_ERR_OPERATION_INVALID error from setBlockThreshold() call.

What is the reason for this delay? Is this operation intentionally delayed until
migration finishes?

I posted relevant libvirt debug log on

https://pastebin.com/YkdKYKM5



> > Is it safe to
> > catch this exception and ignore it or it's thrown for various reasons and
> > the root cause can be something else than stopped VM?
> 
> The API to set the block trheshold level can return the following errors
> including cases when it can happen:
> 
> VIR_ERR_OPERATION_UNSUPPORTED <- unlikely new qemu supports it
> VIR_ERR_INVALID_ARG <- disk was not found in VM definition
> VIR_ERR_INTERNAL_ERROR <- on error from qemu
> 
> Thus VIR_ERR_OPERATION_INVALID seems to be safe to ignore in your
> specific case, while not ignoring others can be used to catch problems.

thanks for your answer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20210802/22b3aa2c/attachment.sig>


More information about the libvirt-users mailing list