New: Don't Modify the scsi subcmd as LUN value when using VENDOR cmd
https://bugzilla.kernel.org/show_bug.cgi?id=62811
Bug ID: 62811
Summary: Don't Modify the scsi subcmd as LUN value when using
VENDOR cmd
Product: SCSI Drivers
Version: 2.5
Kernel Version: 3.12rc4
Hardware: All
OS: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: Other
Assignee: [email protected]
Reporter: [email protected]
Regression: NoUsing the VENDOR scsi cmd, We should not to modify the cmd->cmnd [1] as lun value. it is useful as a subcmd for USB device, such as STEC usb device.
drivers/scsi/scsi.c 2013-09-12 01:59:24.000000000 -0400 renamed from drivers/scsi/scsi.c_orig 2013-09-12 01:51:45.000000000 -0400 +9 -1
@@ -83,6 +83,9 @@ static void scsi_done(struct scsi_cmnd * /* Do not call reset on error if we just did a reset within 15 sec. */ #define MIN_RESET_PERIOD (15*HZ) +/* Define a SCSI command VENDOR to get device info For STEC USB devcie */ +#define STECUSB_VENDOR_CMD_CODE 0xD8 + /* * Note - the initial logging level can be set here to log events at boot time. * After the system is up, you may enable logging via the /proc interface.
@@ -700,8 +703,13 @@ int scsi_dispatch_cmd(struct scsi_cmnd * */ if (cmd->device->scsi_level <= SCSI_2 && cmd->device->scsi_level != SCSI_UNKNOWN) { - cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) | - (cmd->device->lun << 5 & 0xe0); + /* + * Don't Modify the cmnd[1] as LUN value when it is a VENDOR CMD + * for STEC disk. + */ + if (STECUSB_VENDOR_CMD_CODE != cmd->cmnd[0]) + cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) | + (cmd->device->lun << 5 & 0xe0); }
/*
Signature · 2 lines
You are receiving this mail because: You are watching the assignee of the bug.
James Bottomley
maintainerQuoted 39 lines · On Thu, 2013-10-10 at 17:22 +0000, [email protected] wrote:
https://bugzilla.kernel.org/show_bug.cgi?id=62811
Bug ID: 62811 Summary: Don't Modify the scsi subcmd as LUN value when using VENDOR cmd Product: SCSI Drivers Version: 2.5 Kernel Version: 3.12rc4 Hardware: All OS: Linux Tree: Mainline Status: NEW Severity: normal Priority: P1 Component: Other Assignee: [email protected] Reporter: [email protected] Regression: NoUsing the VENDOR scsi cmd, We should not to modify the
cmd->cmnd[1] as lun value. it is useful as a subcmd for USB device, such as STEC usb device.Signed-off-by Yi Li <[email protected]>drivers/scsi/scsi.c 2013-09-12 01:59:24.000000000 -0400 renamed from drivers/scsi/scsi.c_orig 2013-09-12 01:51:45.000000000 -0400 +3
-0@@ -83,6 +83,9 @@ static void scsi_done(struct scsi_cmnd * /* Do not call reset on error if we just did a reset within 15 sec. */ #define MIN_RESET_PERIOD (15*HZ) +/* Define a SCSI command VENDOR to get device info For STEC USB devcie */ +#define STECUSB_VENDOR_CMD_CODE 0xD8 + /* * Note - the initial logging level can be set here to log events at boot time. * After the system is up, you may enable logging via the /proc interface.@@ -700,8 +703,13 @@ int scsi_dispatch_cmd(struct scsi_cmnd * */ if (cmd->device->scsi_level <= SCSI_2 &&
drivers/scsi/scsi.c 2013-09-12 01:59:24.000000000 -0400 int scsi_dispatch_cmd(struct scsi_cmnd * · line 713
Quoted 10 lines
drivers/scsi/scsi.c 2013-09-12 01:59:24.000000000 -0400 renamed from drivers/scsi/scsi.c_orig 2013-09-12 01:51:45.000000000 -0400 +6
-1cmd->device->scsi_level != SCSI_UNKNOWN) { - cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) | - (cmd->device->lun << 5 & 0xe0); + /* + * Don't Modify the cmnd[1] as LUN value when it is a VENDOR CMD + * for STEC disk. + */ + if (STECUSB_VENDOR_CMD_CODE != cmd->cmnd[0]) + cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) | + (cmd->device->lun << 5 & 0xe0);
This patch is mangled, so it can't be applied (I'm guessing by bugzilla, so next time just send directly to the SCSI mailing list).
The patch isn't the way we do things: if there's a problem, we usually add a quirk (either in USB or SCSI) and a flag.
However, looking at what you're trying to do, it seems that your device is reporting SCSI_2, which mandates in the standard the setting of the LUN in the first byte of the CDB. What are these vendor commands you're trying to send that are out of spec? Should your device be reporting compliance with a SCSI level > 2?
James
Quoted 1 line · James Bottomley <James.Bottomley <at> HansenPartnership.com> writes:
Quoted 1 line
What are these vendor commands you'retrying to send that are out of spec?
---it is STEC Vendor Command code 0xA5
Quoted 1 line
Quoted 1 line
Quoted 1 line
Should your device be reporting compliance with a SCSI level > 2?
---it is a usb flash device, i will try do the test.
Thanks for your advice.
[Bug 62811] Don't Modify the scsi subcmd as LUN value when using VENDOR cmd
In reply to [email protected]https://bugzilla.kernel.org/show_bug.cgi?id=62811
Alan <[email protected]> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |[email protected]
--- Comment #1 from Alan <[email protected]> ---
We do not accept patches via bugzilla. Patches need to be submitted as per Documentation/SubmittingPatches.
Alan
Signature · 2 lines
You are receiving this mail because: You are watching the assignee of the bug.
PATCH 1/1 Don't Modify the scsi subcmd as LUN value when using VENDOR cmd
In reply to [email protected]https://bugzilla.kernel.org/show_bug.cgi?id=62811
Alan <[email protected]> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|Don't Modify the scsi |[PATCH]Don't Modify the
|subcmd as LUN value when |scsi subcmd as LUN value
|using VENDOR cmd |when using VENDOR cmdSignature · 2 lines
You are receiving this mail because: You are watching the assignee of the bug.