linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* regression with commit "null_blk: add helper for deleting the nullb_list"
       [not found] <cki.3B19A2362B.9VSYF9B2I1@redhat.com>
@ 2020-07-04 11:37 ` Yi Zhang
  2020-07-04 14:25   ` Jens Axboe
  0 siblings, 1 reply; 3+ messages in thread
From: Yi Zhang @ 2020-07-04 11:37 UTC (permalink / raw)
  To: chaitanya.kulkarni, axboe; +Cc: CKI Project, linux-block, Rachel Sibley

Hello

commit[1] on linux-block/for-next introduced one regression which lead kernel panic, could you help check it?

[1]
commit a65dee60e5384a648bc49c4ffbd3960d3fa354b0 (origin/for-5.9/drivers)
Author: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Date:   Thu Jul 2 18:31:30 2020 -0700

    null_blk: add helper for deleting the nullb_list

[2]
[  301.942805] run blktests block/006 at 2020-07-04 07:28:13
[  310.483587] ------------[ cut here ]------------
[  310.488208] kernel BUG at lib/idr.c:491!
[  310.492141] invalid opcode: 0000 [#1] SMP NOPTI
[  310.496674] CPU: 9 PID: 2261 Comm: modprobe Tainted: G          I       5.8.0-rc3+ #1
[  310.504498] Hardware name: Dell Inc. PowerEdge R640/06NR82, BIOS 2.6.4 04/09/2020
[  310.511982] RIP: 0010:ida_free+0x140/0x150
[  310.516076] Code: 00 48 89 ef e8 e1 75 fd ff 48 3d 00 04 00 00 75 ce 48 89 ef e8 11 89 e3 ff eb ba 48 8d 74 2d 01 48 89 e7 e8 92 02 01 00 eb b5 <0f> 0b e8 29 65 46 00 66 0f 1f 84 00 00 00 00 00 41 55 4c 8d 6f 08
[  310.534823] RSP: 0018:ffffa84d40fd7e50 EFLAGS: 00010282
[  310.540047] RAX: 00000000003fffe7 RBX: 00000000ffff9c5d RCX: 0000000080800001
[  310.547171] RDX: ffff9465fb695b01 RSI: 00000000ffff9c5d RDI: ffffffffc0546740
[  310.554305] RBP: ffffffffc0546750 R08: 0000000000000001 R09: 0000000000000000
[  310.561435] R10: ffff945746955760 R11: 0000000000000000 R12: 000000000000005d
[  310.568559] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
[  310.575683] FS:  00007f8d250b7740(0000) GS:ffff9466bf840000(0000) knlGS:0000000000000000
[  310.583760] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  310.589498] CR2: 00007f8d24553230 CR3: 000000101fc96003 CR4: 00000000007606e0
[  310.596622] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  310.603753] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[  310.610878] PKRU: 55555554
[  310.613592] Call Trace:
[  310.616049]  null_del_dev+0x2b/0x120 [null_blk]
[  310.620579]  null_delete_nullb_list+0x2c/0x38 [null_blk]
[  310.625890]  null_exit+0x2f/0xc4d [null_blk]
[  310.630165]  __x64_sys_delete_module+0x153/0x210
[  310.634782]  ? __prepare_exit_to_usermode+0x6d/0x1c0
[  310.639748]  do_syscall_64+0x4d/0x90
[  310.643327]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[  310.648377] RIP: 0033:0x7f8d24583e57
[  310.651958] Code: Bad RIP value.
[  310.655189] RSP: 002b:00007ffed28bbf68 EFLAGS: 00000202 ORIG_RAX: 00000000000000b0
[  310.662748] RAX: ffffffffffffffda RBX: 0000000001727410 RCX: 00007f8d24583e57
[  310.669879] RDX: 0000000000000000 RSI: 0000000000000800 RDI: 0000000001727478
[  310.677010] RBP: 0000000000000000 R08: 00007f8d2484d060 R09: 00007f8d245f8a00
[  310.684136] R10: 00007ffed28bb360 R11: 0000000000000202 R12: 0000000000000000
[  310.691267] R13: 0000000000000001 R14: 0000000001727478 R15: 0000000000000000
[  310.698392] Modules linked in: null_blk(-) rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache intel_rapl_msr intel_rapl_common rfkill skx_edac x86_pkg_temp_thermal sunrpc intel_powerclamp coretemp kvm_intel kvm iTCO_wdt dell_smbios vfat iTCO_vendor_support fat wmi_bmof dell_wmi_descriptor ipmi_ssif irqbypass crc32_pclmul dcdbas ghash_clmulni_intel aesni_intel acpi_ipmi crypto_simd ipmi_si mei_me cryptd ipmi_devintf i2c_i801 sg mei glue_helper dax_pmem_compat pcspkr i2c_smbus lpc_ich device_dax wmi ipmi_msghandler dax_pmem_core acpi_power_meter dm_multipath ip_tables xfs libcrc32c nd_pmem nd_btt sd_mod t10_pi crc_t10dif crct10dif_generic mgag200 drm_vram_helper drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm_ttm_helper ttm drm ahci libahci libata tg3 crct10dif_pclmul megaraid_sas crct10dif_common nfit crc32c_intel ptp pps_core i2c_algo_bit libnvdimm dm_mirror dm_region_hash dm_log dm_mod
[  310.780000] ---[ end trace 61a20a5d291b22f8 ]---
[  310.811342] RIP: 0010:ida_free+0x140/0x150
[  310.815444] Code: 00 48 89 ef e8 e1 75 fd ff 48 3d 00 04 00 00 75 ce 48 89 ef e8 11 89 e3 ff eb ba 48 8d 74 2d 01 48 89 e7 e8 92 02 01 00 eb b5 <0f> 0b e8 29 65 46 00 66 0f 1f 84 00 00 00 00 00 41 55 4c 8d 6f 08
[  310.834190] RSP: 0018:ffffa84d40fd7e50 EFLAGS: 00010282
[  310.839416] RAX: 00000000003fffe7 RBX: 00000000ffff9c5d RCX: 0000000080800001
[  310.846549] RDX: ffff9465fb695b01 RSI: 00000000ffff9c5d RDI: ffffffffc0546740
[  310.853679] RBP: ffffffffc0546750 R08: 0000000000000001 R09: 0000000000000000
[  310.860812] R10: ffff945746955760 R11: 0000000000000000 R12: 000000000000005d
[  310.867945] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
[  310.875076] FS:  00007f8d250b7740(0000) GS:ffff9466bf840000(0000) knlGS:0000000000000000
[  310.883161] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  310.888908] CR2: 00007f8d24553230 CR3: 000000101fc96003 CR4: 00000000007606e0
[  310.896040] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  310.903172] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[  310.910306] PKRU: 55555554
[  310.913019] Kernel panic - not syncing: Fatal exception
[  311.326108] Kernel Offset: 0x1a400000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[  311.351017] ---[ end Kernel panic - not syncing: Fatal exception ]---


Best Regards,
  Yi Zhang


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: regression with commit "null_blk: add helper for deleting the nullb_list"
  2020-07-04 11:37 ` regression with commit "null_blk: add helper for deleting the nullb_list" Yi Zhang
@ 2020-07-04 14:25   ` Jens Axboe
  2020-07-06  2:08     ` Chaitanya Kulkarni
  0 siblings, 1 reply; 3+ messages in thread
From: Jens Axboe @ 2020-07-04 14:25 UTC (permalink / raw)
  To: Yi Zhang, chaitanya.kulkarni; +Cc: CKI Project, linux-block, Rachel Sibley

On 7/4/20 5:37 AM, Yi Zhang wrote:
> Hello
> 
> commit[1] on linux-block/for-next introduced one regression which lead kernel panic, could you help check it?
> 
> [1]
> commit a65dee60e5384a648bc49c4ffbd3960d3fa354b0 (origin/for-5.9/drivers)
> Author: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
> Date:   Thu Jul 2 18:31:30 2020 -0700
> 
>     null_blk: add helper for deleting the nullb_list

Chaitanya, did you even test your patch?

+ nullb = list_first_entry(nullb_list.next, struct nullb, list);

I'm guessing no... Dropped it.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: regression with commit "null_blk: add helper for deleting the nullb_list"
  2020-07-04 14:25   ` Jens Axboe
@ 2020-07-06  2:08     ` Chaitanya Kulkarni
  0 siblings, 0 replies; 3+ messages in thread
From: Chaitanya Kulkarni @ 2020-07-06  2:08 UTC (permalink / raw)
  To: Jens Axboe; +Cc: Yi Zhang, CKI Project, linux-block, Rachel Sibley

Hi Jens,

On 7/4/20 7:25 AM, Jens Axboe wrote:
> Chaitanya, did you even test your patch?
> 
> + nullb = list_first_entry(nullb_list.next, struct nullb, list);
> 
> I'm guessing no... Dropped it.
> 

I've made a complete blunder out of sending V2 with replacing 
list_first_entry(), there was a manual mistake I found in history
while testing which never tested V2 even though it was compiled.

However testing of the patch V1 was done and no panic or
any other issue was observed [1].

Again sorry the trouble, I'm documenting V3 (with test log) at
the end of the email which is tested [2][2.1][2.2], if and when we
decide to get in I'll rebase and resend.

Going forward I'll make sure to add a test log for every patch.

Regards,
Chaitanya

[1] Results with and without V1 :-

1. No kernel panic.
2. Same tests (block/009, /block/017 and block/018 failed) with and
    without patch V1.
3. The new blktest which is yet to submit upstream :-
    a. Loads the null_blk nr_devices=1024 in the background and runs
       the modprobe -r null_blk in the while loop is successful with
       and without V1 the cases.
    b. Creates 100 memory backed null_blk devices with 500M size sleep
       0.50 in the creation loop, deletes and runs the rmmod null_blk in
       the foreground. No panic was observed with and without patch V1.

[1.1] Test without V1:-

(for-next) # git log -1  drivers/block/null_blk_main.c
commit c62b37d96b6eb3ec5ae4cbe00db107bf15aebc93
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Jul 1 10:59:43 2020 +0200

     block: move ->make_request_fn to struct block_device_operations

     The make_request_fn is a little weird in that it sits directly in
     struct request_queue instead of an operation vector.  Replace it with
     a block_device_operations method called submit_bio (which describes 
much
     better what it does).  Also remove the request_queue argument to it, as
     the queue can be derived pretty trivially from the bio.

     Signed-off-by: Christoph Hellwig <hch@lst.de>
     Signed-off-by: Jens Axboe <axboe@kernel.dk>
(for-next) #

blktests: -
------------
block/001 (stress device hotplugging)
block/001 (stress device hotplugging)                        [passed]
     runtime  30.515s  ...  30.580s
block/002 (remove a device while running blktrace)
block/002 (remove a device while running blktrace)           [passed]
     runtime  1.010s  ...  1.070s
block/006 (run null-blk in blocking mode)
     read iops  5972239  ...
block/006 (run null-blk in blocking mode)                    [passed]
     read iops  5972239  ...  5912466
     runtime    19.125s  ...  19.637s
block/009 (check page-cache coherency after BLKDISCARD)
block/009 (check page-cache coherency after BLKDISCARD)      [failed]
     runtime  0.502s  ...  0.503s
     --- tests/block/009.out	2019-09-13 21:45:10.342000000 -0700
     +++ /root/blktests/results/nodev/block/009.out.bad	2020-07-05 
17:16:20.575000000 -0700
     @@ -1,6 +1,10 @@
      Running block/009
      0000000 0000 0000 0000 0000 0000 0000 0000 0000
      *
     +1fa4000 aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa
     +*
     +1fa5000 0000 0000 0000 0000 0000 0000 0000 0000
     +*
     ...
     (Run 'diff -u tests/block/009.out 
/root/blktests/results/nodev/block/009.out.bad' to see the entire diff)
block/010 (run I/O on null_blk with shared and non-shared tags)
     runtime                34.827s  ...
block/010 (run I/O on null_blk with shared and non-shared tags) [passed]
     runtime                    34.827s  ...  34.327s
     Shared tags read iops      6647074  ...  6677498
     Individual tags read iops           ...  6774567
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)
block/016 (send a signal to a process waiting on a frozen queue) [passed]
     runtime  0.003s  ...  68.088s
block/017 (do I/O and check the inflight counter)
block/017 (do I/O and check the inflight counter)            [failed]
     runtime  32.694s  ...  32.694s
     --- tests/block/017.out	2019-09-13 21:45:10.344000000 -0700
     +++ /root/blktests/results/nodev/block/017.out.bad	2020-07-05 
17:18:36.021000000 -0700
     @@ -7,8 +7,8 @@
      sysfs inflight writes 1
      sysfs stat 2
      diskstats 2
     -sysfs inflight reads 0
     +sysfs inflight reads 8
      sysfs inflight writes 0
     -sysfs stat 0
     ...
     (Run 'diff -u tests/block/017.out 
/root/blktests/results/nodev/block/017.out.bad' to see the entire diff)
block/018 (do I/O and check iostats times)
block/018 (do I/O and check iostats times)                   [failed]
     runtime  66.096s  ...  66.099s
     --- tests/block/018.out	2019-09-13 21:45:10.344000000 -0700
     +++ /root/blktests/results/nodev/block/018.out.bad	2020-07-05 
17:19:42.154000000 -0700
     @@ -5,6 +5,6 @@
      write 0 s
      read 1 s
      write 1 s
     -read 2 s
     +read 11 s
      write 3 s
      Test complete
block/020 (run null-blk on different schedulers with only one hardware tag)
block/020 (run null-blk on different schedulers with only one hardware 
tag) [passed]
     runtime  33.318s  ...  33.295s
block/021 (read/write nr_requests on null-blk with different schedulers)
block/021 (read/write nr_requests on null-blk with different schedulers) 
[passed]
     runtime  5.114s  ...  5.245s
block/022 (Test hang caused by freeze/unfreeze sequence)
block/022 (Test hang caused by freeze/unfreeze sequence)     [passed]
     runtime  30.119s  ...  30.140s
block/023 (do I/O on all null_blk queue modes)
block/023 (do I/O on all null_blk queue modes)               [passed]
     runtime  0.308s  ...  0.317s
block/024 (do I/O faster than a jiffy and check iostats times)
block/024 (do I/O faster than a jiffy and check iostats times) [passed]
     runtime  2.604s  ...  2.621s
block/025 (do a huge discard with 4k sector size)
block/025 (do a huge discard with 4k sector size)            [passed]
     runtime  4.066s  ...  4.102s
block/027 (stress device hotplugging with running fio jobs and different 
schedulers) [not run]
     cgroup2 is not mounted
block/028 (do I/O on scsi_debug with DIF/DIX enabled)
block/028 (do I/O on scsi_debug with DIF/DIX enabled)        [passed]
     runtime  25.682s  ...  25.240s
block/029 (trigger blk_mq_update_nr_hw_queues())
block/029 (trigger blk_mq_update_nr_hw_queues())             [passed]
     runtime  31.639s  ...  31.585s
block/030 (trigger the blk_mq_realloc_hw_ctxs() error path)  [not run]
     null_blk module does not have parameter init_hctx

[1.2] Testing With V1:-

# git log drivers/block/null_blk_main.c
commit 3ded4bf8c904205ab8d8c223d926b90434048789 (HEAD -> for-next)

Author: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Date:   Sun Jul 5 16:31:14 2020 -0700

     null_blk: add helper for deleting the nullb_list

     The nullb_list is destroyed when error occurs in the null_init() and
     when removing the module in null_exit(). The identical code is repeated
     in those functions which can be a part of helper function. This also
     removes the extra variable struct nullb *nullb in the both functions.

     Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
     Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>

blktests (master) # ./check tests/block/
block/001 (stress device hotplugging)
block/001 (stress device hotplugging)                        [passed]
     runtime  30.580s  ...  30.565s
block/002 (remove a device while running blktrace)
block/002 (remove a device while running blktrace)           [passed]
     runtime  1.070s  ...  1.011s
block/006 (run null-blk in blocking mode)
     read iops  5912466  ...
block/006 (run null-blk in blocking mode)                    [passed]
     read iops  5912466  ...  5975217
     runtime    19.637s  ...  19.131s
block/009 (check page-cache coherency after BLKDISCARD)
block/009 (check page-cache coherency after BLKDISCARD)      [failed]
     runtime  0.504s  ...  0.510s
     --- tests/block/009.out	2019-09-13 21:45:10.342000000 -0700
     +++ /root/blktests/results/nodev/block/009.out.bad	2020-07-05 
17:26:18.164000000 -0700
     @@ -1,6 +1,10 @@
      Running block/009
      0000000 0000 0000 0000 0000 0000 0000 0000 0000
      *
     +1fab000 aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa
     +*
     +1fac000 0000 0000 0000 0000 0000 0000 0000 0000
     +*
     ...
     (Run 'diff -u tests/block/009.out 
/root/blktests/results/nodev/block/009.out.bad' to see the entire diff)
block/010 (run I/O on null_blk with shared and non-shared tags)
     Individual tags read iops  6774567  ...
     runtime                    34.327s  ...
block/010 (run I/O on null_blk with shared and non-shared tags) [passed]
     Individual tags read iops  6774567  ...  6768417
     runtime                    34.327s  ...  34.392s
     Shared tags read iops      6677498  ...  6585757
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)
block/016 (send a signal to a process waiting on a frozen queue) [passed]
     runtime  68.088s  ...  68.103s
block/017 (do I/O and check the inflight counter)
block/017 (do I/O and check the inflight counter)            [failed]
     runtime  32.694s  ...  32.698s
     --- tests/block/017.out	2019-09-13 21:45:10.344000000 -0700
     +++ /root/blktests/results/nodev/block/017.out.bad	2020-07-05 
17:28:33.672000000 -0700
     @@ -7,8 +7,8 @@
      sysfs inflight writes 1
      sysfs stat 2
      diskstats 2
     -sysfs inflight reads 0
     +sysfs inflight reads 3
      sysfs inflight writes 0
     -sysfs stat 0
     ...
     (Run 'diff -u tests/block/017.out 
/root/blktests/results/nodev/block/017.out.bad' to see the entire diff)
block/018 (do I/O and check iostats times)
block/018 (do I/O and check iostats times)                   [failed]
     runtime  66.099s  ...  66.102s
     --- tests/block/018.out	2019-09-13 21:45:10.344000000 -0700
     +++ /root/blktests/results/nodev/block/018.out.bad	2020-07-05 
17:29:39.807000000 -0700
     @@ -5,6 +5,6 @@
      write 0 s
      read 1 s
      write 1 s
     -read 2 s
     +read 18 s
      write 3 s
      Test complete
block/020 (run null-blk on different schedulers with only one hardware tag)
block/020 (run null-blk on different schedulers with only one hardware 
tag) [passed]
     runtime  33.295s  ...  33.910s
block/021 (read/write nr_requests on null-blk with different schedulers)
block/021 (read/write nr_requests on null-blk with different schedulers) 
[passed]
     runtime  5.245s  ...  5.216s
block/022 (Test hang caused by freeze/unfreeze sequence)
block/022 (Test hang caused by freeze/unfreeze sequence)     [passed]
     runtime  30.140s  ...  30.099s
block/023 (do I/O on all null_blk queue modes)
block/023 (do I/O on all null_blk queue modes)               [passed]
     runtime  0.317s  ...  0.313s
block/024 (do I/O faster than a jiffy and check iostats times)
block/024 (do I/O faster than a jiffy and check iostats times) [passed]
     runtime  2.621s  ...  2.633s
block/025 (do a huge discard with 4k sector size)
block/025 (do a huge discard with 4k sector size)            [passed]
     runtime  4.102s  ...  4.405s
block/027 (stress device hotplugging with running fio jobs and different 
schedulers) [not run]
     cgroup2 is not mounted
block/028 (do I/O on scsi_debug with DIF/DIX enabled)
block/028 (do I/O on scsi_debug with DIF/DIX enabled)        [passed]
     runtime  25.240s  ...  25.293s
block/029 (trigger blk_mq_update_nr_hw_queues())
block/029 (trigger blk_mq_update_nr_hw_queues())             [passed]
     runtime  31.585s  ...  31.574s
block/030 (trigger the blk_mq_realloc_hw_ctxs() error path)  [not run]
     null_blk module does not have parameter init_hctx


[2] V3 :-

[2.1] Patch :-

 From 06ec96c98367e516bc47f317629385967f128039 Mon Sep 17 00:00:00 2001
From: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Date: Sun, 5 Jul 2020 16:31:14 -0700
Subject: [PATCH V3] null_blk: add helper for deleting the nullb_list

The nullb_list is destroyed when error occurs in the null_init() and
when removing the module in null_exit(). The identical code is repeated
in those functions which can be a part of helper function. This also
removes the extra variable struct nullb *nullb in the both functions.

Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
---

* Changes from V1: -
--------------------

1. Add missing sign-off and reviewed-by tag.
2. Use list_entry_first() instead of list_entry().

* Changes from V2 : -
---------------------

1. Fix the wrong first parameter for list_first_entry();.
2. Update Reviewed-by tag.

---
  drivers/block/null_blk_main.c | 32 +++++++++++++++-----------------
  1 file changed, 15 insertions(+), 17 deletions(-)

diff --git a/drivers/block/null_blk_main.c b/drivers/block/null_blk_main.c
index 907c6858aec0..f1216e7218e4 100644
--- a/drivers/block/null_blk_main.c
+++ b/drivers/block/null_blk_main.c
@@ -1868,11 +1868,23 @@ static int null_add_dev(struct nullb_device *dev)
  	return rv;
  }

+static void null_delete_nullb_list(void)
+{
+	struct nullb_device *dev;
+	struct nullb *nullb;
+
+	while (!list_empty(&nullb_list)) {
+		nullb = list_first_entry(&nullb_list, struct nullb, list);
+		dev = nullb->dev;
+		null_del_dev(nullb);
+		null_free_dev(dev);
+	}
+}
+
  static int __init null_init(void)
  {
  	int ret = 0;
  	unsigned int i;
-	struct nullb *nullb;
  	struct nullb_device *dev;

  	if (g_bs > PAGE_SIZE) {
@@ -1939,12 +1951,7 @@ static int __init null_init(void)
  	return 0;

  err_dev:
-	while (!list_empty(&nullb_list)) {
-		nullb = list_entry(nullb_list.next, struct nullb, list);
-		dev = nullb->dev;
-		null_del_dev(nullb);
-		null_free_dev(dev);
-	}
+	null_delete_nullb_list();
  	unregister_blkdev(null_major, "nullb");
  err_conf:
  	configfs_unregister_subsystem(&nullb_subsys);
@@ -1956,21 +1963,12 @@ static int __init null_init(void)

  static void __exit null_exit(void)
  {
-	struct nullb *nullb;
-
  	configfs_unregister_subsystem(&nullb_subsys);

  	unregister_blkdev(null_major, "nullb");

  	mutex_lock(&lock);
-	while (!list_empty(&nullb_list)) {
-		struct nullb_device *dev;
-
-		nullb = list_entry(nullb_list.next, struct nullb, list);
-		dev = nullb->dev;
-		null_del_dev(nullb);
-		null_free_dev(dev);
-	}
+	null_delete_nullb_list();
  	mutex_unlock(&lock);

  	if (g_queue_mode == NULL_Q_MQ && shared_tags)
-- 
2.26.0


[2.2] blktest test report V3:-

  # ./check tests/block/
block/001 (stress device hotplugging)
block/001 (stress device hotplugging)                        [passed]
     runtime  30.549s  ...  30.520s
block/002 (remove a device while running blktrace)
block/002 (remove a device while running blktrace)           [passed]
     runtime  1.035s  ...  1.108s
block/006 (run null-blk in blocking mode)
     read iops  5999576  ...
block/006 (run null-blk in blocking mode)                    [passed]
     read iops  5999576  ...  5987158
     runtime    19.319s  ...  19.398s
block/009 (check page-cache coherency after BLKDISCARD)
block/009 (check page-cache coherency after BLKDISCARD)      [failed]
     runtime  0.505s  ...  0.515s
     --- tests/block/009.out	2019-09-13 21:45:10.342000000 -0700
     +++ /root/blktests/results/nodev/block/009.out.bad	2020-07-05 
18:21:34.958000000 -0700
     @@ -1,6 +1,10 @@
      Running block/009
      0000000 0000 0000 0000 0000 0000 0000 0000 0000
      *
     +1fab000 aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa
     +*
     +1fac000 0000 0000 0000 0000 0000 0000 0000 0000
     +*
     ...
     (Run 'diff -u tests/block/009.out 
/root/blktests/results/nodev/block/009.out.bad' to see the entire diff)
block/010 (run I/O on null_blk with shared and non-shared tags)
     Individual tags read iops  6706192  ...
     runtime                    34.675s  ...
block/010 (run I/O on null_blk with shared and non-shared tags) [passed]
     Individual tags read iops  6706192  ...  6649050
     runtime                    34.675s  ...  34.645s
     Shared tags read iops      6390103  ...  6613013
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)
block/016 (send a signal to a process waiting on a frozen queue) [passed]
     runtime  68.093s  ...  68.094s
block/017 (do I/O and check the inflight counter)
block/017 (do I/O and check the inflight counter)            [failed]
     runtime  32.695s  ...  32.696s
     --- tests/block/017.out	2019-09-13 21:45:10.344000000 -0700
     +++ /root/blktests/results/nodev/block/017.out.bad	2020-07-05 
18:23:50.686000000 -0700
     @@ -7,8 +7,8 @@
      sysfs inflight writes 1
      sysfs stat 2
      diskstats 2
     -sysfs inflight reads 0
     +sysfs inflight reads 8
      sysfs inflight writes 0
     -sysfs stat 0
     ...
     (Run 'diff -u tests/block/017.out 
/root/blktests/results/nodev/block/017.out.bad' to see the entire diff)
block/018 (do I/O and check iostats times)
block/018 (do I/O and check iostats times)                   [failed]
     runtime  66.090s  ...  66.097s
     --- tests/block/018.out	2019-09-13 21:45:10.344000000 -0700
     +++ /root/blktests/results/nodev/block/018.out.bad	2020-07-05 
18:24:56.816000000 -0700
     @@ -5,6 +5,6 @@
      write 0 s
      read 1 s
      write 1 s
     -read 2 s
     +read 18 s
      write 3 s
      Test complete
block/020 (run null-blk on different schedulers with only one hardware tag)
block/020 (run null-blk on different schedulers with only one hardware 
tag) [passed]
     runtime  33.370s  ...  33.657s
block/021 (read/write nr_requests on null-blk with different schedulers)
block/021 (read/write nr_requests on null-blk with different schedulers) 
[passed]
     runtime  5.162s  ...  5.271s
block/022 (Test hang caused by freeze/unfreeze sequence)
block/022 (Test hang caused by freeze/unfreeze sequence)     [passed]
     runtime  30.117s  ...  30.089s
block/023 (do I/O on all null_blk queue modes)
block/023 (do I/O on all null_blk queue modes)               [passed]
     runtime  0.318s  ...  0.310s
block/024 (do I/O faster than a jiffy and check iostats times)
block/024 (do I/O faster than a jiffy and check iostats times) [passed]
     runtime  2.629s  ...  2.626s
block/025 (do a huge discard with 4k sector size)
block/025 (do a huge discard with 4k sector size)            [passed]
     runtime  4.208s  ...  4.124s
block/027 (stress device hotplugging with running fio jobs and different 
schedulers) [not run]
     cgroup2 is not mounted
block/028 (do I/O on scsi_debug with DIF/DIX enabled)
block/028 (do I/O on scsi_debug with DIF/DIX enabled)        [passed]
     runtime  25.274s  ...  25.423s
block/029 (trigger blk_mq_update_nr_hw_queues())
block/029 (trigger blk_mq_update_nr_hw_queues())             [passed]
     runtime  31.585s  ...  31.547s
block/030 (trigger the blk_mq_realloc_hw_ctxs() error path)  [not run]
     null_blk module does not have parameter init_hctx

[2.2] modprobe test with on-membacked test :-

Terminal 1:-
(for-next) # modprobe null_blk nr_devices=1024
(for-next) # modprobe  -r null_blk

Terminal 2:-

blktests (master) # while [ 1 ] ; do modprobe -r null_blk; 
                                                 if [ $? -eq 0 ]; then 
break; fi; sleep 1; done
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.


[2.3] Mixed mondprobe test Membacked and non-membacked :-

# ./tests.sh
+ NN=100
+ modprobe -r null_blk
+ modprobe null_blk nr_devices=10 gb=1
+ echo loading devices
loading devices
+ declare -a arr
++ seq 0 100
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb0
+ mkdir config/nullb/nullb0
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb0/index
+ IDX=10
+ echo -n ' 0 '
  0 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb1
+ mkdir config/nullb/nullb1
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb1/index
+ IDX=11
+ echo -n ' 1 '
  1 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb2
+ mkdir config/nullb/nullb2
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb2/index
+ IDX=12
+ echo -n ' 2 '
  2 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb3
+ mkdir config/nullb/nullb3
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb3/index
+ IDX=13
+ echo -n ' 3 '
  3 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb4
+ mkdir config/nullb/nullb4
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb4/index
+ IDX=14
+ echo -n ' 4 '
  4 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb5
+ mkdir config/nullb/nullb5
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb5/index
+ IDX=15
+ echo -n ' 5 '
  5 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb6
+ mkdir config/nullb/nullb6
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb6/index
+ IDX=16
+ echo -n ' 6 '
  6 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb7
+ mkdir config/nullb/nullb7
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb7/index
+ IDX=17
+ echo -n ' 7 '
  7 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb8
+ mkdir config/nullb/nullb8
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb8/index
+ IDX=18
+ echo -n ' 8 '
  8 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb9
+ mkdir config/nullb/nullb9
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb9/index
+ IDX=19
+ echo -n ' 9 '
  9 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb10
+ mkdir config/nullb/nullb10
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb10/index
+ IDX=20
+ echo -n ' 10 '
  10 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb11
+ mkdir config/nullb/nullb11
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb11/index
+ IDX=21
+ echo -n ' 11 '
  11 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb12
+ mkdir config/nullb/nullb12
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb12/index
+ IDX=22
+ echo -n ' 12 '
  12 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb13
+ mkdir config/nullb/nullb13
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb13/index
+ IDX=23
+ echo -n ' 13 '
  13 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb14
+ mkdir config/nullb/nullb14
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb14/index
+ IDX=24
+ echo -n ' 14 '
  14 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb15
+ mkdir config/nullb/nullb15
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb15/index
+ IDX=25
+ echo -n ' 15 '
  15 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb16
+ mkdir config/nullb/nullb16
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb16/index
+ IDX=26
+ echo -n ' 16 '
  16 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb17
+ mkdir config/nullb/nullb17
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb17/index
+ IDX=27
+ echo -n ' 17 '
  17 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb18
+ mkdir config/nullb/nullb18
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb18/index
+ IDX=28
+ echo -n ' 18 '
  18 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb19
+ mkdir config/nullb/nullb19
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb19/index
+ IDX=29
+ echo -n ' 19 '
  19 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb20
+ mkdir config/nullb/nullb20
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb20/index
+ IDX=30
+ echo -n ' 20 '
  20 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb21
+ mkdir config/nullb/nullb21
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb21/index
+ IDX=31
+ echo -n ' 21 '
  21 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb22
+ mkdir config/nullb/nullb22
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb22/index
+ IDX=32
+ echo -n ' 22 '
  22 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb23
+ mkdir config/nullb/nullb23
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb23/index
+ IDX=33
+ echo -n ' 23 '
  23 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb24
+ mkdir config/nullb/nullb24
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb24/index
+ IDX=34
+ echo -n ' 24 '
  24 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb25
+ mkdir config/nullb/nullb25
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb25/index
+ IDX=35
+ echo -n ' 25 '
  25 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb26
+ mkdir config/nullb/nullb26
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb26/index
+ IDX=36
+ echo -n ' 26 '
  26 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb27
+ mkdir config/nullb/nullb27
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb27/index
+ IDX=37
+ echo -n ' 27 '
  27 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb28
+ mkdir config/nullb/nullb28
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb28/index
+ IDX=38
+ echo -n ' 28 '
  28 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb29
+ mkdir config/nullb/nullb29
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb29/index
+ IDX=39
+ echo -n ' 29 '
  29 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb30
+ mkdir config/nullb/nullb30
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb30/index
+ IDX=40
+ echo -n ' 30 '
  30 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb31
+ mkdir config/nullb/nullb31
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb31/index
+ IDX=41
+ echo -n ' 31 '
  31 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb32
+ mkdir config/nullb/nullb32
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb32/index
+ IDX=42
+ echo -n ' 32 '
  32 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb33
+ mkdir config/nullb/nullb33
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb33/index
+ IDX=43
+ echo -n ' 33 '
  33 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb34
+ mkdir config/nullb/nullb34
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb34/index
+ IDX=44
+ echo -n ' 34 '
  34 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb35
+ mkdir config/nullb/nullb35
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb35/index
+ IDX=45
+ echo -n ' 35 '
  35 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb36
+ mkdir config/nullb/nullb36
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb36/index
+ IDX=46
+ echo -n ' 36 '
  36 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb37
+ mkdir config/nullb/nullb37
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb37/index
+ IDX=47
+ echo -n ' 37 '
  37 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb38
+ mkdir config/nullb/nullb38
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb38/index
+ IDX=48
+ echo -n ' 38 '
  38 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb39
+ mkdir config/nullb/nullb39
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb39/index
+ IDX=49
+ echo -n ' 39 '
  39 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb40
+ mkdir config/nullb/nullb40
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb40/index
+ IDX=50
+ echo -n ' 40 '
  40 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb41
+ mkdir config/nullb/nullb41
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb41/index
+ IDX=51
+ echo -n ' 41 '
  41 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb42
+ mkdir config/nullb/nullb42
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb42/index
+ IDX=52
+ echo -n ' 42 '
  42 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb43
+ mkdir config/nullb/nullb43
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb43/index
+ IDX=53
+ echo -n ' 43 '
  43 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb44
+ mkdir config/nullb/nullb44
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb44/index
+ IDX=54
+ echo -n ' 44 '
  44 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb45
+ mkdir config/nullb/nullb45
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb45/index
+ IDX=55
+ echo -n ' 45 '
  45 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb46
+ mkdir config/nullb/nullb46
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb46/index
+ IDX=56
+ echo -n ' 46 '
  46 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb47
+ mkdir config/nullb/nullb47
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb47/index
+ IDX=57
+ echo -n ' 47 '
  47 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb48
+ mkdir config/nullb/nullb48
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb48/index
+ IDX=58
+ echo -n ' 48 '
  48 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb49
+ mkdir config/nullb/nullb49
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb49/index
+ IDX=59
+ echo -n ' 49 '
  49 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb50
+ mkdir config/nullb/nullb50
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb50/index
+ IDX=60
+ echo -n ' 50 '
  50 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb51
+ mkdir config/nullb/nullb51
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb51/index
+ IDX=61
+ echo -n ' 51 '
  51 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb52
+ mkdir config/nullb/nullb52
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb52/index
+ IDX=62
+ echo -n ' 52 '
  52 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb53
+ mkdir config/nullb/nullb53
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb53/index
+ IDX=63
+ echo -n ' 53 '
  53 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb54
+ mkdir config/nullb/nullb54
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb54/index
+ IDX=64
+ echo -n ' 54 '
  54 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb55
+ mkdir config/nullb/nullb55
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb55/index
+ IDX=65
+ echo -n ' 55 '
  55 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb56
+ mkdir config/nullb/nullb56
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb56/index
+ IDX=66
+ echo -n ' 56 '
  56 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb57
+ mkdir config/nullb/nullb57
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb57/index
+ IDX=67
+ echo -n ' 57 '
  57 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb58
+ mkdir config/nullb/nullb58
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb58/index
+ IDX=68
+ echo -n ' 58 '
  58 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb59
+ mkdir config/nullb/nullb59
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb59/index
+ IDX=69
+ echo -n ' 59 '
  59 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb60
+ mkdir config/nullb/nullb60
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb60/index
+ IDX=70
+ echo -n ' 60 '
  60 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb61
+ mkdir config/nullb/nullb61
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb61/index
+ IDX=71
+ echo -n ' 61 '
  61 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb62
+ mkdir config/nullb/nullb62
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb62/index
+ IDX=72
+ echo -n ' 62 '
  62 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb63
+ mkdir config/nullb/nullb63
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb63/index
+ IDX=73
+ echo -n ' 63 '
  63 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb64
+ mkdir config/nullb/nullb64
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb64/index
+ IDX=74
+ echo -n ' 64 '
  64 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb65
+ mkdir config/nullb/nullb65
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb65/index
+ IDX=75
+ echo -n ' 65 '
  65 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb66
+ mkdir config/nullb/nullb66
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb66/index
+ IDX=76
+ echo -n ' 66 '
  66 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb67
+ mkdir config/nullb/nullb67
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb67/index
+ IDX=77
+ echo -n ' 67 '
  67 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb68
+ mkdir config/nullb/nullb68
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb68/index
+ IDX=78
+ echo -n ' 68 '
  68 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb69
+ mkdir config/nullb/nullb69
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb69/index
+ IDX=79
+ echo -n ' 69 '
  69 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb70
+ mkdir config/nullb/nullb70
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb70/index
+ IDX=80
+ echo -n ' 70 '
  70 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb71
+ mkdir config/nullb/nullb71
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb71/index
+ IDX=81
+ echo -n ' 71 '
  71 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb72
+ mkdir config/nullb/nullb72
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb72/index
+ IDX=82
+ echo -n ' 72 '
  72 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb73
+ mkdir config/nullb/nullb73
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb73/index
+ IDX=83
+ echo -n ' 73 '
  73 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb74
+ mkdir config/nullb/nullb74
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb74/index
+ IDX=84
+ echo -n ' 74 '
  74 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb75
+ mkdir config/nullb/nullb75
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb75/index
+ IDX=85
+ echo -n ' 75 '
  75 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb76
+ mkdir config/nullb/nullb76
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb76/index
+ IDX=86
+ echo -n ' 76 '
  76 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb77
+ mkdir config/nullb/nullb77
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb77/index
+ IDX=87
+ echo -n ' 77 '
  77 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb78
+ mkdir config/nullb/nullb78
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb78/index
+ IDX=88
+ echo -n ' 78 '
  78 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb79
+ mkdir config/nullb/nullb79
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb79/index
+ IDX=89
+ echo -n ' 79 '
  79 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb80
+ mkdir config/nullb/nullb80
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb80/index
+ IDX=90
+ echo -n ' 80 '
  80 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb81
+ mkdir config/nullb/nullb81
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb81/index
+ IDX=91
+ echo -n ' 81 '
  81 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb82
+ mkdir config/nullb/nullb82
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb82/index
+ IDX=92
+ echo -n ' 82 '
  82 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb83
+ mkdir config/nullb/nullb83
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb83/index
+ IDX=93
+ echo -n ' 83 '
  83 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb84
+ mkdir config/nullb/nullb84
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb84/index
+ IDX=94
+ echo -n ' 84 '
  84 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb85
+ mkdir config/nullb/nullb85
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb85/index
+ IDX=95
+ echo -n ' 85 '
  85 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb86
+ mkdir config/nullb/nullb86
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb86/index
+ IDX=96
+ echo -n ' 86 '
  86 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb87
+ mkdir config/nullb/nullb87
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb87/index
+ IDX=97
+ echo -n ' 87 '
  87 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb88
+ mkdir config/nullb/nullb88
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb88/index
+ IDX=98
+ echo -n ' 88 '
  88 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb89
+ mkdir config/nullb/nullb89
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb89/index
+ IDX=99
+ echo -n ' 89 '
  89 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb90
+ mkdir config/nullb/nullb90
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb90/index
+ IDX=100
+ echo -n ' 90 '
  90 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb91
+ mkdir config/nullb/nullb91
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb91/index
+ IDX=101
+ echo -n ' 91 '
  91 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb92
+ mkdir config/nullb/nullb92
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb92/index
+ IDX=102
+ echo -n ' 92 '
  92 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb93
+ mkdir config/nullb/nullb93
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb93/index
+ IDX=103
+ echo -n ' 93 '
  93 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb94
+ mkdir config/nullb/nullb94
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb94/index
+ IDX=104
+ echo -n ' 94 '
  94 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb95
+ mkdir config/nullb/nullb95
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb95/index
+ IDX=105
+ echo -n ' 95 '
  95 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb96
+ mkdir config/nullb/nullb96
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb96/index
+ IDX=106
+ echo -n ' 96 '
  96 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb97
+ mkdir config/nullb/nullb97
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb97/index
+ IDX=107
+ echo -n ' 97 '
  97 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb98
+ mkdir config/nullb/nullb98
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb98/index
+ IDX=108
+ echo -n ' 98 '
  98 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb99
+ mkdir config/nullb/nullb99
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb99/index
+ IDX=109
+ echo -n ' 99 '
  99 + sleep .50
+ for i in '`seq 0 $NN`'
+ NULLB_DIR=config/nullb/nullb100
+ mkdir config/nullb/nullb100
+ echo 1
+ echo 512
+ echo 500
+ echo 1
++ cat config/nullb/nullb100/index
+ IDX=110
+ echo -n ' 100 '
  100 + sleep .50
+ lsblk
+ grep null
+ sort
nullb0            252:0    0    1G  0 disk
nullb100          252:100  0  500M  0 disk
nullb101          252:101  0  500M  0 disk
nullb102          252:102  0  500M  0 disk
nullb10           252:10   0  500M  0 disk
nullb103          252:103  0  500M  0 disk
nullb104          252:104  0  500M  0 disk
nullb105          252:105  0  500M  0 disk
nullb106          252:106  0  500M  0 disk
nullb107          252:107  0  500M  0 disk
nullb108          252:108  0  500M  0 disk
nullb109          252:109  0  500M  0 disk
nullb110          252:110  0  500M  0 disk
nullb11           252:11   0  500M  0 disk
nullb12           252:12   0  500M  0 disk
nullb1            252:1    0    1G  0 disk
nullb13           252:13   0  500M  0 disk
nullb14           252:14   0  500M  0 disk
nullb15           252:15   0  500M  0 disk
nullb16           252:16   0  500M  0 disk
nullb17           252:17   0  500M  0 disk
nullb18           252:18   0  500M  0 disk
nullb19           252:19   0  500M  0 disk
nullb20           252:20   0  500M  0 disk
nullb21           252:21   0  500M  0 disk
nullb22           252:22   0  500M  0 disk
nullb2            252:2    0    1G  0 disk
nullb23           252:23   0  500M  0 disk
nullb24           252:24   0  500M  0 disk
nullb25           252:25   0  500M  0 disk
nullb26           252:26   0  500M  0 disk
nullb27           252:27   0  500M  0 disk
nullb28           252:28   0  500M  0 disk
nullb29           252:29   0  500M  0 disk
nullb30           252:30   0  500M  0 disk
nullb31           252:31   0  500M  0 disk
nullb32           252:32   0  500M  0 disk
nullb3            252:3    0    1G  0 disk
nullb33           252:33   0  500M  0 disk
nullb34           252:34   0  500M  0 disk
nullb35           252:35   0  500M  0 disk
nullb36           252:36   0  500M  0 disk
nullb37           252:37   0  500M  0 disk
nullb38           252:38   0  500M  0 disk
nullb39           252:39   0  500M  0 disk
nullb40           252:40   0  500M  0 disk
nullb41           252:41   0  500M  0 disk
nullb42           252:42   0  500M  0 disk
nullb4            252:4    0    1G  0 disk
nullb43           252:43   0  500M  0 disk
nullb44           252:44   0  500M  0 disk
nullb45           252:45   0  500M  0 disk
nullb46           252:46   0  500M  0 disk
nullb47           252:47   0  500M  0 disk
nullb48           252:48   0  500M  0 disk
nullb49           252:49   0  500M  0 disk
nullb50           252:50   0  500M  0 disk
nullb51           252:51   0  500M  0 disk
nullb52           252:52   0  500M  0 disk
nullb5            252:5    0    1G  0 disk
nullb53           252:53   0  500M  0 disk
nullb54           252:54   0  500M  0 disk
nullb55           252:55   0  500M  0 disk
nullb56           252:56   0  500M  0 disk
nullb57           252:57   0  500M  0 disk
nullb58           252:58   0  500M  0 disk
nullb59           252:59   0  500M  0 disk
nullb60           252:60   0  500M  0 disk
nullb61           252:61   0  500M  0 disk
nullb62           252:62   0  500M  0 disk
nullb6            252:6    0    1G  0 disk
nullb63           252:63   0  500M  0 disk
nullb64           252:64   0  500M  0 disk
nullb65           252:65   0  500M  0 disk
nullb66           252:66   0  500M  0 disk
nullb67           252:67   0  500M  0 disk
nullb68           252:68   0  500M  0 disk
nullb69           252:69   0  500M  0 disk
nullb70           252:70   0  500M  0 disk
nullb71           252:71   0  500M  0 disk
nullb72           252:72   0  500M  0 disk
nullb7            252:7    0    1G  0 disk
nullb73           252:73   0  500M  0 disk
nullb74           252:74   0  500M  0 disk
nullb75           252:75   0  500M  0 disk
nullb76           252:76   0  500M  0 disk
nullb77           252:77   0  500M  0 disk
nullb78           252:78   0  500M  0 disk
nullb79           252:79   0  500M  0 disk
nullb80           252:80   0  500M  0 disk
nullb81           252:81   0  500M  0 disk
nullb82           252:82   0  500M  0 disk
nullb8            252:8    0    1G  0 disk
nullb83           252:83   0  500M  0 disk
nullb84           252:84   0  500M  0 disk
nullb85           252:85   0  500M  0 disk
nullb86           252:86   0  500M  0 disk
nullb87           252:87   0  500M  0 disk
nullb88           252:88   0  500M  0 disk
nullb89           252:89   0  500M  0 disk
nullb90           252:90   0  500M  0 disk
nullb91           252:91   0  500M  0 disk
nullb92           252:92   0  500M  0 disk
nullb9            252:9    0    1G  0 disk
nullb93           252:93   0  500M  0 disk
nullb94           252:94   0  500M  0 disk
nullb95           252:95   0  500M  0 disk
nullb96           252:96   0  500M  0 disk
nullb97           252:97   0  500M  0 disk
nullb98           252:98   0  500M  0 disk
nullb99           252:99   0  500M  0 disk
+ sleep 1
+ dmesg -c
[ 5690.756095] null_blk: module loaded
+ lsblk
+ grep null
nullb23           252:23   0  500M  0 disk
nullb51           252:51   0  500M  0 disk
nullb108          252:108  0  500M  0 disk
nullb13           252:13   0  500M  0 disk
nullb41           252:41   0  500M  0 disk
nullb1            252:1    0    1G  0 disk
nullb98           252:98   0  500M  0 disk
nullb31           252:31   0  500M  0 disk
nullb88           252:88   0  500M  0 disk
nullb21           252:21   0  500M  0 disk
nullb106          252:106  0  500M  0 disk
nullb78           252:78   0  500M  0 disk
nullb11           252:11   0  500M  0 disk
nullb68           252:68   0  500M  0 disk
nullb96           252:96   0  500M  0 disk
nullb58           252:58   0  500M  0 disk
nullb86           252:86   0  500M  0 disk
nullb48           252:48   0  500M  0 disk
nullb104          252:104  0  500M  0 disk
nullb76           252:76   0  500M  0 disk
nullb8            252:8    0    1G  0 disk
nullb38           252:38   0  500M  0 disk
nullb66           252:66   0  500M  0 disk
nullb94           252:94   0  500M  0 disk
nullb28           252:28   0  500M  0 disk
nullb56           252:56   0  500M  0 disk
nullb84           252:84   0  500M  0 disk
nullb18           252:18   0  500M  0 disk
nullb46           252:46   0  500M  0 disk
nullb102          252:102  0  500M  0 disk
nullb74           252:74   0  500M  0 disk
nullb6            252:6    0    1G  0 disk
nullb36           252:36   0  500M  0 disk
nullb64           252:64   0  500M  0 disk
nullb92           252:92   0  500M  0 disk
nullb26           252:26   0  500M  0 disk
nullb54           252:54   0  500M  0 disk
nullb110          252:110  0  500M  0 disk
nullb82           252:82   0  500M  0 disk
nullb16           252:16   0  500M  0 disk
nullb44           252:44   0  500M  0 disk
nullb100          252:100  0  500M  0 disk
nullb72           252:72   0  500M  0 disk
nullb4            252:4    0    1G  0 disk
nullb34           252:34   0  500M  0 disk
nullb62           252:62   0  500M  0 disk
nullb90           252:90   0  500M  0 disk
nullb24           252:24   0  500M  0 disk
nullb52           252:52   0  500M  0 disk
nullb109          252:109  0  500M  0 disk
nullb80           252:80   0  500M  0 disk
nullb14           252:14   0  500M  0 disk
nullb42           252:42   0  500M  0 disk
nullb70           252:70   0  500M  0 disk
nullb2            252:2    0    1G  0 disk
nullb99           252:99   0  500M  0 disk
nullb32           252:32   0  500M  0 disk
nullb60           252:60   0  500M  0 disk
nullb89           252:89   0  500M  0 disk
nullb22           252:22   0  500M  0 disk
nullb50           252:50   0  500M  0 disk
nullb107          252:107  0  500M  0 disk
nullb79           252:79   0  500M  0 disk
nullb12           252:12   0  500M  0 disk
nullb40           252:40   0  500M  0 disk
nullb69           252:69   0  500M  0 disk
nullb0            252:0    0    1G  0 disk
nullb97           252:97   0  500M  0 disk
nullb30           252:30   0  500M  0 disk
nullb59           252:59   0  500M  0 disk
nullb87           252:87   0  500M  0 disk
nullb20           252:20   0  500M  0 disk
nullb49           252:49   0  500M  0 disk
nullb105          252:105  0  500M  0 disk
nullb77           252:77   0  500M  0 disk
nullb10           252:10   0  500M  0 disk
nullb9            252:9    0    1G  0 disk
nullb39           252:39   0  500M  0 disk
nullb67           252:67   0  500M  0 disk
nullb95           252:95   0  500M  0 disk
nullb29           252:29   0  500M  0 disk
nullb57           252:57   0  500M  0 disk
nullb85           252:85   0  500M  0 disk
nullb19           252:19   0  500M  0 disk
nullb47           252:47   0  500M  0 disk
nullb103          252:103  0  500M  0 disk
nullb75           252:75   0  500M  0 disk
nullb7            252:7    0    1G  0 disk
nullb37           252:37   0  500M  0 disk
nullb65           252:65   0  500M  0 disk
nullb93           252:93   0  500M  0 disk
nullb27           252:27   0  500M  0 disk
nullb55           252:55   0  500M  0 disk
nullb83           252:83   0  500M  0 disk
nullb17           252:17   0  500M  0 disk
nullb45           252:45   0  500M  0 disk
nullb101          252:101  0  500M  0 disk
nullb73           252:73   0  500M  0 disk
nullb5            252:5    0    1G  0 disk
nullb35           252:35   0  500M  0 disk
nullb63           252:63   0  500M  0 disk
nullb91           252:91   0  500M  0 disk
nullb25           252:25   0  500M  0 disk
nullb53           252:53   0  500M  0 disk
nullb81           252:81   0  500M  0 disk
nullb15           252:15   0  500M  0 disk
nullb43           252:43   0  500M  0 disk
nullb71           252:71   0  500M  0 disk
nullb3            252:3    0    1G  0 disk
nullb33           252:33   0  500M  0 disk
nullb61           252:61   0  500M  0 disk
+ echo 'waiting '
waiting
+ echo deleteing devices
deleteing devices
++ seq 0 100
+ 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
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb4
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb5
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb6
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb7
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb8
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb9
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb10
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb11
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb12
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb13
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb14
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb15
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb16
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb17
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb18
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb19
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb20
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb21
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb22
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb23
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb24
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb25
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb26
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb27
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb28
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb29
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb30
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb31
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb32
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb33
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb34
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb35
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb36
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb37
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb38
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb39
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb40
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb41
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb42
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb43
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb44
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb45
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb46
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb47
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb48
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb49
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb50
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb51
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb52
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb53
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb54
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb55
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb56
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb57
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb58
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb59
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb60
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb61
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb62
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb63
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb64
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb65
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb66
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb67
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb68
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb69
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb70
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb71
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb72
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb73
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb74
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb75
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb76
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb77
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb78
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb79
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb80
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb81
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb82
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb83
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb84
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb85
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb86
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb87
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb88
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb89
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb90
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb91
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb92
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb93
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb94
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb95
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb96
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb97
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb98
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb99
+ for i in '`seq 0 $NN`'
+ rmdir config/nullb/nullb100
+ modprobe -r null_blk

Terminal 2 :-

  # while [ 1 ] ; do modprobe -r null_blk; 
                                 if [ $? -eq 0 ]; then break; fi; sleep 
1; done
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.
modprobe: FATAL: Module null_blk is in use.

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-07-06  2:08 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <cki.3B19A2362B.9VSYF9B2I1@redhat.com>
2020-07-04 11:37 ` regression with commit "null_blk: add helper for deleting the nullb_list" Yi Zhang
2020-07-04 14:25   ` Jens Axboe
2020-07-06  2:08     ` Chaitanya Kulkarni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).