Hi,

Reading http://libvirt.org/hooks.html I'm wondering of the following
implication is accurate:

Under "QEMU guest migration" it says

        At the beginning of the migration, the qemu hook script on the
        _destination_ host is executed with the "start" operation.

Above that, under "Specifics" 

        Before a QEMU guest is started, the qemu hook script is called in
        two locations; if either location fails, the guest is not started.
        The first location, since 0.9.0, is before libvirt performs any
        resource labeling.... This is called as:

        /etc/libvirt/hooks/qemu guest_name prepare begin -

        The second location, available Since 0.8.0, occurs after libvirt has
        finished labeling all resources, but has not yet started the guest,
        called as:

        /etc/libvirt/hooks/qemu guest_name start begin -

Is it accurate that under 0.9.x, starting a VM will run the qemu hook script
as both "prepare" and "start," but migrating a VM will only run the qemu
hook script as "start"? Or is the description incomplete with libvirt also
running "prepare" on migration?

Another question, under "Calling libvirt functions from within a hook
script" it says

        DO NOT DO THIS!

        A hook script must not call back into libvirt, as the libvirt daemon
        is already waiting for the script to exit.

        A deadlock is likely to occur.

That makes obvious sense. But does it apply to calling libvirt on a second
system? For example, a script might check the status of VMs on a second
system as a condition of starting a VM on first, using virsh. My guess is
that shouldn't deadlock. But then since during migration "the qemu hook
script on the _destination_ host is executed," if the destination hook
script were in turn to use virsh to check the _source_ host, then in a
roundabout way a libvirt function has been called from within the hook
script. I can't quite picture whether this particular instance would be
dangerous.

If it's accurate that the _destination_ hook script is only called with
"start" and not with "prepare," the second question matters less. The checks
on the second system that I want to do can be limited to the "prepare"
invocation, and so never loop back. 

On the other hand, if the destination hook script _is_ called with "prepare"
during migration, it would be useful to know how to tell if it's being
called as part of a migration.

TIA,
Whit

_______________________________________________
libvirt-users mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvirt-users

Reply via email to