scsi: target: core: Change the way target_xcopy_do_work() sets restiction on max I/O
authorAnastasia Kovaleva <a.kovaleva@yadro.com>
Mon, 14 Nov 2022 10:25:00 +0000 (13:25 +0300)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 24 Nov 2022 02:16:19 +0000 (02:16 +0000)
commit689d94ec208cfdf95101d99319cb4bdc5f55774d
treecf7189709ee5338a1c81710fbc60e1e04babdcae
parent9375031ee40b66c8fd2fc24d5fbea47b69f53de6
scsi: target: core: Change the way target_xcopy_do_work() sets restiction on max I/O

To determine how many blocks sends in one command, the minimum value is
selected from the hw_max_sectors of both devices. In target_xcopy_do_work,
hw_max_sectors are used as blocks, not sectors; it also ignores the fact
that sectors can be of different sizes, for example 512 and 4096
bytes. Because of this, a number of blocks can be transmitted that the
device will not be able to accept.

Change the selection of max transmission size into bytes.

Reviewed-by: Konstantin Shelekhin <k.shelekhin@yadro.com>
Reviewed-by: Dmitriy Bogdanov <d.bogdanov@yadro.com>
Signed-off-by: Anastasia Kovaleva <a.kovaleva@yadro.com>
Link: https://lore.kernel.org/r/20221114102500.88892-4-a.kovaleva@yadro.com
Reviewed-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/target/target_core_xcopy.c
drivers/target/target_core_xcopy.h