[Sheepdog] VDI locking, migration and qemu

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Fri Nov 27 08:53:57 CET 2009


On Fri, Nov 27, 2009 at 2:48 AM, Chris Webb <chris at arachsys.com> wrote:
> MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp> writes:
>
>> However, bdrv_release doesn't called when we stop a VM using shutdown command or
>> a signal. I think bdrv_release_all should be called in the exit routine
>> (e.g. at the end of main()).
>
> Hi. You're quite right. There's a bdrv_close_all() in kvm_main_loop that
> needs a bdrv_release_all before it. I note that the non-kvm main loop
> doesn't have a bdrv_close_all() either, just exiting without closing the
> block devices. I've added both a bdrv_release_all and a bdrv_close_all() for
> this case. (This presumably means that sheepdog used to leak locks following
> a shutdown if -no-kvm was given on the command line?)

Yes, locks are not released if kvm is not enabled.
A bdrv_close_all() is what we introduced, and we forgot to add it to
non-kvm main loop.
Your patch looks working correctly, thanks!

> I also forget to correctly wrap qemu-nbd with claim and release calls, so
> I've done this in the next version of the patch too.

How about qemu-img/qemu-io?
These utilities also write data to VM images.
bdrv_claim/release need to be added to qemu-img.c and qemu-io.c, right?

Regards,

MORITA, Kazutaka



More information about the sheepdog mailing list