Re: [PATCH v8 0/5] Initial support for multi-actuator HDDs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2021/09/09 11:35, Damien Le Moal wrote:
> Single LUN multi-actuator hard-disks are cappable to seek and execute
> multiple commands in parallel. This capability is exposed to the host
> using the Concurrent Positioning Ranges VPD page (SCSI) and Log (ATA).
> Each positioning range describes the contiguous set of LBAs that an
> actuator serves.
> 
> This series adds support to the scsi disk driver to retreive this
> information and advertize it to user space through sysfs. libata is
> also modified to handle ATA drives.
> 
> The first patch adds the block layer plumbing to expose concurrent
> sector ranges of the device through sysfs as a sub-directory of the
> device sysfs queue directory. Patch 2 and 3 add support to sd and
> libata. Finally patch 4 documents the sysfs queue attributed changes.
> Patch 5 fixes a typo in the document file (strictly speaking, not
> related to this series).
> 
> This series does not attempt in any way to optimize accesses to
> multi-actuator devices (e.g. block IO schedulers or filesystems). This
> initial support only exposes the independent access ranges information
> to user space through sysfs.

Jens,

Any chance to get this merged for 5.16 ?


> 
> Changes from v7:
> * Renamed functions to spell out "independent_access_range" instead of
>   using contracted names such as iaranges. Structure fields names are
>   changed to ia_ranges from iaranges.
> * Added reviewed-by tags in patch 4 and 5
> 
> Changes from v6:
> * Changed patch 1 to prevent a device from registering overlapping
>   independent access ranges.
> 
> Changes from v5:
> * Changed type names in patch 1:
>   - struct blk_crange -> sturct blk_independent_access_range
>   - struct blk_cranges -> sturct blk_independent_access_ranges
>   All functions and variables are renamed accordingly, using shorter
>   names related to the new type names, e.g.
>   sturct blk_independent_access_ranges -> iaranges or iars.
> * Update the commit message of patch 1 to 4. Patch 1 and 4 titles are
>   also changed.
> * Dropped reviewed-tags on modified patches. Patch 3 and 5 are
>   unmodified
> 
> Changes from v4:
> * Fixed kdoc comment function name mismatch for disk_register_cranges()
>   in patch 1
> 
> Changes from v3:
> * Modified patch 1:
>   - Prefix functions that take a struct gendisk as argument with
>     "disk_". Modified patch 2 accordingly.
>   - Added a functional release operation for struct blk_cranges kobj to
>     ensure that this structure is freed only after all references to it
>     are released, including kobject_del() execution for all crange sysfs
>     entries.
> * Added patch 5 to separate the typo fix from the crange documentation
>   addition.
> * Added reviewed-by tags
> 
> Changes from v2:
> * Update patch 1 to fix a compilation warning for a potential NULL
>   pointer dereference of the cr argument of blk_queue_set_cranges().
>   Warning reported by the kernel test robot <lkp@xxxxxxxxx>).
> 
> Changes from v1:
> * Moved libata-scsi hunk from patch 1 to patch 3 where it belongs
> * Fixed unintialized variable in patch 2
>   Reported-by: kernel test robot <lkp@xxxxxxxxx>
>   Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx
> * Changed patch 3 adding struct ata_cpr_log to contain both the number
>   of concurrent ranges and the array of concurrent ranges.
> * Added a note in the documentation (patch 4) about the unit used for
>   the concurrent ranges attributes.
> 
> Damien Le Moal (5):
>   block: Add independent access ranges support
>   scsi: sd: add concurrent positioning ranges support
>   libata: support concurrent positioning ranges log
>   doc: document sysfs queue/independent_access_ranges attributes
>   doc: Fix typo in request queue sysfs documentation
> 
>  Documentation/block/queue-sysfs.rst |  33 ++-
>  block/Makefile                      |   2 +-
>  block/blk-ia-ranges.c               | 348 ++++++++++++++++++++++++++++
>  block/blk-sysfs.c                   |  26 ++-
>  block/blk.h                         |   4 +
>  drivers/ata/libata-core.c           |  57 ++++-
>  drivers/ata/libata-scsi.c           |  48 +++-
>  drivers/scsi/sd.c                   |  81 +++++++
>  drivers/scsi/sd.h                   |   1 +
>  include/linux/ata.h                 |   1 +
>  include/linux/blkdev.h              |  39 ++++
>  include/linux/libata.h              |  15 ++
>  12 files changed, 634 insertions(+), 21 deletions(-)
>  create mode 100644 block/blk-ia-ranges.c
> 


-- 
Damien Le Moal
Western Digital Research




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux