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