From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:54870) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QTcIv-00064p-0s for qemu-devel@nongnu.org; Mon, 06 Jun 2011 12:05:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QTcIs-0000RC-AS for qemu-devel@nongnu.org; Mon, 06 Jun 2011 12:05:23 -0400 Received: from mail-px0-f174.google.com ([209.85.212.174]:49894) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QTcIr-0000F3-VE for qemu-devel@nongnu.org; Mon, 06 Jun 2011 12:05:22 -0400 Received: by mail-px0-f174.google.com with SMTP id 15so947212pxi.33 for ; Mon, 06 Jun 2011 09:05:21 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Mon, 6 Jun 2011 18:04:22 +0200 Message-Id: <1307376262-1255-14-git-send-email-pbonzini@redhat.com> In-Reply-To: <1307376262-1255-1-git-send-email-pbonzini@redhat.com> References: <1307376262-1255-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [RFC PATCH v2 13/13] scsi: delete handling of REPORT LUNS and unknown LUNs outside scsi-target List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This removes scsi-disk and scsi-generic's handling of requests that should be entirely within the realm of the target. Signed-off-by: Paolo Bonzini --- hw/scsi-disk.c | 23 +---------------------- hw/scsi-generic.c | 34 +++------------------------------- 2 files changed, 4 insertions(+), 53 deletions(-) diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c index 0a4fbee..60e96a0 100644 --- a/hw/scsi-disk.c +++ b/hw/scsi-disk.c @@ -517,12 +517,6 @@ static int scsi_disk_emulate_inquiry(SCSIRequest *req, uint8_t *outbuf) buflen = SCSI_MAX_INQUIRY_LEN; memset(outbuf, 0, buflen); - - if (req->lun != s->qdev.lun) { - outbuf[0] = 0x7f; /* LUN not supported */ - return buflen; - } - if (s->drive_kind == SCSI_CD) { outbuf[0] = 5; outbuf[1] = 0x80; @@ -956,13 +950,6 @@ static int scsi_disk_emulate_command(SCSIDiskReq *r, uint8_t *outbuf) } DPRINTF("Unsupported Service Action In\n"); goto illegal_request; - case REPORT_LUNS: - if (req->cmd.xfer < 16) - goto illegal_request; - memset(outbuf, 0, 16); - outbuf[3] = 8; - buflen = 16; - break; case VERIFY: break; case REZERO_UNIT: @@ -1024,15 +1011,7 @@ static int32_t scsi_send_command(SCSIRequest *req, uint8_t *buf) } #endif - if (req->lun != s->qdev.lun) { - /* Only one LUN supported. */ - DPRINTF("Unimplemented LUN %d\n", req->lun); - if (command != REQUEST_SENSE && command != INQUIRY) { - scsi_command_complete(r, CHECK_CONDITION, - SENSE_CODE(LUN_NOT_SUPPORTED)); - return 0; - } - } + assert(req->lun == s->qdev.lun); switch (command) { case TEST_UNIT_READY: case REQUEST_SENSE: diff --git a/hw/scsi-generic.c b/hw/scsi-generic.c index e1f9d0e..5912a3d 100644 --- a/hw/scsi-generic.c +++ b/hw/scsi-generic.c @@ -231,11 +231,9 @@ static void scsi_read_data(SCSIRequest *req) return; } - switch (r->req.cmd.buf[0]) { - case REQUEST_SENSE: - if (!(s->driver_status & SG_ERR_DRIVER_SENSE)) { - break; - } + assert(req->lun == s->qdev.lun); + if (r->req.cmd.buf[0] == REQUEST_SENSE && + !(s->driver_status & SG_ERR_DRIVER_SENSE)) { s->senselen = MIN(r->len, s->senselen); memcpy(r->buf, s->sensebuf, s->senselen); r->io_header.driver_status = 0; @@ -250,32 +248,6 @@ static void scsi_read_data(SCSIRequest *req) /* Clear sensebuf after REQUEST_SENSE */ scsi_clear_sense(s); return; - - case REPORT_LUNS: - assert(!s->qdev.lun); - if (r->req.cmd.xfer < 16) { - scsi_command_complete(r, -EINVAL); - return; - } - r->io_header.driver_status = 0; - r->io_header.status = 0; - r->io_header.dxfer_len = 16; - r->len = -1; - r->buf[3] = 8; - scsi_req_data(&r->req, 16); - scsi_command_complete(r, 0); - return; - - case INQUIRY: - if (req->lun != s->qdev.lun) { - if (r->req.cmd.xfer < 1) { - scsi_command_complete(r, -EINVAL); - return; - } - r->buf[0] = 0x7f; - return; - } - break; } ret = execute_command(s->bs, r, SG_DXFER_FROM_DEV, scsi_read_complete); -- 1.7.4.4