Skip to content

Commit

Permalink
[SCSI] set to WCE if usb cache quirk is present.
Browse files Browse the repository at this point in the history
Make use of USB quirk method to identify such HDD while reading
the cache status in sd_probe(). If cache quirk is present for
the HDD, lets assume that cache is enabled and make WCE bit
equal to 1.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Pankaj Kumar <pankaj.km@samsung.com>
Signed-off-by: Amit Sahrawat <a.sahrawat@samsung.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
  • Loading branch information
Namjae Jeon authored and James Bottomley committed Jul 20, 2012
1 parent 365a715 commit b81478d
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
9 changes: 7 additions & 2 deletions drivers/scsi/sd.c
Original file line number Diff line number Diff line change
Expand Up @@ -2261,8 +2261,13 @@ sd_read_cache_type(struct scsi_disk *sdkp, unsigned char *buffer)
sd_printk(KERN_ERR, sdkp, "Asking for cache data failed\n");

defaults:
sd_printk(KERN_ERR, sdkp, "Assuming drive cache: write through\n");
sdkp->WCE = 0;
if (sdp->wce_default_on) {
sd_printk(KERN_NOTICE, sdkp, "Assuming drive cache: write back\n");
sdkp->WCE = 1;
} else {
sd_printk(KERN_ERR, sdkp, "Assuming drive cache: write through\n");
sdkp->WCE = 0;
}
sdkp->RCD = 0;
sdkp->DPOFUA = 0;
}
Expand Down
1 change: 1 addition & 0 deletions include/scsi/scsi_device.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ struct scsi_device {
unsigned no_read_capacity_16:1; /* Avoid READ_CAPACITY_16 cmds */
unsigned try_rc_10_first:1; /* Try READ_CAPACACITY_10 first */
unsigned is_visible:1; /* is the device visible in sysfs */
unsigned wce_default_on:1; /* Cache is ON by default */

DECLARE_BITMAP(supported_events, SDEV_EVT_MAXBITS); /* supported events */
struct list_head event_list; /* asserted events */
Expand Down

0 comments on commit b81478d

Please sign in to comment.