[v1 0/2] enable sector size > PAGE_SIZE for scsi

sw.prabhu6@gmail.com posted 2 patches 1 week ago
There is a newer version of this series
drivers/scsi/scsi_debug.c |  8 +-------
drivers/scsi/sd.c         | 27 +++++++++++++++++----------
2 files changed, 18 insertions(+), 17 deletions(-)
[v1 0/2] enable sector size > PAGE_SIZE for scsi
Posted by sw.prabhu6@gmail.com 1 week ago
From: Swarna Prabhu <sw.prabhu6@gmail.com>

Hi All,

This is non RFC v1 series sent based on the feedback received on RFC
v2 [1] and RFC v1 [2]. This patchset enables sector sizes > PAGE_SIZE for
sd driver and scsi_debug driver since block layer can support block
size > PAGE_SIZE. There was one issue with write_same16 and write_same10
command, which is fixed as a part of the series.

Motivation:
 - While enabling LBS on ZoneFS, zonefs-tools tests were being skipped
   for conventional zones when tested on nvme block device emulated using
   QEMU. Hence there was a need to enable scsi with higher sector sizes
   to run zonefs tests for conventional zones as well.

Changes since RFC v2:
 - Replaced open coded check for enabling sdebug_sector_size > PAGE_SIZE
   with blk_validate_block_size() in scsi_debug.
 - Replaced open coded check for enabling sector_size > PAGE_SIZE
   with blk_validate_block_size() in sd driver.
 - Replaced 'struct request *rq' argument in  'sd_set_special_bvec()' to
   'struct scsi_cmnd *cmnd' and used that to get SCSI device pointer
   'struct scsi_device *sdp'.
 - Slightly modified the commit title for scsi sd driver fix patch.
 - Added "Cc: stable@vger.kernel.org" tag to scsi sd driver fix patch.

Changes since RFC v1:
 - Re organized the patch series into one patch for scsi_debug driver
   and one patch for sd driver.
 - Updated commit title and description to accommodate the above
   re organization on commit titled - scsi: sd: fix write_same(16/10)
   to enable sector size > PAGE_SIZE.
 - Updated commit title and description to reflect the re organization
   on commit titled - scsi: scsi_debug: enable sdebug_sector_size
   > PAGE_SIZE.

Thanks to Bart for feedback on the RFC v1 and v2 series.

Testing:
 -Test suite: xfs and generic from fstest + QEMU emulated block
    device(scsi and nvme)
  - fstest Config for patched xfs 16k block size [xfs_reflink_16k_scsi]
    TEST_DEV=/dev/sda
    SCRATCH_DEV_POOL="/dev/sdb"
    MKFS_OPTIONS='-f -m reflink=1,rmapbt=1, -i sparse=1, -b size=16384,
    -s size=16384'
  - Generic test results
    Baseline: 6.18.0-rc7 kernel + nvme 16k logical block size
    Patched: 6.18 kernel + scsi 16k logical block size
    5 failures seen on generic tests and the same seen on baseline
    No regressions introduced by the patch.
  - XFS tests results
    Baseline: 6.18.0-rc7 kernel + nvme16k logical block size
    Patched: 6.18 kernel + sci 16k logical block size
    30 failures seen on patched and baseline
    No regressions introduced by the patch
  - Blktests results
    scis and block layer tests with 16k and 32k logical block size.
    config used:
    TEST_DEVS=(/dev/sda)
    EXCLUDE=(block/010 block/011) # these didn't run on baseline(nvme 16k)
    All tests passed.

Link to RFC v2: https://lore.kernel.org/all/20251203230546.1275683-2-sw.prabhu6@gmail.com/ [1]
Link to RFC v1: https://lore.kernel.org/all/20251202021522.188419-1-sw.prabhu6@gmail.com/ [2]

Swarna Prabhu (2):
  scsi: sd: fix write_same(16/10) to enable sector size > PAGE_SIZE
  scsi: scsi_debug: enable sdebug_sector_size > PAGE_SIZE

 drivers/scsi/scsi_debug.c |  8 +-------
 drivers/scsi/sd.c         | 27 +++++++++++++++++----------
 2 files changed, 18 insertions(+), 17 deletions(-)

-- 
2.51.0
Re: [v1 0/2] enable sector size > PAGE_SIZE for scsi
Posted by Damien Le Moal 1 week ago
On 2025/12/09 17:41, sw.prabhu6@gmail.com wrote:
> From: Swarna Prabhu <sw.prabhu6@gmail.com>
> 
> Hi All,
> 
> This is non RFC v1 series sent based on the feedback received on RFC
> v2 [1] and RFC v1 [2]. This patchset enables sector sizes > PAGE_SIZE for
> sd driver and scsi_debug driver since block layer can support block
> size > PAGE_SIZE. There was one issue with write_same16 and write_same10
> command, which is fixed as a part of the series.
> 
> Motivation:
>  - While enabling LBS on ZoneFS, zonefs-tools tests were being skipped
>    for conventional zones when tested on nvme block device emulated using
>    QEMU. Hence there was a need to enable scsi with higher sector sizes
>    to run zonefs tests for conventional zones as well.

This is super confusing: there are no conventional zones with NVMe. And why
would a problem with NVMe require scsi patches ?

> Changes since RFC v2:
>  - Replaced open coded check for enabling sdebug_sector_size > PAGE_SIZE
>    with blk_validate_block_size() in scsi_debug.
>  - Replaced open coded check for enabling sector_size > PAGE_SIZE
>    with blk_validate_block_size() in sd driver.
>  - Replaced 'struct request *rq' argument in  'sd_set_special_bvec()' to
>    'struct scsi_cmnd *cmnd' and used that to get SCSI device pointer
>    'struct scsi_device *sdp'.
>  - Slightly modified the commit title for scsi sd driver fix patch.
>  - Added "Cc: stable@vger.kernel.org" tag to scsi sd driver fix patch.
> 
> Changes since RFC v1:
>  - Re organized the patch series into one patch for scsi_debug driver
>    and one patch for sd driver.
>  - Updated commit title and description to accommodate the above
>    re organization on commit titled - scsi: sd: fix write_same(16/10)
>    to enable sector size > PAGE_SIZE.
>  - Updated commit title and description to reflect the re organization
>    on commit titled - scsi: scsi_debug: enable sdebug_sector_size
>    > PAGE_SIZE.
> 
> Thanks to Bart for feedback on the RFC v1 and v2 series.
> 
> Testing:
>  -Test suite: xfs and generic from fstest + QEMU emulated block
>     device(scsi and nvme)
>   - fstest Config for patched xfs 16k block size [xfs_reflink_16k_scsi]
>     TEST_DEV=/dev/sda
>     SCRATCH_DEV_POOL="/dev/sdb"
>     MKFS_OPTIONS='-f -m reflink=1,rmapbt=1, -i sparse=1, -b size=16384,
>     -s size=16384'
>   - Generic test results
>     Baseline: 6.18.0-rc7 kernel + nvme 16k logical block size
>     Patched: 6.18 kernel + scsi 16k logical block size
>     5 failures seen on generic tests and the same seen on baseline
>     No regressions introduced by the patch.
>   - XFS tests results
>     Baseline: 6.18.0-rc7 kernel + nvme16k logical block size
>     Patched: 6.18 kernel + sci 16k logical block size
>     30 failures seen on patched and baseline
>     No regressions introduced by the patch
>   - Blktests results
>     scis and block layer tests with 16k and 32k logical block size.
>     config used:
>     TEST_DEVS=(/dev/sda)
>     EXCLUDE=(block/010 block/011) # these didn't run on baseline(nvme 16k)
>     All tests passed.
> 
> Link to RFC v2: https://lore.kernel.org/all/20251203230546.1275683-2-sw.prabhu6@gmail.com/ [1]
> Link to RFC v1: https://lore.kernel.org/all/20251202021522.188419-1-sw.prabhu6@gmail.com/ [2]
> 
> Swarna Prabhu (2):
>   scsi: sd: fix write_same(16/10) to enable sector size > PAGE_SIZE
>   scsi: scsi_debug: enable sdebug_sector_size > PAGE_SIZE
> 
>  drivers/scsi/scsi_debug.c |  8 +-------
>  drivers/scsi/sd.c         | 27 +++++++++++++++++----------
>  2 files changed, 18 insertions(+), 17 deletions(-)
> 


-- 
Damien Le Moal
Western Digital Research
Re: [v1 0/2] enable sector size > PAGE_SIZE for scsi
Posted by Swarna Prabhu 6 days ago
On Tue, Dec 09, 2025 at 05:56:05PM -0800, Damien Le Moal wrote:
> On 2025/12/09 17:41, sw.prabhu6@gmail.com wrote:
> > From: Swarna Prabhu <sw.prabhu6@gmail.com>
> > 
> > Hi All,
> > 
> > This is non RFC v1 series sent based on the feedback received on RFC
> > v2 [1] and RFC v1 [2]. This patchset enables sector sizes > PAGE_SIZE for
> > sd driver and scsi_debug driver since block layer can support block
> > size > PAGE_SIZE. There was one issue with write_same16 and write_same10
> > command, which is fixed as a part of the series.
> > 
> > Motivation:
> >  - While enabling LBS on ZoneFS, zonefs-tools tests were being skipped
> >    for conventional zones when tested on nvme block device emulated using
> >    QEMU. Hence there was a need to enable scsi with higher sector sizes
> >    to run zonefs tests for conventional zones as well.
> 
> This is super confusing: there are no conventional zones with NVMe. And why
> would a problem with NVMe require scsi patches ?
> 
Agree with you. NVME Zoned Namespace require sequential writes.

Our initial goal was to enable LBS on Zonefs. Running zonefs tests
on a scsi device covered both conventional and sequential zone based
tests. So we had to enable higher sector sizes on scsi device and while
doing so fix the issue seen with WRITE SAME commands with higher sector
sizes.

Thanks
Swarna
Re: [v1 0/2] enable sector size > PAGE_SIZE for scsi
Posted by Damien Le Moal 4 days, 21 hours ago
On 2025/12/12 9:18, Swarna Prabhu wrote:
> On Tue, Dec 09, 2025 at 05:56:05PM -0800, Damien Le Moal wrote:
>> On 2025/12/09 17:41, sw.prabhu6@gmail.com wrote:
>>> From: Swarna Prabhu <sw.prabhu6@gmail.com>
>>>
>>> Hi All,
>>>
>>> This is non RFC v1 series sent based on the feedback received on RFC
>>> v2 [1] and RFC v1 [2]. This patchset enables sector sizes > PAGE_SIZE for
>>> sd driver and scsi_debug driver since block layer can support block
>>> size > PAGE_SIZE. There was one issue with write_same16 and write_same10
>>> command, which is fixed as a part of the series.
>>>
>>> Motivation:
>>>  - While enabling LBS on ZoneFS, zonefs-tools tests were being skipped
>>>    for conventional zones when tested on nvme block device emulated using
>>>    QEMU. Hence there was a need to enable scsi with higher sector sizes
>>>    to run zonefs tests for conventional zones as well.
>>
>> This is super confusing: there are no conventional zones with NVMe. And why
>> would a problem with NVMe require scsi patches ?
>>
> Agree with you. NVME Zoned Namespace require sequential writes.
> 
> Our initial goal was to enable LBS on Zonefs. Running zonefs tests
> on a scsi device covered both conventional and sequential zone based
> tests. So we had to enable higher sector sizes on scsi device and while
> doing so fix the issue seen with WRITE SAME commands with higher sector
> sizes.

OK. Understood. But since this is in the end a scsi fix that is not directly
related to zonefs (zonefs does not use write same), I think you can drop any
mention of zonefs to avoid any confusion.


-- 
Damien Le Moal
Western Digital Research