From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:35562) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QorCd-0000cB-5W for qemu-devel@nongnu.org; Thu, 04 Aug 2011 02:14:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QorCc-0006t7-6g for qemu-devel@nongnu.org; Thu, 04 Aug 2011 02:14:43 -0400 Received: from cantor2.suse.de ([195.135.220.15]:45154 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QorCb-0006t1-Ul for qemu-devel@nongnu.org; Thu, 04 Aug 2011 02:14:42 -0400 Message-ID: <4E3A38D1.8040802@suse.de> Date: Thu, 04 Aug 2011 08:14:41 +0200 From: Hannes Reinecke MIME-Version: 1.0 References: <1312376904-16115-1-git-send-email-armbru@redhat.com> <1312376904-16115-17-git-send-email-armbru@redhat.com> In-Reply-To: <1312376904-16115-17-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 16/45] scsi-disk: Track tray locked state 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:07 PM, Markus Armbruster wrote: > We already track it in BlockDriverState. Just like tray open/close > state, we should track it in the device models instead, because it's > device state. > > Signed-off-by: Markus Armbruster > --- > hw/scsi-disk.c | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c > index db72b86..8ca69f2 100644 > --- a/hw/scsi-disk.c > +++ b/hw/scsi-disk.c > @@ -73,6 +73,7 @@ struct SCSIDiskState > char *serial; > SCSISense sense; > bool tray_open; > + bool tray_locked; > }; > Hmm. Shouldn't we use a more generic 'flags' here and have bits for=20 the individual tray states? Feels like a waste to have individual values here. > static int scsi_handle_rw_error(SCSIDiskReq *r, int error, int type); > @@ -678,7 +679,7 @@ static int mode_sense_page(SCSIRequest *req, int pa= ge, uint8_t *p, > p[5] =3D 0xff; /* CD DA, DA accurate, RW supported, > RW corrected, C2 errors, ISRC, > UPC, Bar code */ > - p[6] =3D 0x2d | (bdrv_is_locked(s->bs)? 2 : 0); > + p[6] =3D 0x2d | (s->tray_locked ? 2 : 0); > /* Locking supported, jumper present, eject, tray */ > p[7] =3D 0; /* no volume& mute control, no > changer */ > @@ -896,6 +897,7 @@ static int scsi_disk_emulate_command(SCSIDiskReq *r= , uint8_t *outbuf) > scsi_disk_emulate_start_stop(r); > break; > case ALLOW_MEDIUM_REMOVAL: > + s->tray_locked =3D req->cmd.buf[4]& 1; > bdrv_set_locked(s->bs, req->cmd.buf[4]& 1); > break; > case READ_CAPACITY_10: 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)