From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55544) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WGAcr-0006am-BT for qemu-devel@nongnu.org; Wed, 19 Feb 2014 12:08:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WGAcm-0001sx-6F for qemu-devel@nongnu.org; Wed, 19 Feb 2014 12:08:01 -0500 Received: from mx1.redhat.com ([209.132.183.28]:21036) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WGAcl-0001sp-UA for qemu-devel@nongnu.org; Wed, 19 Feb 2014 12:07:56 -0500 Message-ID: <5304E4E4.10703@redhat.com> Date: Wed, 19 Feb 2014 18:07:48 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1392827321-10205-1-git-send-email-roland@kernel.org> In-Reply-To: <1392827321-10205-1-git-send-email-roland@kernel.org> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] scsi-disk: Add support for port WWN and index descriptors in VPD page 83h List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Roland Dreier Cc: Roland Dreier , qemu-devel@nongnu.org Il 19/02/2014 17:28, Roland Dreier ha scritto: > From: Roland Dreier > > To make a VM more convincing to my application, it's useful to be able > to add a port WWN and relative target port index to the descriptors > returned for VPD page 83h. Add device properties to allow setting > these, and return them from INQUIRY commands. > > Signed-off-by: Roland Dreier I'm applying to scsi-next, thanks. Paolo > --- > hw/scsi/scsi-disk.c | 26 ++++++++++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c > index a8d0f15ebe61..12013a6768a1 100644 > --- a/hw/scsi/scsi-disk.c > +++ b/hw/scsi/scsi-disk.c > @@ -75,6 +75,8 @@ struct SCSIDiskState > bool media_event; > bool eject_request; > uint64_t wwn; > + uint64_t port_wwn; > + uint16_t port_index; > uint64_t max_unmap_size; > QEMUBH *bh; > char *version; > @@ -617,6 +619,24 @@ static int scsi_disk_emulate_inquiry(SCSIRequest *req, uint8_t *outbuf) > stq_be_p(&outbuf[buflen], s->wwn); > buflen += 8; > } > + > + if (s->port_wwn) { > + outbuf[buflen++] = 0x61; // SAS / Binary > + outbuf[buflen++] = 0x93; // PIV / Target port / NAA > + outbuf[buflen++] = 0; // reserved > + outbuf[buflen++] = 8; > + stq_be_p(&outbuf[buflen], s->port_wwn); > + buflen += 8; > + } > + > + if (s->port_index) { > + outbuf[buflen++] = 0x61; // SAS / Binary > + outbuf[buflen++] = 0x94; // PIV / Target port / relative target port > + outbuf[buflen++] = 0; // reserved > + outbuf[buflen++] = 4; > + stw_be_p(&outbuf[buflen + 2], s->port_index); > + buflen += 4; > + } > break; > } > case 0xb0: /* block limits */ > @@ -2536,6 +2556,8 @@ static Property scsi_hd_properties[] = { > DEFINE_PROP_BIT("dpofua", SCSIDiskState, features, > SCSI_DISK_F_DPOFUA, false), > DEFINE_PROP_HEX64("wwn", SCSIDiskState, wwn, 0), > + DEFINE_PROP_HEX64("port_wwn", SCSIDiskState, port_wwn, 0), > + DEFINE_PROP_UINT16("port_index", SCSIDiskState, port_index, 0), > DEFINE_PROP_UINT64("max_unmap_size", SCSIDiskState, max_unmap_size, > DEFAULT_MAX_UNMAP_SIZE), > DEFINE_BLOCK_CHS_PROPERTIES(SCSIDiskState, qdev.conf), > @@ -2584,6 +2606,8 @@ static const TypeInfo scsi_hd_info = { > static Property scsi_cd_properties[] = { > DEFINE_SCSI_DISK_PROPERTIES(), > DEFINE_PROP_HEX64("wwn", SCSIDiskState, wwn, 0), > + DEFINE_PROP_HEX64("port_wwn", SCSIDiskState, port_wwn, 0), > + DEFINE_PROP_UINT16("port_index", SCSIDiskState, port_index, 0), > DEFINE_PROP_END_OF_LIST(), > }; > > @@ -2647,6 +2671,8 @@ static Property scsi_disk_properties[] = { > DEFINE_PROP_BIT("dpofua", SCSIDiskState, features, > SCSI_DISK_F_DPOFUA, false), > DEFINE_PROP_HEX64("wwn", SCSIDiskState, wwn, 0), > + DEFINE_PROP_HEX64("port_wwn", SCSIDiskState, port_wwn, 0), > + DEFINE_PROP_UINT16("port_index", SCSIDiskState, port_index, 0), > DEFINE_PROP_UINT64("max_unmap_size", SCSIDiskState, max_unmap_size, > DEFAULT_MAX_UNMAP_SIZE), > DEFINE_PROP_END_OF_LIST(), >