qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] Re: [PATCH V3] floppy: save and restore DIR register


From: Juan Quintela
Subject: [Qemu-devel] Re: [PATCH V3] floppy: save and restore DIR register
Date: Wed, 06 Apr 2011 11:18:47 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

Jason Wang <address@hidden> wrote:
> We need to keep DIR register unchanged across migration, but currently it
> depends on the media_changed flags from block layer. Since we do not
> save/restore it and the bdrv_open() called in dest node may set the
> media_changed flag when trying to open floppy image, guest driver may think 
> the
> floppy have changed after migration. To fix this, a new filed media_changed in
> FDrive strcutre was introduced in order to save and restore the it from block
> layer through pre_save/post_load callbacks.
>
> Signed-off-by: Jason Wang <address@hidden>
> ---
>
> Changed from V2:
>
> According to Paolo's suggestions, a default_migration_media_changed property 
> was
> added to avoid saving subsections as much as possible. Its was set 
> media_changed
> in pre_load callback and then we can avoid the saving when it was equal to the
> media_changed when migrating the FDrive. Behaviors of elder machine types are
> also kept through compat_props.
>
> Changed from V1:
>
> Check the drive->bs during post_load.
>
>  hw/fdc.c     |   83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
>  hw/pc_piix.c |   48 +++++++++++++++++++++++++++++++++
>  2 files changed, 128 insertions(+), 3 deletions(-)
>

> +static int fdrive_pre_load(void *opaque)

> +static void fdrive_pre_save(void *opaque)

> +static int fdrive_post_load(void *opaque, int version_id)

This three functions can be moved to vmstate_fdrive_media_changed, once
there, it simplifies the "check of drive->bs != NULL.

I really think that we can remove all the
default_migration_media_changed code.

I think that:
- if drive is present: we sent media_changed.
- if drive is not present, we don't sent it.

And that is it, no problem with older versions at all.  If drive is
there, we sent the current media_changed value.  It is just easier to
see what is the default "media_changed" value.  And we only sent it if
it is different.  If we are migrating to 0.14, and media_changed
"changed", migration just fails,  as expected.

Trying to make device working at this level is not going to work.  We
need to fix at the device init devel, and that infrastructure is not
there yet.

Later, Juan.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]