diff options
Diffstat (limited to 'drivers/scsi/sd.c')
-rw-r--r-- | drivers/scsi/sd.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 6f0a4c612b3b..4df73e52a4f9 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c | |||
@@ -1899,6 +1899,8 @@ static int sd_try_rc16_first(struct scsi_device *sdp) | |||
1899 | { | 1899 | { |
1900 | if (sdp->host->max_cmd_len < 16) | 1900 | if (sdp->host->max_cmd_len < 16) |
1901 | return 0; | 1901 | return 0; |
1902 | if (sdp->try_rc_10_first) | ||
1903 | return 0; | ||
1902 | if (sdp->scsi_level > SCSI_SPC_2) | 1904 | if (sdp->scsi_level > SCSI_SPC_2) |
1903 | return 1; | 1905 | return 1; |
1904 | if (scsi_device_protection(sdp)) | 1906 | if (scsi_device_protection(sdp)) |
@@ -2259,8 +2261,13 @@ bad_sense: | |||
2259 | sd_printk(KERN_ERR, sdkp, "Asking for cache data failed\n"); | 2261 | sd_printk(KERN_ERR, sdkp, "Asking for cache data failed\n"); |
2260 | 2262 | ||
2261 | defaults: | 2263 | defaults: |
2262 | sd_printk(KERN_ERR, sdkp, "Assuming drive cache: write through\n"); | 2264 | if (sdp->wce_default_on) { |
2263 | sdkp->WCE = 0; | 2265 | sd_printk(KERN_NOTICE, sdkp, "Assuming drive cache: write back\n"); |
2266 | sdkp->WCE = 1; | ||
2267 | } else { | ||
2268 | sd_printk(KERN_ERR, sdkp, "Assuming drive cache: write through\n"); | ||
2269 | sdkp->WCE = 0; | ||
2270 | } | ||
2264 | sdkp->RCD = 0; | 2271 | sdkp->RCD = 0; |
2265 | sdkp->DPOFUA = 0; | 2272 | sdkp->DPOFUA = 0; |
2266 | } | 2273 | } |
@@ -2702,6 +2709,7 @@ static int sd_probe(struct device *dev) | |||
2702 | sdkp->disk = gd; | 2709 | sdkp->disk = gd; |
2703 | sdkp->index = index; | 2710 | sdkp->index = index; |
2704 | atomic_set(&sdkp->openers, 0); | 2711 | atomic_set(&sdkp->openers, 0); |
2712 | atomic_set(&sdkp->device->ioerr_cnt, 0); | ||
2705 | 2713 | ||
2706 | if (!sdp->request_queue->rq_timeout) { | 2714 | if (!sdp->request_queue->rq_timeout) { |
2707 | if (sdp->type != TYPE_MOD) | 2715 | if (sdp->type != TYPE_MOD) |