patch-2.2.15 linux/drivers/scsi/sd.c
Next file: linux/drivers/scsi/st.c
Previous file: linux/drivers/scsi/scsi.c
Back to the patch index
Back to the overall index
- Lines: 27
- Date:
Fri Apr 21 12:46:31 2000
- Orig file:
v2.2.14/drivers/scsi/sd.c
- Orig date:
Tue Jan 4 21:18:58 2000
diff -u --new-file --recursive --exclude-from ../../exclude v2.2.14/drivers/scsi/sd.c linux/drivers/scsi/sd.c
@@ -483,11 +483,16 @@
* would be a ten byte read where only a six byte read was supported.
* Also, on a system where READ CAPACITY failed, we have have read
* past the end of the disk.
+ *
+ * Don't screw with the ten byte flag unless we are certain that
+ * the drive does not understand the command /axboe
*/
if (SCpnt->sense_buffer[2] == ILLEGAL_REQUEST) {
if (rscsi_disks[DEVICE_NR(SCpnt->request.rq_dev)].ten) {
- rscsi_disks[DEVICE_NR(SCpnt->request.rq_dev)].ten = 0;
+ if (SCpnt->cmnd[0] == READ_10 || SCpnt->cmnd[0] == WRITE_10 ||
+ SCpnt->sense_buffer[12] == 0x20)
+ rscsi_disks[DEVICE_NR(SCpnt->request.rq_dev)].ten = 0;
requeue_sd_request(SCpnt);
result = 0;
} else {
@@ -1016,7 +1021,7 @@
this_count = this_count << 1;
}
- if (((this_count > 0xff) || (block > 0x1fffff)) && rscsi_disks[dev].ten)
+ if (((this_count > 0xff) || (block > 0x1fffff)) || rscsi_disks[dev].ten)
{
if (this_count > 0xffff)
this_count = 0xffff;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)