scsi: sd: Use 16-byte SYNCHRONIZE CACHE on ZBC devices
authorShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Tue, 15 Nov 2022 00:29:05 +0000 (09:29 +0900)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 26 Nov 2022 00:12:31 +0000 (00:12 +0000)
commit42c5907728867df91045f532a38682e0ec7a955b
tree5486a9f126f02a7f328b1e646ea9d0724bec464b
parente6f108bffc3708ddcff72324f7d40dfcd0204894
scsi: sd: Use 16-byte SYNCHRONIZE CACHE on ZBC devices

ZBC Zoned Block Commands specification mandates SYNCHRONIZE CACHE(16) for
host-managed zoned block devices, but does not mandate SYNCHRONIZE
CACHE(10). Call SYNCHRONIZE CACHE(16) in place of SYNCHRONIZE CACHE(10) to
ensure that the command is always supported. For this purpose, add
use_16_for_sync flag to struct scsi_device in same manner as use_16_for_rw
flag.

To be precise, ZBC does not mandate SYNCHRONIZE CACHE(16) for host-aware
zoned block devices. However, modern devices should support 16-byte
commands. Hence, call SYNCHRONIZE CACHE (16) on both types of ZBC devices,
host-aware and host-managed. Of note is that READ(16) and WRITE(16) have
same story and they are already called for both types of ZBC devices.

Another note is that this patch depends on the fix commit ea045fd344cb
("ata: libata-scsi: fix SYNCHRONIZE CACHE (16) command failure").

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Link: https://lore.kernel.org/r/20221115002905.1709006-1-shinichiro.kawasaki@wdc.com
Reviewed-by: Damien Le Moal <damien.lemoal@opendource.wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/sd.c
drivers/scsi/sd_zbc.c
include/scsi/scsi_device.h