Re: [PATCH v6 3/4] SCT Write Same / DSM Trim
From: Tom Yan <hidden>
Date: 2016-08-22 08:34:03
Also in:
lkml
On 22 August 2016 at 08:31, Tom Yan [off-list ref] wrote:
As mentioned before, as of the latest draft of ACS-4, nothing about a larger payload size is mentioned. Conservatively speaking, it sort of
*payload block size
means that we are allowing four 512-byte block payload on 4Kn device
*eight 512-byte-block payload
regardless of the reported limit in the IDENTIFY DEVICE data. I am really not sure if it's a good thing to do. Doesn't seem necessary anyway, especially when our block layer does not support such a large bio size (well, yet), so each request will end up using a payload of two 512-byte blocks at max anyway. Also, it's IMHO better to do it in a seperate patch (series) after the SCT Write Same support has entered libata's repo too, because this has nothing to with it but TRIM translation. In case the future ACS standards has clearer/better instruction on this, it will be easier for us to revert/follow up too. And you'll need to fix the Block Limits VPD simulation (ata_scsiop_inq_b0) too, so that it will advertise the Maximum Write Same Length dynamically as per the logical sector size, otherwise your effort will be completely in vain, even if our block layer is overhauled in the future. Please be noted that, since your haven't touched ata_scsiop_inq_b0 at all, the reported Maximum Write Same Length will be: On device with TRIM support: - 4194240 LOGICAL sector per request split / command -- ~=2G on non-4Kn drives -- ~=16G on non-4Kn drives On device without TRIM support: - 0 --> SD_MAX_WS10_BLOCKS (65535) per request split / command -- ~= 32M on non-4Kn drives -- ~=256M on non-4Kn drives Even if we ignore the upper limit(s) of the block layer, do we want such inconsistencies?