From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:33583) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QorKq-00032c-2t for qemu-devel@nongnu.org; Thu, 04 Aug 2011 02:23:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QorKo-0008WT-Qh for qemu-devel@nongnu.org; Thu, 04 Aug 2011 02:23:12 -0400 Received: from cantor2.suse.de ([195.135.220.15]:45493 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QorKo-0008WO-DP for qemu-devel@nongnu.org; Thu, 04 Aug 2011 02:23:10 -0400 Message-ID: <4E3A3ACD.5070709@suse.de> Date: Thu, 04 Aug 2011 08:23:09 +0200 From: Hannes Reinecke MIME-Version: 1.0 References: <1312376904-16115-1-git-send-email-armbru@redhat.com> <1312376904-16115-28-git-send-email-armbru@redhat.com> In-Reply-To: <1312376904-16115-28-git-send-email-armbru@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v2 27/45] scsi-disk: Preserve tray state on migration List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster Cc: kwolf@redhat.com, quintela@redhat.com, stefano.stabellini@eu.citrix.com, qemu-devel@nongnu.org, lcapitulino@redhat.com, amit.shah@redhat.com, hch@lst.de On 08/03/2011 03:08 PM, Markus Armbruster wrote: > Breaks migration of qdevs "scsi-cd" and legacy "scsi-disk" to older > versions. We normally use subsections to avoid that. Not possible > here, because we don't have a section to begin with. Too bad. > > Signed-off-by: Markus Armbruster > --- > hw/scsi-disk.c | 35 +++++++++++++++++++++++++++++++++++ > 1 files changed, 35 insertions(+), 0 deletions(-) > > diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c > index f223de6..04e0a77 100644 > --- a/hw/scsi-disk.c > +++ b/hw/scsi-disk.c > @@ -1301,6 +1301,39 @@ static int scsi_disk_initfn(SCSIDevice *dev) > return scsi_initfn(dev, scsi_type); > } > > +static int scsi_cd_post_load(void *opaque, int version_id) > +{ > + SCSIDiskState *s =3D opaque; > + > + bdrv_eject(s->bs, s->tray_open); > + bdrv_lock_medium(s->bs, s->tray_locked); > + return 0; > +} > + > +static const VMStateDescription vmstate_scsi_cd =3D { > + .name =3D "scsi-cd", > + .version_id =3D 0, > + .minimum_version_id =3D 0, > + .post_load =3D scsi_cd_post_load, > + .fields =3D (VMStateField[]) { > + VMSTATE_BOOL(tray_open, SCSIDiskState), > + VMSTATE_BOOL(tray_locked, SCSIDiskState), > + VMSTATE_END_OF_LIST() > + } > +}; > + > +static const VMStateDescription vmstate_scsi_disk =3D { > + .name =3D "scsi-disk", > + .version_id =3D 0, > + .minimum_version_id =3D 0, > + .post_load =3D scsi_cd_post_load, > + .fields =3D (VMStateField[]) { > + VMSTATE_BOOL(tray_open, SCSIDiskState), > + VMSTATE_BOOL(tray_locked, SCSIDiskState), > + VMSTATE_END_OF_LIST() > + } > +}; > + And again; if we had just one 'flags' value we would have to save=20 only one variable. And wouldn't need to touch this one for future=20 states. > #define DEFINE_SCSI_DISK_PROPERTIES() \ > DEFINE_BLOCK_PROPERTIES(SCSIDiskState, qdev.conf), \ > DEFINE_PROP_STRING("ver", SCSIDiskState, version), \ > @@ -1333,6 +1366,7 @@ static SCSIDeviceInfo scsi_disk_info[] =3D { > .qdev.fw_name =3D "disk", > .qdev.desc =3D "virtual SCSI CD-ROM", > .qdev.size =3D sizeof(SCSIDiskState), > + .qdev.vmsd =3D&vmstate_scsi_cd, > .qdev.reset =3D scsi_disk_reset, > .init =3D scsi_cd_initfn, > .destroy =3D scsi_destroy, > @@ -1353,6 +1387,7 @@ static SCSIDeviceInfo scsi_disk_info[] =3D { > .qdev.fw_name =3D "disk", > .qdev.desc =3D "virtual SCSI disk or CD-ROM (legacy)", > .qdev.size =3D sizeof(SCSIDiskState), > + .qdev.vmsd =3D&vmstate_scsi_disk, > .qdev.reset =3D scsi_disk_reset, > .init =3D scsi_disk_initfn, > .destroy =3D scsi_destroy, Cheers, Hannes --=20 Dr. Hannes Reinecke zSeries & Storage hare@suse.de +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg GF: J. Hawn, J. Guild, F. Imend=F6rffer, HRB 16746 (AG N=FCrnberg)