Toshiba USB disk stopped working in 3.10.3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



My Toshiba 1TB Stor.e basics does not work anymore since 3.10.3. I have
another USB3 disk which works fine. The kernel keeps writing this stuff in
the logs:

Aug  4 16:11:27 wc1 kernel: [  286.384162] usb 4-4: Successful evaluate context command
Aug  4 16:11:27 wc1 kernel: [  286.495466] usb 4-4: reset SuperSpeed USB device number 2 using xhci_hcd
Aug  4 16:11:27 wc1 kernel: [  286.513937] xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled ep ffff880215ea3400
Aug  4 16:11:27 wc1 kernel: [  286.513943] xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled ep ffff880215ea3440
Aug  4 16:11:27 wc1 kernel: [  286.514026] usb 4-4: Successful Endpoint Configure command
Aug  4 16:11:27 wc1 kernel: [  286.514203] usb 4-4: Successful evaluate context command
Aug  4 16:11:27 wc1 kernel: [  286.514376] usb 4-4: Successful evaluate context command

and /lib/udev/ata_id stays blocked in D state.

The change that causes the problem (below) looks fine, so I'm not sure reverting it is the right fix.



diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 2c0d0ec8..3b1ea34e 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -1070,8 +1070,8 @@ EXPORT_SYMBOL_GPL(scsi_get_vpd_page);
  * @opcode:	opcode for command to look up
  *
  * Uses the REPORT SUPPORTED OPERATION CODES to look up the given
- * opcode. Returns 0 if RSOC fails or if the command opcode is
- * unsupported. Returns 1 if the device claims to support the command.
+ * opcode. Returns -EINVAL if RSOC fails, 0 if the command opcode is
+ * unsupported and 1 if the device claims to support the command.
  */
 int scsi_report_opcode(struct scsi_device *sdev, unsigned char *buffer,
 		       unsigned int len, unsigned char opcode)
@@ -1081,7 +1081,7 @@ int scsi_report_opcode(struct scsi_device *sdev, unsigned char *buffer,
 	int result;
 
 	if (sdev->no_report_opcodes || sdev->scsi_level < SCSI_SPC_3)
-		return 0;
+		return -EINVAL;
 
 	memset(cmd, 0, 16);
 	cmd[0] = MAINTENANCE_IN;
@@ -1097,7 +1097,7 @@ int scsi_report_opcode(struct scsi_device *sdev, unsigned char *buffer,
 	if (result && scsi_sense_valid(&sshdr) &&
 	    sshdr.sense_key == ILLEGAL_REQUEST &&
 	    (sshdr.asc == 0x20 || sshdr.asc == 0x24) && sshdr.ascq == 0x00)
-		return 0;
+		return -EINVAL;
 
 	if ((buffer[1] & 3) == 3) /* Command supported */
 		return 1;


-- 
Giuliano.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux