Hi, This has null_alloc_page() cleanup to remvoe the unwanted function parameter and remove function goto labels where we can return easily. Below is the test log of memory backed null_blk with fio verify job and blktests output. -ck Chaitanya Kulkarni (2): null_blk: remove hardcoded null_alloc_page() param null_blk: null_alloc_page() cleanup drivers/block/null_blk/main.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) root@dev linux-block (for-next) # gitlog -2 a87f21820d03 (HEAD -> for-next) Merge branch 'for-next' of git://git.kernel.dk/linux-block into for-next bc2959102cb9 (origin/for-next) Merge branch 'for-5.18/block' into for-next root@dev linux-block (for-next) # git am p/null-blk-alloc_page/*patch ; git am --skip Patch is empty. When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". Applying: null_blk: remove hardcoded null_alloc_page() param Applying: null_blk: null_alloc_page() cleanup root@dev linux-block (for-next) # ./compile_nullb.sh + umount /mnt/nullb0 umount: /mnt/nullb0: not mounted. + rmdir 'config/nullb/nullb*' rmdir: failed to remove 'config/nullb/nullb*': No such file or directory + dmesg -c + modprobe -r null_blk + lsmod + grep null_blk + git apply wip.diff ++ nproc + make -j 48 M=drivers/block modules CC [M] drivers/block/pktcdvd.o CC [M] drivers/block/null_blk/main.o LD [M] drivers/block/null_blk/null_blk.o MODPOST drivers/block/Module.symvers LD [M] drivers/block/null_blk/null_blk.ko LD [M] drivers/block/pktcdvd.ko + HOST=drivers/block/null_blk/ ++ uname -r + HOST_DEST=/lib/modules/5.17.0-rc3blk+/kernel/drivers/block/null_blk/ + cp drivers/block/null_blk//null_blk.ko /lib/modules/5.17.0-rc3blk+/kernel/drivers/block/null_blk// + ls -lrth /lib/modules/5.17.0-rc3blk+/kernel/drivers/block/null_blk//null_blk.ko -rw-r--r--. 1 root root 1.1M Feb 22 06:47 /lib/modules/5.17.0-rc3blk+/kernel/drivers/block/null_blk//null_blk.ko + sleep 1 + git checkout include/scsi/scsi_device.h Updated 1 path from the index + dmesg -c root@dev linux-block (for-next) # ./nullbtests.sh 3 + rmdir 'config/nullb/nullb*' rmdir: failed to remove 'config/nullb/nullb*': No such file or directory + NN=3 + modprobe -r null_blk + modprobe null_blk nr_devices=0 + echo loading devices loading devices ++ seq 0 3 + for i in `seq 0 $NN` + NULLB_DIR=config/nullb/nullb0 + mkdir config/nullb/nullb0 + echo 1 + echo 4096 + echo 2048 + echo 2 + cat config/nullb/nullb0/queue_mode 2 + echo 1 ++ cat config/nullb/nullb0/index + IDX=0 + echo -n ' 0 ' 0 + sleep .50 + for i in `seq 0 $NN` + NULLB_DIR=config/nullb/nullb1 + mkdir config/nullb/nullb1 + echo 1 + echo 4096 + echo 2048 + echo 2 + cat config/nullb/nullb1/queue_mode 2 + echo 1 ++ cat config/nullb/nullb1/index + IDX=1 + echo -n ' 1 ' 1 + sleep .50 + for i in `seq 0 $NN` + NULLB_DIR=config/nullb/nullb2 + mkdir config/nullb/nullb2 + echo 1 + echo 4096 + echo 2048 + echo 2 + cat config/nullb/nullb2/queue_mode 2 + echo 1 ++ cat config/nullb/nullb2/index + IDX=2 + echo -n ' 2 ' 2 + sleep .50 + for i in `seq 0 $NN` + NULLB_DIR=config/nullb/nullb3 + mkdir config/nullb/nullb3 + echo 1 + echo 4096 + echo 2048 + echo 2 + cat config/nullb/nullb3/queue_mode 2 + echo 1 ++ cat config/nullb/nullb3/index + IDX=3 + echo -n ' 3 ' 3 + sleep .50 + lsblk + grep null + sort nullb0 251:0 0 2G 0 disk nullb1 251:1 0 2G 0 disk nullb2 251:2 0 2G 0 disk nullb3 251:3 0 2G 0 disk + sleep 1 + dmesg -c [ 1086.952379] null_blk: module loaded + lsblk + grep null nullb0 251:0 0 2G 0 disk nullb1 251:1 0 2G 0 disk nullb2 251:2 0 2G 0 disk nullb3 251:3 0 2G 0 disk ++ seq 0 3 + for i in `seq 0 $NN` + fio fio/verify.fio --filename=/dev/nullb0 write-and-verify: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=16 fio-3.27 Starting 1 process Jobs: 1 (f=1) write-and-verify: (groupid=0, jobs=1): err= 0: pid=13415: Tue Feb 22 06:47:54 2022 read: IOPS=93.8k, BW=366MiB/s (384MB/s)(158MiB/431msec) slat (nsec): min=7755, max=30347, avg=8214.90, stdev=1225.66 clat (usec): min=3, max=202, avg=161.41, stdev= 5.89 lat (usec): min=11, max=210, avg=169.69, stdev= 5.99 clat percentiles (usec): | 1.00th=[ 157], 5.00th=[ 157], 10.00th=[ 157], 20.00th=[ 157], | 30.00th=[ 159], 40.00th=[ 159], 50.00th=[ 159], 60.00th=[ 159], | 70.00th=[ 163], 80.00th=[ 167], 90.00th=[ 172], 95.00th=[ 174], | 99.00th=[ 178], 99.50th=[ 180], 99.90th=[ 188], 99.95th=[ 190], | 99.99th=[ 202] write: IOPS=80.0k, BW=313MiB/s (328MB/s)(250MiB/800msec); 0 zone resets slat (usec): min=8, max=447, avg=10.37, stdev= 3.22 clat (usec): min=3, max=434, avg=188.97, stdev=34.29 lat (usec): min=12, max=801, avg=199.41, stdev=36.21 clat percentiles (usec): | 1.00th=[ 169], 5.00th=[ 174], 10.00th=[ 174], 20.00th=[ 176], | 30.00th=[ 178], 40.00th=[ 180], 50.00th=[ 182], 60.00th=[ 184], | 70.00th=[ 188], 80.00th=[ 192], 90.00th=[ 198], 95.00th=[ 204], | 99.00th=[ 375], 99.50th=[ 392], 99.90th=[ 404], 99.95th=[ 408], | 99.99th=[ 429] bw ( KiB/s): min=201320, max=310680, per=80.00%, avg=256000.00, stdev=77329.20, samples=2 iops : min=50330, max=77670, avg=64000.00, stdev=19332.30, samples=2 lat (usec) : 4=0.01%, 20=0.01%, 50=0.01%, 100=0.01%, 250=97.53% lat (usec) : 500=2.45% cpu : usr=13.66%, sys=86.26%, ctx=1, majf=0, minf=966 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=100.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0% issued rwts: total=40428,64000,0,0 short=0,0,0,0 dropped=0,0,0,0 latency : target=0, window=0, percentile=100.00%, depth=16 Run status group 0 (all jobs): READ: bw=366MiB/s (384MB/s), 366MiB/s-366MiB/s (384MB/s-384MB/s), io=158MiB (166MB), run=431-431msec WRITE: bw=313MiB/s (328MB/s), 313MiB/s-313MiB/s (328MB/s-328MB/s), io=250MiB (262MB), run=800-800msec Disk stats (read/write): nullb0: ios=27074/64000, merge=0/0, ticks=42/177, in_queue=219, util=91.51% + for i in `seq 0 $NN` + fio fio/verify.fio --filename=/dev/nullb1 write-and-verify: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=16 fio-3.27 Starting 1 process Jobs: 1 (f=1) write-and-verify: (groupid=0, jobs=1): err= 0: pid=13418: Tue Feb 22 06:47:55 2022 read: IOPS=90.4k, BW=353MiB/s (370MB/s)(158MiB/448msec) slat (nsec): min=7664, max=36409, avg=8462.57, stdev=1693.70 clat (usec): min=3, max=307, avg=167.50, stdev=12.40 lat (usec): min=17, max=322, avg=176.03, stdev=12.82 clat percentiles (usec): | 1.00th=[ 157], 5.00th=[ 159], 10.00th=[ 161], 20.00th=[ 161], | 30.00th=[ 163], 40.00th=[ 163], 50.00th=[ 163], 60.00th=[ 165], | 70.00th=[ 169], 80.00th=[ 174], 90.00th=[ 178], 95.00th=[ 182], | 99.00th=[ 233], 99.50th=[ 258], 99.90th=[ 289], 99.95th=[ 293], | 99.99th=[ 302] write: IOPS=76.9k, BW=300MiB/s (315MB/s)(250MiB/832msec); 0 zone resets slat (usec): min=7, max=681, avg=10.81, stdev= 4.43 clat (usec): min=3, max=1057, avg=196.71, stdev=50.00 lat (usec): min=12, max=1080, avg=207.59, stdev=52.64 clat percentiles (usec): | 1.00th=[ 172], 5.00th=[ 174], 10.00th=[ 174], 20.00th=[ 176], | 30.00th=[ 178], 40.00th=[ 180], 50.00th=[ 182], 60.00th=[ 184], | 70.00th=[ 188], 80.00th=[ 192], 90.00th=[ 212], 95.00th=[ 351], | 99.00th=[ 388], 99.50th=[ 396], 99.90th=[ 537], 99.95th=[ 578], | 99.99th=[ 971] bw ( KiB/s): min=220328, max=291672, per=83.20%, avg=256000.00, stdev=50447.83, samples=2 iops : min=55082, max=72918, avg=64000.00, stdev=12611.96, samples=2 lat (usec) : 4=0.01%, 20=0.01%, 50=0.01%, 100=0.01%, 250=94.16% lat (usec) : 500=5.73%, 750=0.07%, 1000=0.01% lat (msec) : 2=0.01% cpu : usr=14.86%, sys=85.14%, ctx=3, majf=0, minf=967 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=100.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0% issued rwts: total=40495,64000,0,0 short=0,0,0,0 dropped=0,0,0,0 latency : target=0, window=0, percentile=100.00%, depth=16 Run status group 0 (all jobs): READ: bw=353MiB/s (370MB/s), 353MiB/s-353MiB/s (370MB/s-370MB/s), io=158MiB (166MB), run=448-448msec WRITE: bw=300MiB/s (315MB/s), 300MiB/s-300MiB/s (315MB/s-315MB/s), io=250MiB (262MB), run=832-832msec Disk stats (read/write): nullb1: ios=27149/64000, merge=0/0, ticks=45/185, in_queue=231, util=91.81% + for i in `seq 0 $NN` + fio fio/verify.fio --filename=/dev/nullb2 write-and-verify: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=16 fio-3.27 Starting 1 process Jobs: 1 (f=1) write-and-verify: (groupid=0, jobs=1): err= 0: pid=13428: Tue Feb 22 06:47:57 2022 read: IOPS=94.3k, BW=368MiB/s (386MB/s)(158MiB/429msec) slat (nsec): min=7705, max=37021, avg=8173.44, stdev=1307.59 clat (usec): min=3, max=223, avg=160.64, stdev= 6.55 lat (usec): min=11, max=231, avg=168.87, stdev= 6.70 clat percentiles (usec): | 1.00th=[ 155], 5.00th=[ 157], 10.00th=[ 157], 20.00th=[ 157], | 30.00th=[ 157], 40.00th=[ 157], 50.00th=[ 157], 60.00th=[ 159], | 70.00th=[ 161], 80.00th=[ 167], 90.00th=[ 172], 95.00th=[ 174], | 99.00th=[ 180], 99.50th=[ 186], 99.90th=[ 208], 99.95th=[ 210], | 99.99th=[ 219] write: IOPS=80.5k, BW=314MiB/s (330MB/s)(250MiB/795msec); 0 zone resets slat (nsec): min=8055, max=92325, avg=10308.42, stdev=2763.18 clat (usec): min=3, max=430, avg=187.82, stdev=34.03 lat (usec): min=13, max=454, avg=198.19, stdev=35.85 clat percentiles (usec): | 1.00th=[ 169], 5.00th=[ 172], 10.00th=[ 174], 20.00th=[ 176], | 30.00th=[ 176], 40.00th=[ 178], 50.00th=[ 180], 60.00th=[ 182], | 70.00th=[ 186], 80.00th=[ 190], 90.00th=[ 196], 95.00th=[ 206], | 99.00th=[ 371], 99.50th=[ 383], 99.90th=[ 404], 99.95th=[ 416], | 99.99th=[ 424] bw ( KiB/s): min=199456, max=312544, per=79.50%, avg=256000.00, stdev=79965.29, samples=2 iops : min=49864, max=78136, avg=64000.00, stdev=19991.32, samples=2 lat (usec) : 4=0.01%, 20=0.01%, 50=0.01%, 100=0.01%, 250=97.45% lat (usec) : 500=2.53% cpu : usr=15.04%, sys=84.79%, ctx=1, majf=0, minf=966 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=100.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0% issued rwts: total=40451,64000,0,0 short=0,0,0,0 dropped=0,0,0,0 latency : target=0, window=0, percentile=100.00%, depth=16 Run status group 0 (all jobs): READ: bw=368MiB/s (386MB/s), 368MiB/s-368MiB/s (386MB/s-386MB/s), io=158MiB (166MB), run=429-429msec WRITE: bw=314MiB/s (330MB/s), 314MiB/s-314MiB/s (330MB/s-330MB/s), io=250MiB (262MB), run=795-795msec Disk stats (read/write): nullb2: ios=29364/64000, merge=0/0, ticks=45/174, in_queue=220, util=91.64% + for i in `seq 0 $NN` + fio fio/verify.fio --filename=/dev/nullb3 write-and-verify: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=16 fio-3.27 Starting 1 process Jobs: 1 (f=1) write-and-verify: (groupid=0, jobs=1): err= 0: pid=13431: Tue Feb 22 06:47:58 2022 read: IOPS=96.2k, BW=376MiB/s (394MB/s)(158MiB/421msec) slat (nsec): min=7393, max=52019, avg=7988.62, stdev=1575.15 clat (usec): min=3, max=264, avg=157.17, stdev=10.48 lat (usec): min=11, max=280, avg=165.22, stdev=10.81 clat percentiles (usec): | 1.00th=[ 151], 5.00th=[ 151], 10.00th=[ 151], 20.00th=[ 153], | 30.00th=[ 153], 40.00th=[ 153], 50.00th=[ 153], 60.00th=[ 155], | 70.00th=[ 157], 80.00th=[ 163], 90.00th=[ 167], 95.00th=[ 169], | 99.00th=[ 208], 99.50th=[ 231], 99.90th=[ 251], 99.95th=[ 255], | 99.99th=[ 265] write: IOPS=81.8k, BW=320MiB/s (335MB/s)(250MiB/782msec); 0 zone resets slat (usec): min=7, max=201, avg=10.15, stdev= 3.28 clat (usec): min=3, max=689, avg=184.88, stdev=37.38 lat (usec): min=13, max=699, avg=195.10, stdev=39.33 clat percentiles (usec): | 1.00th=[ 163], 5.00th=[ 167], 10.00th=[ 167], 20.00th=[ 169], | 30.00th=[ 172], 40.00th=[ 174], 50.00th=[ 176], 60.00th=[ 178], | 70.00th=[ 182], 80.00th=[ 186], 90.00th=[ 194], 95.00th=[ 258], | 99.00th=[ 375], 99.50th=[ 383], 99.90th=[ 404], 99.95th=[ 412], | 99.99th=[ 586] bw ( KiB/s): min=193824, max=318176, per=78.20%, avg=256000.00, stdev=87930.14, samples=2 iops : min=48456, max=79544, avg=64000.00, stdev=21982.54, samples=2 lat (usec) : 4=0.01%, 20=0.01%, 50=0.01%, 100=0.01%, 250=96.78% lat (usec) : 500=3.19%, 750=0.01% cpu : usr=15.56%, sys=84.19%, ctx=0, majf=0, minf=968 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=100.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0% issued rwts: total=40513,64000,0,0 short=0,0,0,0 dropped=0,0,0,0 latency : target=0, window=0, percentile=100.00%, depth=16 Run status group 0 (all jobs): READ: bw=376MiB/s (394MB/s), 376MiB/s-376MiB/s (394MB/s-394MB/s), io=158MiB (166MB), run=421-421msec WRITE: bw=320MiB/s (335MB/s), 320MiB/s-320MiB/s (335MB/s-335MB/s), io=250MiB (262MB), run=782-782msec Disk stats (read/write): nullb3: ios=27496/64000, merge=0/0, ticks=42/172, in_queue=215, util=91.45% + echo deleteing devices deleteing devices ++ seq 0 3 + for i in `seq 0 $NN` + rmdir config/nullb/nullb0 + for i in `seq 0 $NN` + rmdir config/nullb/nullb1 + for i in `seq 0 $NN` + rmdir config/nullb/nullb2 + for i in `seq 0 $NN` + rmdir config/nullb/nullb3 + modprobe -r null_blk root@dev linux-block (for-next) # cdblktests root@dev blktests (master) # ./check block block/001 (stress device hotplugging) [passed] runtime 94.285s ... 107.074s block/002 (remove a device while running blktrace) [passed] runtime 1.836s ... 1.852s block/006 (run null-blk in blocking mode) [passed] read iops 334390 ... 376026 runtime 197.045s ... 176.328s block/009 (check page-cache coherency after BLKDISCARD) [passed] runtime 0.960s ... 0.970s block/010 (run I/O on null_blk with shared and non-shared tags) [passed] Individual tags read iops ... 448657 runtime ... 315.200s Shared tags read iops ... 450129 block/014 (run null-blk with blk-mq and timeout injection configured) [not run] null_blk module does not have parameter timeout block/015 (run null-blk on different schedulers with requeue injection configured) [not run] null_blk module does not have parameter requeue block/016 (send a signal to a process waiting on a frozen queue) [passed] runtime 7.206s ... 7.210s block/017 (do I/O and check the inflight counter) [passed] runtime 1.847s ... 1.851s block/018 (do I/O and check iostats times) [passed] runtime 5.322s ... 5.321s block/020 (run null-blk on different schedulers with only one hardware tag) [passed] runtime 31.856s ... 31.852s block/021 (read/write nr_requests on null-blk with different schedulers) [passed] runtime 4.096s ... 4.031s block/022 (Test hang caused by freeze/unfreeze sequence) [passed] runtime 30.270s ... 30.211s block/023 (do I/O on all null_blk queue modes) [passed] runtime 0.630s ... 0.629s block/024 (do I/O faster than a jiffy and check iostats times) [passed] runtime 3.042s ... 3.046s block/025 (do a huge discard with 4k sector size) [passed] runtime 4.369s ... 4.397s block/027 (stress device hotplugging with running fio jobs and different schedulers) [passed] runtime 21.158s ... 21.039s block/028 (do I/O on scsi_debug with DIF/DIX enabled) [passed] runtime 57.059s ... 57.230s block/029 (trigger blk_mq_update_nr_hw_queues()) [passed] runtime 30.511s ... 30.535s block/030 (trigger the blk_mq_realloc_hw_ctxs() error path) [not run] null_blk module does not have parameter init_hctx block/031 (do IO on null-blk with a host tag set) [passed] runtime 30.537s ... 30.529s root@dev blktests (master) # -- 2.29.0