* [PATCH v3 1/2] libata-scsi: reject WRITE SAME (16) with n_block that exceeds limit
@ 2016-07-06 16:44 tom.ty89
2016-07-06 17:02 ` Sergei Shtylyov
0 siblings, 1 reply; 3+ messages in thread
From: tom.ty89 @ 2016-07-06 16:44 UTC (permalink / raw)
To: tj, martin.petersen, sergei.shtylyov; +Cc: linux-ide, linux-scsi, Tom Yan
From: Tom Yan <tom.ty89@gmail.com>
Currently if a WRITE SAME (16) command is issued to the SATL with
"number of blocks" that is larger than the "Maximum write same length"
(which is the maximum number of blocks per TRIM command allowed in
libata, currently 65535 * 512 / 8 blocks), the SATL will accept the
command and translate it to a TRIM command with the upper limit.
However, according to SBC (as of sbc4r11.pdf), the "device server"
should terminate the command with "Invalid field in CBD" in that case.
Signed-off-by: Tom Yan <tom.ty89@gmail.com>
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index bfec66f..a1f061a 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -3305,7 +3305,11 @@ static unsigned int ata_scsi_write_same_xlat(struct ata_queued_cmd *qc)
goto invalid_param_len;
buf = page_address(sg_page(scsi_sglist(scmd)));
- size = ata_set_lba_range_entries(buf, 512, block, n_block);
+
+ if (n_block <= 65535 * 512 / 8)
+ size = ata_set_lba_range_entries(buf, 512, block, n_block);
+ else
+ goto invalid_fld;
if (ata_ncq_enabled(dev) && ata_fpdma_dsm_supported(dev)) {
/* Newer devices support queued TRIM commands */
--
2.9.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH v3 1/2] libata-scsi: reject WRITE SAME (16) with n_block that exceeds limit
2016-07-06 16:44 [PATCH v3 1/2] libata-scsi: reject WRITE SAME (16) with n_block that exceeds limit tom.ty89
@ 2016-07-06 17:02 ` Sergei Shtylyov
2016-07-06 17:18 ` Tom Yan
0 siblings, 1 reply; 3+ messages in thread
From: Sergei Shtylyov @ 2016-07-06 17:02 UTC (permalink / raw)
To: tom.ty89, tj, martin.petersen; +Cc: linux-ide, linux-scsi
On 07/06/2016 07:44 PM, tom.ty89@gmail.com wrote:
> From: Tom Yan <tom.ty89@gmail.com>
>
> Currently if a WRITE SAME (16) command is issued to the SATL with
> "number of blocks" that is larger than the "Maximum write same length"
> (which is the maximum number of blocks per TRIM command allowed in
> libata, currently 65535 * 512 / 8 blocks), the SATL will accept the
> command and translate it to a TRIM command with the upper limit.
>
> However, according to SBC (as of sbc4r11.pdf), the "device server"
> should terminate the command with "Invalid field in CBD" in that case.
CDB again. :-)
> Signed-off-by: Tom Yan <tom.ty89@gmail.com>
[...]
MBR, Sergei
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH v3 1/2] libata-scsi: reject WRITE SAME (16) with n_block that exceeds limit
2016-07-06 17:02 ` Sergei Shtylyov
@ 2016-07-06 17:18 ` Tom Yan
0 siblings, 0 replies; 3+ messages in thread
From: Tom Yan @ 2016-07-06 17:18 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: Tejun Heo, martin.petersen, linux-ide, linux-scsi
I am so sorry. Now I hate acronym. v5 coming. :-)
On 7 July 2016 at 01:02, Sergei Shtylyov
<sergei.shtylyov@cogentembedded.com> wrote:
> On 07/06/2016 07:44 PM, tom.ty89@gmail.com wrote:
>
>> From: Tom Yan <tom.ty89@gmail.com>
>>
>> Currently if a WRITE SAME (16) command is issued to the SATL with
>> "number of blocks" that is larger than the "Maximum write same length"
>> (which is the maximum number of blocks per TRIM command allowed in
>> libata, currently 65535 * 512 / 8 blocks), the SATL will accept the
>> command and translate it to a TRIM command with the upper limit.
>>
>> However, according to SBC (as of sbc4r11.pdf), the "device server"
>> should terminate the command with "Invalid field in CBD" in that case.
>
>
> CDB again. :-)
>
>> Signed-off-by: Tom Yan <tom.ty89@gmail.com>
>
> [...]
>
> MBR, Sergei
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-07-06 17:18 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-06 16:44 [PATCH v3 1/2] libata-scsi: reject WRITE SAME (16) with n_block that exceeds limit tom.ty89
2016-07-06 17:02 ` Sergei Shtylyov
2016-07-06 17:18 ` Tom Yan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox