mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 08:14:15 +08:00
scsi: sd: Fix wrong DPOFUA disable in sd_read_cache_type
Zoned block devices force the use of READ/WRITE(16) commands by setting sdkp->use_16_for_rw and clearing sdkp->use_10_for_rw. This result in DPOFUA always being disabled for these drives as the assumed use of the deprecated READ/WRITE(6) commands only looks at sdkp->use_10_for_rw. Strenghten the test by also checking that sdkp->use_16_for_rw is false. Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
4633773799
commit
26f2819772
@ -2600,7 +2600,8 @@ sd_read_cache_type(struct scsi_disk *sdkp, unsigned char *buffer)
|
||||
if (sdp->broken_fua) {
|
||||
sd_first_printk(KERN_NOTICE, sdkp, "Disabling FUA\n");
|
||||
sdkp->DPOFUA = 0;
|
||||
} else if (sdkp->DPOFUA && !sdkp->device->use_10_for_rw) {
|
||||
} else if (sdkp->DPOFUA && !sdkp->device->use_10_for_rw &&
|
||||
!sdkp->device->use_16_for_rw) {
|
||||
sd_first_printk(KERN_NOTICE, sdkp,
|
||||
"Uses READ/WRITE(6), disabling FUA\n");
|
||||
sdkp->DPOFUA = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user