于 2010年12月10日 22:42, Cole Robinson 写道:
On 12/10/2010 12:06 AM, Osier Yang wrote:
> As qemu driver doesn't allow to make changes on persistent
> domain configuration via "attach/detach/update device",
> and all the changes made on the running domain configuration
> should not be persistent across next boot (without the need
> of restarting libvirtd), so:
> 1) Set the running domain def as transient, and restore
> the domain configuration to original configuration when
> shutdown.
> 2) Set the running domain def as updated, and reset it as
> not updated when shutdown.
>
> Also for "live VCPU set", it doesn't change the persistent
> domain configuration, so, we also set the running domain
> def as updated and transient, and restore the original def
> when shutdown.
>
> * src/qemu/qemu_driver.c
> ---
> src/qemu/qemu_driver.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 47 insertions(+), 0 deletions(-)
>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 19ce9a6..a3d87eb 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -4429,11 +4429,18 @@ retry:
> VIR_FREE(priv->vcpupids);
> priv->nvcpupids = 0;
>
> + /* Restore original domain def, so that changes on running domain def
> + * will not be persistent across next boot.
> + */
> if (vm->newDef) {
> virDomainDefFree(vm->def);
> vm->def = vm->newDef;
> vm->def->id = -1;
> vm->newDef = NULL;
> +
> + /* Now set domain def as not updated */
> + if (vm->updated)
> + vm->updated = 0;
> }
>
I think it would be a good idea to break out this whole if() block into
a helper function, since similar changes are needed in LXC, UML, and
test drivers.
Yep, but I want it to be another patch, :-)
Thanks
- Osier