Re: [PATCH V2 0/9] null_blk: add modparam checks

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

 



On 3/30/2023 4:02 PM, Jens Axboe wrote:
> Please take Damien's advice from v1 and compact these patches. This is
> getting somewhat out of hand and silly, imho. Are we gaming patch
> counts?! If not, what's the point?
> 

okay, but it's not true with the patch-count here is how I got here :-

Last year I started testing poll queues for null_blk and found an OOPs
[1]. Then I fixed an OOPs with adding single parameter check, curiously
I also looked around other parameters such as bs, submit_queues, gb,
max_sector, queue_depth to see if I can add similar fix. As I moved
forward with testing with each parameter I wrote a testcase and then
wrote a patch for specific parameter because for poll_queue it was
fixing OOPs and now it is a warn message [2] that's why I still think
is a fix.

So how can I mix poll_queue fix with other code which has nothing to
do with the fix ? since a fix needs to be isolated and not mixed up with 
new functionality I kept everything isolated into their own patches,
also keeping check isolated allows us to print the right error
message instead of just -EINVAL with reference to V2.

Clearly that is not how things to be done, as per your suggestion
I'll make a single patch for all the checks.

I should have sent a fix alone then do the fixing for rest params later
2-3 patches that's my mistake.

I truly believe that testing and finding bugs adds more value than
increasing patch count, that is how I found an OOPs in my testing and
wrote a testcase(s) for that, it is in commit log. Amount of testing
I've done for this is really not worth a patch count but definitely
worth a blktests :).

On the similar note I'll also trim the brd series.

-ck

[1] Entering kdb (current=0xffff88817eaed100, pid 5624) on processor 12 
Oops: (null)
due to oops @ 0xffffffff8165093f
CPU: 12 PID: 5624 Comm: modprobe Tainted: G           OE 
6.0.0-rc7blk+ #53
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 
rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
RIP: 0010:blk_mq_alloc_tag_set+0x14f/0x380
Code: 83 c5 01 3b 6b 40 0f 83 9a 01 00 00 48 8b 43 68 4c 63 e5 4e 8d 34 
e0 f6 43 58 08 75 d7 8b 53 44 89 ee 48 89 df e8 d1 ed ff ff <49> 89 06 
48 8b 43 68 4a 83 3c e0 00 75 c3 83 ed 01 78 0f 89 ee 48
RSP: 0018:ffffc90002eefd70 EFLAGS: 00010282
RAX: ffff888112b155c0 RBX: ffff88811069dc38 RCX: 0000000000000003
RDX: ffff88811069d000 RSI: ffff88810ed60000 RDI: 00000000000001f8
RBP: 0000000000000000 R08: 0000000000000003 R09: ffff888112b15650
R10: 000000000010ed60 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000040 R14: 0000000000000000 R15: 0000000000000000
FS:  00007f71e4147b80(0000) GS:ffff888fff500000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 000000014d81c000 CR4: 0000000000350ee0
Call Trace:
  <TASK>
  null_add_dev+0x7a7/0x870 [null_blk]
  null_init+0x1de/0x1000 [null_blk]
  ? 0xffffffffc03a9000
  do_one_initcall+0x44/0x210
  ? kmem_cache_alloc_trace+0x15b/0x2b0
  do_init_module+0x4c/0x1f0
  __do_sys_finit_module+0xb4/0x130
  do_syscall_64+0x3b/0x90
  entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7f71e426e15d
Code: c5 0c 00 0f 05 eb a9 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 
f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 
f0 ff ff 73 01 c3 48 8b 0d e3 7c 0c 00 f7 d8 64 89 01 48
RSP: 002b:00007fffb29f27a8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
RAX: ffffffffffffffda RBX: 0000564b29d78b90 RCX: 00007f71e426e15d
RDX: 0000000000000000 RSI: 0000564b29d78f00 RDI: 0000000000000003
RBP: 0000000000040000 R08: 0000000000000000 R09: 0000000000000020
R10: 0000000000000003 R11: 0000000000000246 R12: 0000564b29d78f00
R13: 0000564b29d78cc0 R14: 0000564b29d78b90 R15: 0000564b29d78f20
  </TASK>


[2]
modprobe null_blk poll_queues=64
[29808.758787] ------------[ cut here ]------------
[29808.758790] WARNING: CPU: 27 PID: 41164 at lib/group_cpus.c:400 
group_cpus_evenly+0x26e/0x280
[29808.758798] Modules linked in: null_blk(O+) xt_state xt_conntrack 
nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 uinput nvme(O) nvme_core(O) 
nvme_common snd_seq_dummy snd_hrtimer snd_seq snd_seq_device snd_timer 
snd soundcore ip6table_mangle ip6table_raw ip6table_security 
iptable_mangle iptable_raw iptable_security ip_set nf_tables rfkill 
nfnetlink ip6table_filter ip6_tables iptable_filter tun sunrpc 
intel_rapl_msr intel_rapl_common xfs kvm_amd ppdev ccp kvm parport_pc 
parport irqbypass pcspkr joydev i2c_piix4 zram ip_tables bochs 
drm_vram_helper crct10dif_pclmul crc32_pclmul drm_kms_helper 
crc32c_intel drm_ttm_helper ghash_clmulni_intel ttm sha512_ssse3 
virtio_net net_failover serio_raw virtio_blk drm failover ata_generic 
pata_acpi qemu_fw_cfg fuse [last unloaded: null_blk(O)]
[29808.758850] CPU: 27 PID: 41164 Comm: modprobe Tainted: G        W  O 
    N 6.3.0-rc1lblk+ #2
[29808.758853] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), 
BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
[29808.758855] RIP: 0010:group_cpus_evenly+0x26e/0x280
[29808.758858] Code: b1 ff 48 8b 7c 24 08 e8 20 d1 5d 00 48 8b 3c 24 e8 
17 d1 5d 00 45 85 ed 0f 89 01 fe ff ff e9 f1 fd ff ff e8 b4 9d 8d ff eb 
ac <0f> 0b eb a8 e8 39 c4 60 00 41 bd f4 ff ff ff eb 9b cc 90 90 90 90
[29808.758860] RSP: 0018:ffffc90000f4bcb8 EFLAGS: 00010287
[29808.758862] RAX: 0000000080000000 RBX: 0000000000000040 RCX: 
0000000000000000
[29808.758864] RDX: 0000000000000001 RSI: 0000000000000030 RDI: 
00000000ffffffff
[29808.758865] RBP: ffff8888535b2668 R08: ffff8888535b2150 R09: 
ffff8888c3fa0000
[29808.758866] R10: ffff8888535b2150 R11: 0000000000000000 R12: 
ffff8888c3fa0000
[29808.758868] R13: 0000000000000000 R14: 0000000000000030 R15: 
0000000000000000
[29808.758871] FS:  00007f00bda3eb80(0000) GS:ffff888fff8c0000(0000) 
knlGS:0000000000000000
[29808.758873] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[29808.758875] CR2: 00007f00bd506800 CR3: 00000008330cc000 CR4: 
0000000000350ee0
[29808.758878] DR0: ffffffff843793e1 DR1: ffffffff843793e2 DR2: 
ffffffff843793e3
[29808.758879] DR3: ffffffff8437944f DR6: 00000000ffff0ff0 DR7: 
0000000000000600
[29808.758880] Call Trace:
[29808.758883]  <TASK>
[29808.758888]  blk_mq_map_queues+0x16/0xc0
[29808.758893]  null_map_queues+0xa5/0xe0 [null_blk]
[29808.758903]  blk_mq_alloc_tag_set+0x14d/0x3f0
[29808.758907]  ? __kmalloc+0xbc/0x130
[29808.758911]  null_add_dev.part.0+0x601/0x700 [null_blk]
[29808.758920]  null_init+0x109/0xff0 [null_blk]
[29808.758929]  ? __pfx_init_module+0x10/0x10 [null_blk]
[29808.758937]  do_one_initcall+0x44/0x220
[29808.758942]  ? kmalloc_trace+0x25/0x90
[29808.758945]  do_init_module+0x4c/0x210
[29808.758949]  __do_sys_finit_module+0xb4/0x130
[29808.758955]  do_syscall_64+0x3b/0x90
[29808.758959]  entry_SYSCALL_64_after_hwframe+0x72/0xdc
[29808.758963] RIP: 0033:0x7f00bd52c15d
[29808.758965] Code: c5 0c 00 0f 05 eb a9 66 0f 1f 44 00 00 f3 0f 1e fa 
48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 
05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d e3 7c 0c 00 f7 d8 64 89 01 48
[29808.758967] RSP: 002b:00007ffdc8b239b8 EFLAGS: 00000246 ORIG_RAX: 
0000000000000139
[29808.758969] RAX: ffffffffffffffda RBX: 0000559f27d02b90 RCX: 
00007f00bd52c15d
[29808.758970] RDX: 0000000000000000 RSI: 0000559f27d02f00 RDI: 
0000000000000003
[29808.758971] RBP: 0000000000040000 R08: 0000000000000000 R09: 
0000000000000020
[29808.758972] R10: 0000000000000003 R11: 0000000000000246 R12: 
0000559f27d02f00
[29808.758973] R13: 0000559f27d02cc0 R14: 0000559f27d02b90 R15: 
0000559f27d02f20
[29808.758976]  </TASK>
[29808.758977] ---[ end trace 0000000000000000 ]---




[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