From: "K. Y. Srinivasan" <kys@microsoft.com>
To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
devel@linuxdriverproject.org, virtualization@lists.osdl.org,
ohering@suse.com, jbottomley@parallels.com, hch@infradead.org,
linux-scsi@vger.kernel.org
Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Subject: [PATCH RESEND 1/2] Drivers: scsi: storvsc: Set the scsi result correctly when SRB status is INVALID
Date: Sun, 18 Mar 2012 17:12:42 -0700 [thread overview]
Message-ID: <1332115963-26855-1-git-send-email-kys@microsoft.com> (raw)
In-Reply-To: <1332115915-26805-1-git-send-email-kys@microsoft.com>
Currently Windows hosts only support a subset of scsi commands and for commands
that are not supported, the host returns a generic SRB failure status.
However, they have agreed to change the return value to indicate that
the command is not supported. In preparation for that, handle the
SRB_STATUS_INVALID_REQUEST return value correctly.
I would like to thank Jeff Garzik <jgpobox@gmail.com> and
Douglas Gilbert <dgilbert@interlog.com> for suggesting the correct approach
here.
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
---
drivers/scsi/storvsc_drv.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 44c7a48..018c363 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -202,6 +202,7 @@ enum storvsc_request_type {
#define SRB_STATUS_INVALID_LUN 0x20
#define SRB_STATUS_SUCCESS 0x01
#define SRB_STATUS_ERROR 0x04
+#define SRB_STATUS_INVALID_REQUEST 0x06
/*
* This is the end of Protocol specific defines.
@@ -779,6 +780,17 @@ static void storvsc_command_completion(struct storvsc_cmd_request *cmd_request)
}
/*
+ * If the host returns with an invalid request, set
+ * the scsi command result correctly.
+ */
+ if (vm_srb->srb_status == SRB_STATUS_INVALID_REQUEST) {
+ scmnd->result = ((DRIVER_SENSE << 24) |
+ SAM_STAT_CHECK_CONDITION);
+ scsi_build_sense_buffer(0, scmnd->sense_buffer,
+ ILLEGAL_REQUEST, 0x20, 0);
+ }
+
+ /*
* If there is an error; offline the device since all
* error recovery strategies would have already been
* deployed on the host side.
--
1.7.4.1
next prev parent reply other threads:[~2012-03-19 0:12 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-19 0:11 [PATCH RESEND 0000/0002] drivers: scsi: storvsc K. Y. Srinivasan
2012-03-19 0:12 ` K. Y. Srinivasan [this message]
2012-03-19 0:12 ` [PATCH RESEND 2/2] Drivers: scsi: storvsc: Don't pass ATA_16 command to the host K. Y. Srinivasan
2012-03-19 16:12 ` [PATCH RESEND 1/2] Drivers: scsi: storvsc: Set the scsi result correctly when SRB status is INVALID James Bottomley
2012-03-19 16:50 ` KY Srinivasan
2012-03-19 16:50 ` KY Srinivasan
2012-03-19 22:40 ` James Bottomley
2012-03-19 22:52 ` KY Srinivasan
2012-03-19 22:52 ` KY Srinivasan
2012-03-20 8:51 ` James Bottomley
2012-03-20 14:42 ` KY Srinivasan
2012-03-20 14:42 ` KY Srinivasan
2012-03-23 15:50 ` KY Srinivasan
2012-03-23 15:50 ` KY Srinivasan
2012-03-26 8:16 ` James Bottomley
2012-03-27 15:32 ` KY Srinivasan
2012-03-27 15:32 ` KY Srinivasan
2012-03-29 8:02 ` James Bottomley
2012-03-29 14:50 ` KY Srinivasan
2012-03-29 14:50 ` KY Srinivasan
2012-03-19 22:41 ` James Bottomley
-- strict thread matches above, loose matches on Subject: below --
2012-03-18 19:59 [PATCH RESEND 0000/0002] drivers: scsi: storvsc K. Y. Srinivasan
2012-03-18 20:00 ` [PATCH RESEND 1/2] Drivers: scsi: storvsc: Set the scsi result correctly when SRB status is INVALID K. Y. Srinivasan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1332115963-26855-1-git-send-email-kys@microsoft.com \
--to=kys@microsoft.com \
--cc=devel@linuxdriverproject.org \
--cc=gregkh@linuxfoundation.org \
--cc=hch@infradead.org \
--cc=jbottomley@parallels.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=ohering@suse.com \
--cc=virtualization@lists.osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.