Jens, This series provides fixes and improvements for null_blk zoned mode. The first patch fixes a problem with zone size initialization when the device capacity is not a multiple of the zone size. The second patch improves zone locking overall, and especially the memory backing disabled case by introducing a spinlock array to implement a per zone lock in place of a global lock. With this patch, write performance remains mostly unchanged, but read performance with a multi-queue setup more than double from 1.3 MIOPS to 3.3 MIOPS (4K random reads to zones with fio zonemode=zbd). These 2 patches could probably go into the current cycle. The remaining 4 patches likely belong to the next cycle: patch 3 improves zone implicit close, patch 4 is a small code cleanup in preparation of patch 5 which allows freeing the memory used by a zone when the zone is reset with memory backing enabled. The last patch is another cleanup which moves null_blk driver code into its own directory under drivers/block/null_blk. Comments are as always welcome. Damien Le Moal (6): null_blk: Fix zone size initialization null_blk: improve zone locking null_blk: Improve implicit zone close null_blk: cleanup discard handling null_blk: discard zones on reset null_blk: Move driver into its own directory drivers/block/Makefile | 7 +- drivers/block/null_blk/Makefile | 11 + drivers/block/{ => null_blk}/null_blk.h | 8 +- drivers/block/{ => null_blk}/null_blk_main.c | 43 ++-- drivers/block/{ => null_blk}/null_blk_trace.c | 0 drivers/block/{ => null_blk}/null_blk_trace.h | 0 drivers/block/{ => null_blk}/null_blk_zoned.c | 234 ++++++++++++------ 7 files changed, 196 insertions(+), 107 deletions(-) create mode 100644 drivers/block/null_blk/Makefile rename drivers/block/{ => null_blk}/null_blk.h (95%) rename drivers/block/{ => null_blk}/null_blk_main.c (98%) rename drivers/block/{ => null_blk}/null_blk_trace.c (100%) rename drivers/block/{ => null_blk}/null_blk_trace.h (100%) rename drivers/block/{ => null_blk}/null_blk_zoned.c (78%) -- 2.26.2