On Thu, Sep 05, 2019 at 06:51:28PM +0900, Damien Le Moal wrote: > This patch series implements some cleanup of the elevator initialization > code and introduces elevator features identification and device matching > to enhance checks for elevator/device compatibility and fitness. > > The first 2 patches of the series are simple cleanups which simplify > elevator initialization for newly allocated device queues. > > Patch 3 introduce elevator features, allowing a clean and extensible > definition of devices and features that an elevator supports and match > these against features required by a block device. With this, the sysfs > elevator list for a device always shows only elevators matching the > features that a particular device requires, with the exception of the > none elevator which has no features but is always available for use > with any device. > > The first feature defined is for zoned block device sequential write > constraint support through zone write locking which prevents the use of > any elevator that does not support this feature with zoned devices. > > The last 4 patches of this series rework the default elevator selection > and initialization to allow for the elevator/device features matching > to work, doing so addressing cases not currently well supported, namely, > multi-queue zoned block devices. > > Changes from v4: > * Fix patch 5 again to correctly handle request based DM devices and > avoid that default queue elevator of these devices end up always > being "none". > > Changes from v3: > * Fixed patch 5 to correctly handle DM devices which do not register a > request queue and so do not need elevator initialization. > > Changes from v2: > * Fixed patch 4 > * Call elevator_init_mq() earlier in device_add_disk() as suggested by > Christoph (patch 5) > * Fixed title of patch 7 > > Changes from v1: > * Addressed Johannes comments > * Rebased on newest for-next branch to include Ming's sysfs lock changes > > Damien Le Moal (7): > block: Cleanup elevator_init_mq() use > block: Change elevator_init_mq() to always succeed > block: Introduce elevator features > block: Improve default elevator selection > block: Delay default elevator initialization > block: Set ELEVATOR_F_ZBD_SEQ_WRITE for nullblk zoned disks > sd: Set ELEVATOR_F_ZBD_SEQ_WRITE for ZBC disks > > block/blk-mq.c | 20 +++-- > block/blk-settings.c | 16 ++++ > block/blk.h | 2 +- > block/elevator.c | 137 ++++++++++++++++++++++++++-------- > block/genhd.c | 9 +++ > block/mq-deadline.c | 1 + > drivers/block/null_blk_main.c | 2 + > drivers/md/dm-rq.c | 2 +- > drivers/scsi/sd_zbc.c | 2 + > include/linux/blk-mq.h | 3 +- > include/linux/blkdev.h | 4 + > include/linux/elevator.h | 8 ++ > 12 files changed, 161 insertions(+), 45 deletions(-) Looks fine for the series: Reviewed-by: Ming Lei <ming.lei@xxxxxxxxxx> Thanks, Ming