Skip to contentSkip to conversation

New: Don't Modify the scsi subcmd as LUN value when using VENDOR cmd

Bug 62811 New [email protected] 3 participants 5 messages Oct 10, 2013 – Nov 13, 2013 SCSI

lore
Share & tools
lore
#0 lore raw

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: No

Using 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.
maintainer
#1 lore raw
Quoted 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: No

Using 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 +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 -1
 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);

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

#2 lore raw
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.

#3 lore raw

[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.
#4 lore raw

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 cmd
Signature · 2 lines
You are receiving this mail because:
You are watching the assignee of the bug.