scsi: target/iblock: fix WRITE SAME zeroing
commit5.4-rM2-2.2.x-imx-squashed1d2ff149b2
upstream. SBC4 specifies that WRITE SAME requests with the UNMAP bit set to zero "shall perform the specified write operation to each LBA specified by the command". Commit2237498f0b
("target/iblock: Convert WRITE_SAME to blkdev_issue_zeroout") modified the iblock backend to call blkdev_issue_zeroout() when handling WRITE SAME requests with UNMAP=0 and a zero data segment. The iblock blkdev_issue_zeroout() call incorrectly provides a flags parameter of 0 (bool false), instead of BLKDEV_ZERO_NOUNMAP. The bool false parameter reflects the blkdev_issue_zeroout() API prior to commitee472d835c
("block: add a flags argument to (__)blkdev_issue_zeroout") which was merged shortly before2237498f0b
. Link: https://lore.kernel.org/r/20200419163109.11689-1-ddiss@suse.de Fixes:2237498f0b
("target/iblock: Convert WRITE_SAME to blkdev_issue_zeroout") Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: David Disseldorp <ddiss@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
parent
de59f2fbe6
commit
a0000d228d
|
@ -432,7 +432,7 @@ iblock_execute_zero_out(struct block_device *bdev, struct se_cmd *cmd)
|
||||||
target_to_linux_sector(dev, cmd->t_task_lba),
|
target_to_linux_sector(dev, cmd->t_task_lba),
|
||||||
target_to_linux_sector(dev,
|
target_to_linux_sector(dev,
|
||||||
sbc_get_write_same_sectors(cmd)),
|
sbc_get_write_same_sectors(cmd)),
|
||||||
GFP_KERNEL, false);
|
GFP_KERNEL, BLKDEV_ZERO_NOUNMAP);
|
||||||
if (ret)
|
if (ret)
|
||||||
return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
|
return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue