diff mbox series

blktests: add block/039 for test updating nr_hw_queues vs switching elevator

Message ID 20250402041429.942623-1-ming.lei@redhat.com (mailing list archive)
State New
Headers show
Series blktests: add block/039 for test updating nr_hw_queues vs switching elevator | expand

Commit Message

Ming Lei April 2, 2025, 4:14 a.m. UTC
Add block/039 for covering updating nr_hw_queues and switching elevator.

Signed-off-by: Ming Lei <ming.lei@redhat.com>
---
 tests/block/039     | 67 +++++++++++++++++++++++++++++++++++++++++++++
 tests/block/039.out |  1 +
 2 files changed, 68 insertions(+)
 create mode 100755 tests/block/039
 create mode 100644 tests/block/039.out

Comments

Shinichiro Kawasaki April 10, 2025, 7:38 a.m. UTC | #1
Hi Ming, thank you for the patch. Please find my comments in line.

On Apr 02, 2025 / 12:14, Ming Lei wrote:
> Add block/039 for covering updating nr_hw_queues and switching elevator.
> 
> Signed-off-by: Ming Lei <ming.lei@redhat.com>
> ---
>  tests/block/039     | 67 +++++++++++++++++++++++++++++++++++++++++++++
>  tests/block/039.out |  1 +
>  2 files changed, 68 insertions(+)
>  create mode 100755 tests/block/039
>  create mode 100644 tests/block/039.out
> 
> diff --git a/tests/block/039 b/tests/block/039
> new file mode 100755
> index 0000000..d29db45
> --- /dev/null
> +++ b/tests/block/039
> @@ -0,0 +1,67 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: GPL-2.0

Just a comment. Most of the blktests test cases have the license "GPL-2.0+" or
"GPL-3.0+". But I think "GPL-2.0" without "+" is appropriate for this new test
case, because this test case was copied from block/029, whose license is
"GPL-2.0" without "+".

> +# Copyright 2025 Ming Lei <ming.lei@redhat.com>
> +#
> +# Most of code is copied from block/029
> +#
> +# Trigger blk_mq_update_nr_hw_queues() & elevator switch
> +
> +. tests/block/rc
> +. common/null_blk
> +
> +DESCRIPTION="test blk_mq_update_nr_hw_queues() vs switch elevator"
> +QUICK=1
> +
> +requires() {
> +	_have_fio && _have_null_blk

Nit: "&&" is no longer recommended in requires(). Let's just list the two
conditions in two lines:

	_have_fio
	_have_null_blk

> +}
> +
> +
> +modify_io_sched() {
> +	local deadline
> +	local dev=$1
> +
> +	deadline=$(($(_uptime_s) + TIMEOUT))
> +	while [ "$(_uptime_s)" -lt "$deadline" ]; do
> +		for sched in $(_io_schedulers "$dev"); do
> +			echo "$sched" > /sys/block/"$dev"/queue/scheduler > /dev/null 2>&1

When I ran this test case, I checked how the scheduler changes using the
command below.

$ while true; do cat /sys/block/nullb1/queue/scheduler; cat /sys/kernel/config/nullb/nullb1/submit_queues; sleep .3; done

And I found that the scheduler was not changing. The line above has a bug,
and the redirect to queue/scheduler file was not working. When a single command
has two redirections for single file descriptor, the latter one becomes valid.
In the example below, the redirect works only for the file B.

   COMMAND > A > B

To change the scheduler as intended, I suggest to change the line above as
follows:

   echo "$sched" > /sys/block/"$dev"/queue/scheduler

If it is really required to redirect stderr to /dev/null,

  { echo "$sched" > /sys/block/"$dev"/queue/scheduler ;} &> /dev/null

will work. With either of these changes, I confirmed that the schedulers
are switched during the test case run.

One interesting observation is that when I ran the test case with the suggested
change on the kernel v6.15-rc1, it triggered KASAN sauf followed by test process
hang [1].  (This proves that the test case is a good one :) I quickly tried the
same run on the kernel v6.14, but the KASAN and the hang were not observed.

Ming, may I ask you to take a look in the KASAN sauf? I hope you can recreate it
in your environment.

> +			sleep .5
> +		done
> +	done
> +}
> +
> +modify_nr_hw_queues() {
> +	local deadline num_cpus
> +
> +	deadline=$(($(_uptime_s) + TIMEOUT))
> +	num_cpus=$(nproc)
> +	while [ "$(_uptime_s)" -lt "$deadline" ]; do
> +		sleep .1
> +		echo 1 > /sys/kernel/config/nullb/nullb1/submit_queues
> +		sleep .1
> +		echo "$num_cpus" > /sys/kernel/config/nullb/nullb1/submit_queues
> +	done
> +}
> +
> +test() {
> +	local sq=/sys/kernel/config/nullb/nullb1/submit_queues
> +
> +	: "${TIMEOUT:=30}"
> +	_configure_null_blk nullb1 completion_nsec=0 blocksize=512 \
> +			    size=16 memory_backed=1 power=1 &&
> +	if { echo 1 >$sq; } 2>/dev/null; then
> +		modify_nr_hw_queues &
> +		modify_io_sched nullb1 &
> +		fio --rw=randwrite --bs=4K --loops=$((10**6)) \
> +		    --iodepth=64 --group_reporting --sync=1 --direct=1 \
> +		    --ioengine=libaio --filename="/dev/nullb1" \
> +		    --runtime="${TIMEOUT}" --name=nullb1 \
> +		    --output="${RESULTS_DIR}/block/fio-output-029.txt" \
> +		    >>"$FULL"
> +		wait
> +	else
> +		echo "Skipping test because $sq cannot be modified" >>"$FULL"

To conform to blktests test case skip mechanism, I suggest to replace
the line above as follows:

		SKIP_REASONS+=("$sq cannot be modified")
		_exit_null_blk
		return

The same change in block/029 is desired, but I think it can be left as a future
left work.

> +	fi
> +	_exit_null_blk
> +	echo Passed
> +}
> diff --git a/tests/block/039.out b/tests/block/039.out
> new file mode 100644
> index 0000000..863339f
> --- /dev/null
> +++ b/tests/block/039.out
> @@ -0,0 +1 @@
> +Passed
> -- 
> 2.44.0
> 


[1]

[ 1946.004009] [   T4057] ==================================================================
[ 1946.005611] [   T4057] BUG: KASAN: slab-use-after-free in elv_iosched_show+0x21f/0x240
[ 1946.007251] [   T4057] Read of size 8 at addr ffff88812b5cd000 by task cat/4057

[ 1946.008987] [   T4057] CPU: 2 UID: 1000 PID: 4057 Comm: cat Not tainted 6.15.0-rc1+ #22 PREEMPT(voluntary) 
[ 1946.008996] [   T4057] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
[ 1946.009000] [   T4057] Call Trace:
[ 1946.009004] [   T4057]  <TASK>
[ 1946.009008] [   T4057]  dump_stack_lvl+0x6a/0x90
[ 1946.009020] [   T4057]  print_report+0x174/0x554
[ 1946.009028] [   T4057]  ? __virt_addr_valid+0x208/0x430
[ 1946.009050] [   T4057]  ? elv_iosched_show+0x21f/0x240
[ 1946.009056] [   T4057]  kasan_report+0xae/0x170
[ 1946.009064] [   T4057]  ? elv_iosched_show+0x21f/0x240
[ 1946.009072] [   T4057]  elv_iosched_show+0x21f/0x240
[ 1946.009079] [   T4057]  sysfs_kf_seq_show+0x1c5/0x340
[ 1946.009088] [   T4057]  seq_read_iter+0x2c5/0x1150
[ 1946.009096] [   T4057]  ? security_file_permission+0x3f/0xb0
[ 1946.009109] [   T4057]  ? rw_verify_area+0x69/0x520
[ 1946.009116] [   T4057]  vfs_read+0x6ba/0xa20
[ 1946.009122] [   T4057]  ? do_anonymous_page+0x3ce/0x1a00
[ 1946.009129] [   T4057]  ? __pfx_vfs_read+0x10/0x10
[ 1946.009141] [   T4057]  ksys_read+0xf5/0x1c0
[ 1946.009146] [   T4057]  ? __pfx_ksys_read+0x10/0x10
[ 1946.009152] [   T4057]  ? do_syscall_64+0x54/0x190
[ 1946.009159] [   T4057]  do_syscall_64+0x93/0x190
[ 1946.009163] [   T4057]  ? rcu_is_watching+0x11/0xb0
[ 1946.009170] [   T4057]  ? rcu_read_unlock+0x17/0x60
[ 1946.009174] [   T4057]  ? rcu_is_watching+0x11/0xb0
[ 1946.009180] [   T4057]  ? lock_release+0x217/0x2c0
[ 1946.009185] [   T4057]  ? rcu_is_watching+0x11/0xb0
[ 1946.009190] [   T4057]  ? count_memcg_events.constprop.0+0x4a/0x60
[ 1946.009195] [   T4057]  ? exc_page_fault+0x7a/0x110
[ 1946.009200] [   T4057]  ? rcu_is_watching+0x11/0xb0
[ 1946.009205] [   T4057]  ? lock_release+0x217/0x2c0
[ 1946.009209] [   T4057]  ? do_user_addr_fault+0x171/0xa00
[ 1946.009216] [   T4057]  ? do_user_addr_fault+0x4a2/0xa00
[ 1946.009221] [   T4057]  ? irqentry_exit_to_user_mode+0x84/0x270
[ 1946.009226] [   T4057]  ? rcu_is_watching+0x11/0xb0
[ 1946.009231] [   T4057]  ? irqentry_exit_to_user_mode+0x84/0x270
[ 1946.009235] [   T4057]  ? trace_hardirqs_on_prepare+0xdb/0x120
[ 1946.009249] [   T4057]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
[ 1946.009254] [   T4057] RIP: 0033:0x7fa43e4b63d1
[ 1946.009262] [   T4057] Code: 00 48 8b 15 41 1a 10 00 f7 d8 64 89 02 b8 ff ff ff ff eb bd e8 20 ad 01 00 f3 0f 1e fa 80 3d f5 9c 10 00 00 74 13 31 c0 0f 05 <48> 3d 00 f0 ff ff 77 4f c3 66 0f 1f 44 00 00 55 48 89 e5 48 83 ec
[ 1946.009267] [   T4057] RSP: 002b:00007fff428aeba8 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
[ 1946.009275] [   T4057] RAX: ffffffffffffffda RBX: 0000000000040000 RCX: 00007fa43e4b63d1
[ 1946.009279] [   T4057] RDX: 0000000000040000 RSI: 00007fa43e32c000 RDI: 0000000000000003
[ 1946.009282] [   T4057] RBP: 00007fff428aebd0 R08: 0000000000000000 R09: 00007fa43e60c380
[ 1946.009285] [   T4057] R10: 0000000000000022 R11: 0000000000000246 R12: 0000000000040000
[ 1946.009288] [   T4057] R13: 00007fa43e32c000 R14: 0000000000000003 R15: 0000000000000000
[ 1946.009298] [   T4057]  </TASK>

[ 1946.042407] [   T4057] Allocated by task 3917:
[ 1946.042978] [   T4057]  kasan_save_stack+0x2c/0x50
[ 1946.043554] [   T4057]  kasan_save_track+0x10/0x30
[ 1946.044153] [   T4057]  __kasan_kmalloc+0xa6/0xb0
[ 1946.044722] [   T4057]  elevator_alloc+0x78/0x1a0
[ 1946.045328] [   T4057]  dd_init_sched+0x1b/0x4d0
[ 1946.045897] [   T4057]  blk_mq_init_sched+0x396/0x5e0
[ 1946.046493] [   T4057]  elevator_switch+0x149/0x4b0
[ 1946.047092] [   T4057]  blk_mq_update_nr_hw_queues+0x835/0x1170
[ 1946.047745] [   T4057]  nullb_update_nr_hw_queues+0x1a9/0x370 [null_blk]
[ 1946.048479] [   T4057]  nullb_device_submit_queues_store+0xd7/0x170 [null_blk]
[ 1946.049282] [   T4057]  configfs_write_iter+0x2a8/0x460
[ 1946.049940] [   T4057]  vfs_write+0x5f7/0xe90
[ 1946.050521] [   T4057]  ksys_write+0xf5/0x1c0
[ 1946.051128] [   T4057]  do_syscall_64+0x93/0x190
[ 1946.051733] [   T4057]  entry_SYSCALL_64_after_hwframe+0x76/0x7e

[ 1946.052853] [   T4057] Freed by task 3918:
[ 1946.053390] [   T4057]  kasan_save_stack+0x2c/0x50
[ 1946.054015] [   T4057]  kasan_save_track+0x10/0x30
[ 1946.054604] [   T4057]  kasan_save_free_info+0x37/0x60
[ 1946.055233] [   T4057]  __kasan_slab_free+0x4b/0x70
[ 1946.055822] [   T4057]  kfree+0x13a/0x4b0
[ 1946.056366] [   T4057]  kobject_put+0x17b/0x4a0
[ 1946.056934] [   T4057]  elevator_switch+0x13d/0x4b0
[ 1946.057529] [   T4057]  elv_iosched_store+0x394/0x4d0
[ 1946.058162] [   T4057]  queue_attr_store+0x236/0x2f0
[ 1946.058768] [   T4057]  kernfs_fop_write_iter+0x39f/0x5a0
[ 1946.059395] [   T4057]  vfs_write+0x5f7/0xe90
[ 1946.059947] [   T4057]  ksys_write+0xf5/0x1c0
[ 1946.060491] [   T4057]  do_syscall_64+0x93/0x190
[ 1946.061101] [   T4057]  entry_SYSCALL_64_after_hwframe+0x76/0x7e

[ 1946.062203] [   T4057] The buggy address belongs to the object at ffff88812b5cd000
                           which belongs to the cache kmalloc-1k of size 1024
[ 1946.063689] [   T4057] The buggy address is located 0 bytes inside of
                           freed 1024-byte region [ffff88812b5cd000, ffff88812b5cd400)

[ 1946.065668] [   T4057] The buggy address belongs to the physical page:
[ 1946.066407] [   T4057] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x12b5c8
[ 1946.067324] [   T4057] head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
[ 1946.068186] [   T4057] anon flags: 0x17ffffc0000040(head|node=0|zone=2|lastcpupid=0x1fffff)
[ 1946.068997] [   T4057] page_type: f5(slab)
[ 1946.069554] [   T4057] raw: 0017ffffc0000040 ffff888100042dc0 0000000000000000 dead000000000001
[ 1946.070417] [   T4057] raw: 0000000000000000 0000000000100010 00000000f5000000 0000000000000000
[ 1946.071271] [   T4057] head: 0017ffffc0000040 ffff888100042dc0 0000000000000000 dead000000000001
[ 1946.072127] [   T4057] head: 0000000000000000 0000000000100010 00000000f5000000 0000000000000000
[ 1946.072976] [   T4057] head: 0017ffffc0000003 ffffea0004ad7201 00000000ffffffff 00000000ffffffff
[ 1946.073825] [   T4057] head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
[ 1946.074666] [   T4057] page dumped because: kasan: bad access detected

[ 1946.075812] [   T4057] Memory state around the buggy address:
[ 1946.076470] [   T4057]  ffff88812b5ccf00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[ 1946.077337] [   T4057]  ffff88812b5ccf80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[ 1946.078160] [   T4057] >ffff88812b5cd000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
[ 1946.078961] [   T4057]                    ^
[ 1946.079512] [   T4057]  ffff88812b5cd080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
[ 1946.080342] [   T4057]  ffff88812b5cd100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
[ 1946.081186] [   T4057] ==================================================================
[ 1949.678369] [   T3930] Oops: general protection fault, probably for non-canonical address 0xdffffc0000000002: 0000 [#1] SMP KASAN PTI
[ 1949.681175] [   T3930] KASAN: null-ptr-deref in range [0x0000000000000010-0x0000000000000017]
[ 1949.683292] [   T3930] CPU: 1 UID: 0 PID: 3930 Comm: fio Tainted: G    B               6.15.0-rc1+ #22 PREEMPT(voluntary) 
[ 1949.685782] [   T3930] Tainted: [B]=BAD_PAGE
[ 1949.687544] [   T3930] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
[ 1949.689881] [   T3930] RIP: 0010:dd_limit_depth+0x16e/0x2a0
[ 1949.691773] [   T3930] Code: 03 80 3c 02 00 0f 85 2b 01 00 00 49 8d 7e 14 4c 8b ad d0 02 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 44 89 ed <0f> b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 84
[ 1949.696185] [   T3930] RSP: 0018:ffff88811a807260 EFLAGS: 00010203
[ 1949.697702] [   T3930] RAX: dffffc0000000000 RBX: ffff88811a80745c RCX: ffffffffaf6749c0
[ 1949.699289] [   T3930] RDX: 0000000000000002 RSI: ffff88811a807448 RDI: 0000000000000014
[ 1949.700749] [   T3930] RBP: 0000000000000080 R08: ffff88811a807458 R09: ffff8881322e9d40
[ 1949.702017] [   T3930] R10: ffff88811a807470 R11: ffff8881322e9d58 R12: 0000000000000080
[ 1949.703078] [   T3930] R13: 0000000000000080 R14: 0000000000000000 R15: ffff88811a807448
[ 1949.704118] [   T3930] FS:  00007f789a1ea740(0000) GS:ffff8883fa4bf000(0000) knlGS:0000000000000000
[ 1949.705084] [   T3930] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1949.705850] [   T3930] CR2: 0000556aa4e2e164 CR3: 000000014762c000 CR4: 00000000000006f0
[ 1949.706666] [   T3930] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 1949.707516] [   T3930] DR3: 0000000000000000 DR6: 00000000ffff07f0 DR7: 0000000000000400
[ 1949.708346] [   T3930] Call Trace:
[ 1949.708991] [   T3930]  <TASK>
[ 1949.709610] [   T3930]  __blk_mq_alloc_requests+0x32f/0x1280
[ 1949.710374] [   T3930]  ? __pfx_wbt_wait+0x10/0x10
[ 1949.711081] [   T3930]  ? __pfx___blk_mq_alloc_requests+0x10/0x10
[ 1949.711840] [   T3930]  ? __pfx_dd_bio_merge+0x10/0x10
[ 1949.712538] [   T3930]  ? blk_mq_submit_bio+0xc83/0x2070
[ 1949.713433] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.714150] [   T3930]  blk_mq_submit_bio+0x759/0x2070
[ 1949.714886] [   T3930]  ? __pfx_blk_mq_submit_bio+0x10/0x10
[ 1949.715596] [   T3930]  __submit_bio+0x36a/0x6c0
[ 1949.716320] [   T3930]  ? bio_associate_blkg_from_css+0x3cb/0xf20
[ 1949.717040] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.717722] [   T3930]  ? __pfx___submit_bio+0x10/0x10
[ 1949.718404] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.719060] [   T3930]  ? seqcount_lockdep_reader_access.constprop.0+0x82/0x90
[ 1949.720003] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.720660] [   T3930]  ? seqcount_lockdep_reader_access.constprop.0+0x82/0x90
[ 1949.721409] [   T3930]  ? trace_hardirqs_on+0x12/0x120
[ 1949.722117] [   T3930]  ? submit_bio_noacct_nocheck+0x522/0xc70
[ 1949.722849] [   T3930]  submit_bio_noacct_nocheck+0x522/0xc70
[ 1949.723704] [   T3930]  ? __pfx_submit_bio_noacct_nocheck+0x10/0x10
[ 1949.724578] [   T3930]  ? submit_bio_noacct+0x991/0x19c0
[ 1949.725473] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.726354] [   T3930]  blkdev_direct_IO+0x90a/0x2070
[ 1949.727242] [   T3930]  ? __pfx_blkdev_direct_IO+0x10/0x10
[ 1949.728121] [   T3930]  ? filemap_check_errors+0x56/0xe0
[ 1949.728851] [   T3930]  blkdev_write_iter+0x50b/0xc10
[ 1949.729564] [   T3930]  aio_write+0x335/0x880
[ 1949.730267] [   T3930]  ? __pfx_aio_write+0x10/0x10
[ 1949.730922] [   T3930]  ? __pfx___might_resched+0x10/0x10
[ 1949.731577] [   T3930]  ? __might_fault+0x99/0x120
[ 1949.732240] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.732860] [   T3930]  ? io_submit_one+0xdf0/0x1aa0
[ 1949.733521] [   T3930]  io_submit_one+0xdf0/0x1aa0
[ 1949.734155] [   T3930]  ? __x64_sys_io_getevents+0x14e/0x290
[ 1949.734784] [   T3930]  ? __pfx___x64_sys_io_getevents+0x10/0x10
[ 1949.735439] [   T3930]  ? __pfx_io_submit_one+0x10/0x10
[ 1949.736041] [   T3930]  ? syscall_exit_to_user_mode+0x93/0x280
[ 1949.736665] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.737237] [   T3930]  ? __pfx___might_resched+0x10/0x10
[ 1949.737828] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.738400] [   T3930]  ? __might_fault+0x99/0x120
[ 1949.738969] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.739537] [   T3930]  ? __x64_sys_io_submit+0x165/0x2c0
[ 1949.740164] [   T3930]  __x64_sys_io_submit+0x165/0x2c0
[ 1949.740734] [   T3930]  ? __pfx___x64_sys_io_submit+0x10/0x10
[ 1949.741321] [   T3930]  ? percpu_ref_put_many.constprop.0+0x7a/0x1b0
[ 1949.741934] [   T3930]  do_syscall_64+0x93/0x190
[ 1949.742514] [   T3930]  ? __pfx___x64_sys_io_submit+0x10/0x10
[ 1949.743112] [   T3930]  ? syscall_exit_to_user_mode+0x93/0x280
[ 1949.743693] [   T3930]  ? syscall_exit_to_user_mode+0x8e/0x280
[ 1949.744275] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.744850] [   T3930]  ? syscall_exit_to_user_mode+0x8e/0x280
[ 1949.745429] [   T3930]  ? trace_hardirqs_on_prepare+0xdb/0x120
[ 1949.746031] [   T3930]  ? syscall_exit_to_user_mode+0x93/0x280
[ 1949.746617] [   T3930]  ? do_syscall_64+0x9f/0x190
[ 1949.747212] [   T3930]  ? trace_hardirqs_on_prepare+0xdb/0x120
[ 1949.747795] [   T3930]  ? syscall_exit_to_user_mode+0x93/0x280
[ 1949.748383] [   T3930]  ? do_syscall_64+0x9f/0x190
[ 1949.748926] [   T3930]  ? syscall_exit_to_user_mode+0x93/0x280
[ 1949.749509] [   T3930]  ? do_syscall_64+0x9f/0x190
[ 1949.750099] [   T3930]  ? trace_hardirqs_on_prepare+0xdb/0x120
[ 1949.750681] [   T3930]  ? syscall_exit_to_user_mode+0x93/0x280
[ 1949.751271] [   T3930]  ? do_syscall_64+0x9f/0x190
[ 1949.751818] [   T3930]  ? do_syscall_64+0x9f/0x190
[ 1949.752357] [   T3930]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
[ 1949.752938] [   T3930] RIP: 0033:0x7f789a2e195d
[ 1949.753486] [   T3930] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 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 83 64 0f 00 f7 d8 64 89 01 48
[ 1949.754985] [   T3930] RSP: 002b:00007fff900de298 EFLAGS: 00000246 ORIG_RAX: 00000000000000d1
[ 1949.755702] [   T3930] RAX: ffffffffffffffda RBX: 00007f789a1ea6c0 RCX: 00007f789a2e195d
[ 1949.756390] [   T3930] RDX: 0000000030e1eef8 RSI: 0000000000000001 RDI: 00007f789159b000
[ 1949.757128] [   T3930] RBP: 00007fff900de2d0 R08: 0000034b66d0deb4 R09: 0000000000000001
[ 1949.757825] [   T3930] R10: 0000000000000000 R11: 0000000000000246 R12: 00007f789159b000
[ 1949.758522] [   T3930] R13: 0000000000000000 R14: 0000000000000001 R15: 0000000030e1eef8
[ 1949.759255] [   T3930]  </TASK>
[ 1949.759758] [   T3930] Modules linked in: null_blk nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ip_set nf_tables qrtr sunrpc ppdev parport_pc parport 9pnet_virtio 9pnet e1000 netfs i2c_piix4 pcspkr i2c_smbus loop fuse dm_multipath nfnetlink vsock_loopback vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vsock vmw_vmci zram bochs drm_client_lib drm_shmem_helper drm_kms_helper xfs drm nvme sym53c8xx scsi_transport_spi nvme_core floppy nvme_keyring nvme_auth serio_raw ata_generic pata_acpi qemu_fw_cfg [last unloaded: null_blk]
[ 1949.764286] [   T3930] ---[ end trace 0000000000000000 ]---
[ 1949.764925] [   T3930] RIP: 0010:dd_limit_depth+0x16e/0x2a0
[ 1949.765584] [   T3930] Code: 03 80 3c 02 00 0f 85 2b 01 00 00 49 8d 7e 14 4c 8b ad d0 02 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 44 89 ed <0f> b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 84
[ 1949.767349] [   T3930] RSP: 0018:ffff88811a807260 EFLAGS: 00010203
[ 1949.768048] [   T3930] RAX: dffffc0000000000 RBX: ffff88811a80745c RCX: ffffffffaf6749c0
[ 1949.768777] [   T3930] RDX: 0000000000000002 RSI: ffff88811a807448 RDI: 0000000000000014
[ 1949.769627] [   T3930] RBP: 0000000000000080 R08: ffff88811a807458 R09: ffff8881322e9d40
[ 1949.770470] [   T3930] R10: ffff88811a807470 R11: ffff8881322e9d58 R12: 0000000000000080
[ 1949.771211] [   T3930] R13: 0000000000000080 R14: 0000000000000000 R15: ffff88811a807448
[ 1949.771917] [   T3930] FS:  00007f789a1ea740(0000) GS:ffff8883fa4bf000(0000) knlGS:0000000000000000
[ 1949.772708] [   T3930] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1949.773474] [   T3930] CR2: 0000556aa4e2e164 CR3: 000000014762c000 CR4: 00000000000006f0
[ 1949.774285] [   T3930] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 1949.775058] [   T3930] DR3: 0000000000000000 DR6: 00000000ffff07f0 DR7: 0000000000000400
[ 1949.775804] [   T3930] ------------[ cut here ]------------
[ 1949.776556] [   T3930] WARNING: CPU: 1 PID: 3930 at kernel/exit.c:900 do_exit+0x17da/0x2570
[ 1949.777412] [   T3930] Modules linked in: null_blk nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ip_set nf_tables qrtr sunrpc ppdev parport_pc parport 9pnet_virtio 9pnet e1000 netfs i2c_piix4 pcspkr i2c_smbus loop fuse dm_multipath nfnetlink vsock_loopback vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vsock vmw_vmci zram bochs drm_client_lib drm_shmem_helper drm_kms_helper xfs drm nvme sym53c8xx scsi_transport_spi nvme_core floppy nvme_keyring nvme_auth serio_raw ata_generic pata_acpi qemu_fw_cfg [last unloaded: null_blk]
[ 1949.782589] [   T3930] CPU: 1 UID: 0 PID: 3930 Comm: fio Tainted: G    B D             6.15.0-rc1+ #22 PREEMPT(voluntary) 
[ 1949.783665] [   T3930] Tainted: [B]=BAD_PAGE, [D]=DIE
[ 1949.784394] [   T3930] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
[ 1949.785407] [   T3930] RIP: 0010:do_exit+0x17da/0x2570
[ 1949.786085] [   T3930] Code: 48 c1 ea 03 48 c1 e0 2a 0f b6 04 02 84 c0 74 08 3c 03 0f 8e 0f 0c 00 00 8b 83 60 1e 00 00 65 01 05 4f e4 6e 05 e9 d0 fd ff ff <0f> 0b e9 14 ea ff ff 0f 0b e9 96 e8 ff ff 4c 89 fe bf 05 06 00 00
[ 1949.788078] [   T3930] RSP: 0018:ffff88811a807e68 EFLAGS: 00010286
[ 1949.788832] [   T3930] RAX: dffffc0000000000 RBX: ffff88814d3cb340 RCX: 0000000000000000
[ 1949.789644] [   T3930] RDX: 1ffff11029a79939 RSI: ffffffffb13d4780 RDI: ffff88814d3cc9c8
[ 1949.790582] [   T3930] RBP: ffff88814d3cc068 R08: 0000000000000000 R09: fffffbfff658bf8c
[ 1949.791527] [   T3930] R10: 0000000000000000 R11: 0000000000000001 R12: ffff88814161db00
[ 1949.792454] [   T3930] R13: ffff888124f62f80 R14: ffff88814d3cc060 R15: 000000000000000b
[ 1949.793364] [   T3930] FS:  00007f789a1ea740(0000) GS:ffff8883fa4bf000(0000) knlGS:0000000000000000
[ 1949.794288] [   T3930] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1949.795055] [   T3930] CR2: 0000556aa4e2e164 CR3: 000000014762c000 CR4: 00000000000006f0
[ 1949.795871] [   T3930] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 1949.796699] [   T3930] DR3: 0000000000000000 DR6: 00000000ffff07f0 DR7: 0000000000000400
[ 1949.797653] [   T3930] Call Trace:
[ 1949.798384] [   T3930]  <TASK>
[ 1949.799001] [   T3930]  ? syscall_exit_to_user_mode+0x93/0x280
[ 1949.799729] [   T3930]  ? do_syscall_64+0x9f/0x190
[ 1949.800522] [   T3930]  ? __pfx_do_exit+0x10/0x10
[ 1949.801261] [   T3930]  ? do_syscall_64+0x9f/0x190
[ 1949.801935] [   T3930]  ? trace_hardirqs_on_prepare+0xdb/0x120
[ 1949.802646] [   T3930]  ? syscall_exit_to_user_mode+0x93/0x280
[ 1949.803423] [   T3930]  make_task_dead+0xf3/0x110
[ 1949.804110] [   T3930]  rewind_stack_and_make_dead+0x16/0x20
[ 1949.804768] [   T3930] RIP: 0033:0x7f789a2e195d
[ 1949.805484] [   T3930] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 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 83 64 0f 00 f7 d8 64 89 01 48
[ 1949.807188] [   T3930] RSP: 002b:00007fff900de298 EFLAGS: 00000246 ORIG_RAX: 00000000000000d1
[ 1949.808039] [   T3930] RAX: ffffffffffffffda RBX: 00007f789a1ea6c0 RCX: 00007f789a2e195d
[ 1949.808821] [   T3930] RDX: 0000000030e1eef8 RSI: 0000000000000001 RDI: 00007f789159b000
[ 1949.809587] [   T3930] RBP: 00007fff900de2d0 R08: 0000034b66d0deb4 R09: 0000000000000001
[ 1949.810495] [   T3930] R10: 0000000000000000 R11: 0000000000000246 R12: 00007f789159b000
[ 1949.811329] [   T3930] R13: 0000000000000000 R14: 0000000000000001 R15: 0000000030e1eef8
[ 1949.812110] [   T3930]  </TASK>
[ 1949.812675] [   T3930] irq event stamp: 0
[ 1949.813333] [   T3930] hardirqs last  enabled at (0): [<0000000000000000>] 0x0
[ 1949.814065] [   T3930] hardirqs last disabled at (0): [<ffffffffae4f3bff>] copy_process+0x1f3f/0x87d0
[ 1949.814907] [   T3930] softirqs last  enabled at (0): [<ffffffffae4f3c64>] copy_process+0x1fa4/0x87d0
[ 1949.815703] [   T3930] softirqs last disabled at (0): [<0000000000000000>] 0x0
[ 1949.816530] [   T3930] ---[ end trace 0000000000000000 ]---
[ 1949.817334] [   T3930] Oops: general protection fault, probably for non-canonical address 0xdffffc000836b157: 0000 [#2] SMP KASAN PTI
[ 1949.820559] [   T3930] KASAN: probably user-memory-access in range [0x0000000041b58ab8-0x0000000041b58abf]
[ 1949.823356] [   T3930] CPU: 3 UID: 0 PID: 3930 Comm: fio Tainted: G    B D W           6.15.0-rc1+ #22 PREEMPT(voluntary) 
[ 1949.826308] [   T3930] Tainted: [B]=BAD_PAGE, [D]=DIE, [W]=WARN
[ 1949.828302] [   T3930] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
[ 1949.830302] [   T3930] RIP: 0010:__blk_flush_plug+0x10d/0x4d0
[ 1949.831705] [   T3930] Code: 39 c6 74 6f 48 8b 7c 24 10 4c 8b 6c 24 60 48 8b 42 30 80 3f 00 0f 85 7c 03 00 00 48 8d 78 08 4c 8b 62 38 48 89 f9 48 c1 e9 03 <80> 3c 29 00 0f 85 8e 03 00 00 48 89 58 08 48 89 44 24 60 4c 89 e0
[ 1949.834899] [   T3930] RSP: 0018:ffff88811a807a20 EFLAGS: 00010202
[ 1949.835941] [   T3930] RAX: 0000000041b58ab3 RBX: ffff88811a807a80 RCX: 000000000836b157
[ 1949.837134] [   T3930] RDX: ffff88811a807560 RSI: ffff88811a807590 RDI: 0000000041b58abb
[ 1949.838124] [   T3930] RBP: dffffc0000000000 R08: ffff88811a807590 R09: 0000000000000000
[ 1949.839035] [   T3930] R10: 0000000000000000 R11: ffffffffae2f6526 R12: 0000000000000010
[ 1949.839930] [   T3930] R13: ffff88811a807a80 R14: 0000000000000001 R15: ffff88811a807560
[ 1949.840815] [   T3930] FS:  0000000000000000(0000) GS:ffff8883fa5bf000(0000) knlGS:0000000000000000
[ 1949.841725] [   T3930] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1949.842496] [   T3930] CR2: 00007f6e5397d0f0 CR3: 000000014762c000 CR4: 00000000000006f0
[ 1949.843369] [   T3930] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 1949.844263] [   T3930] DR3: 0000000000000000 DR6: 00000000ffff07f0 DR7: 0000000000000400
[ 1949.845145] [   T3930] Call Trace:
[ 1949.845707] [   T3930]  <TASK>
[ 1949.846246] [   T3930]  ? __pfx___blk_flush_plug+0x10/0x10
[ 1949.846939] [   T3930]  ? lock_acquire+0x2b2/0x310
[ 1949.847590] [   T3930]  schedule+0x2b0/0x390
[ 1949.848216] [   T3930]  schedule_timeout+0x176/0x230
[ 1949.848874] [   T3930]  ? __pfx_schedule_timeout+0x10/0x10
[ 1949.849561] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.850231] [   T3930]  ? _raw_spin_unlock_irq+0x24/0x50
[ 1949.850904] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.851555] [   T3930]  __wait_for_common+0x2ea/0x4c0
[ 1949.852229] [   T3930]  ? __pfx_schedule_timeout+0x10/0x10
[ 1949.852919] [   T3930]  ? __pfx___wait_for_common+0x10/0x10
[ 1949.853605] [   T3930]  ? _raw_spin_unlock_irqrestore+0x4c/0x60
[ 1949.854340] [   T3930]  ? trace_hardirqs_on+0x12/0x120
[ 1949.855017] [   T3930]  ? _raw_spin_unlock_irqrestore+0x35/0x60
[ 1949.855715] [   T3930]  ? kill_ioctx+0x1dd/0x2a0
[ 1949.856332] [   T3930]  exit_aio+0x286/0x310
[ 1949.856902] [   T3930]  ? __pfx_exit_aio+0x10/0x10
[ 1949.857518] [   T3930]  __mmput+0x6e/0x380
[ 1949.858118] [   T3930]  do_exit+0x83f/0x2570
[ 1949.858692] [   T3930]  ? syscall_exit_to_user_mode+0x93/0x280
[ 1949.859362] [   T3930]  ? do_syscall_64+0x9f/0x190
[ 1949.860000] [   T3930]  ? __pfx_do_exit+0x10/0x10
[ 1949.860597] [   T3930]  ? do_syscall_64+0x9f/0x190
[ 1949.861209] [   T3930]  ? trace_hardirqs_on_prepare+0xdb/0x120
[ 1949.861878] [   T3930]  ? syscall_exit_to_user_mode+0x93/0x280
[ 1949.862540] [   T3930]  make_task_dead+0xf3/0x110
[ 1949.863159] [   T3930]  rewind_stack_and_make_dead+0x16/0x20
[ 1949.863815] [   T3930] RIP: 0033:0x7f789a2e195d
[ 1949.864399] [   T3930] Code: Unable to access opcode bytes at 0x7f789a2e1933.
[ 1949.865145] [   T3930] RSP: 002b:00007fff900de298 EFLAGS: 00000246 ORIG_RAX: 00000000000000d1
[ 1949.866008] [   T3930] RAX: ffffffffffffffda RBX: 00007f789a1ea6c0 RCX: 00007f789a2e195d
[ 1949.866814] [   T3930] RDX: 0000000030e1eef8 RSI: 0000000000000001 RDI: 00007f789159b000
[ 1949.867609] [   T3930] RBP: 00007fff900de2d0 R08: 0000034b66d0deb4 R09: 0000000000000001
[ 1949.868467] [   T3930] R10: 0000000000000000 R11: 0000000000000246 R12: 00007f789159b000
[ 1949.869343] [   T3930] R13: 0000000000000000 R14: 0000000000000001 R15: 0000000030e1eef8
[ 1949.870215] [   T3930]  </TASK>
[ 1949.870698] [   T3930] Modules linked in: null_blk nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ip_set nf_tables qrtr sunrpc ppdev parport_pc parport 9pnet_virtio 9pnet e1000 netfs i2c_piix4 pcspkr i2c_smbus loop fuse dm_multipath nfnetlink vsock_loopback vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vsock vmw_vmci zram bochs drm_client_lib drm_shmem_helper drm_kms_helper xfs drm nvme sym53c8xx scsi_transport_spi nvme_core floppy nvme_keyring nvme_auth serio_raw ata_generic pata_acpi qemu_fw_cfg [last unloaded: null_blk]
[ 1949.876129] [   T3930] ---[ end trace 0000000000000000 ]---
[ 1949.876853] [   T3930] RIP: 0010:dd_limit_depth+0x16e/0x2a0
[ 1949.877658] [   T3930] Code: 03 80 3c 02 00 0f 85 2b 01 00 00 49 8d 7e 14 4c 8b ad d0 02 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 44 89 ed <0f> b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 84
[ 1949.879919] [   T3930] RSP: 0018:ffff88811a807260 EFLAGS: 00010203
[ 1949.881037] [   T3930] RAX: dffffc0000000000 RBX: ffff88811a80745c RCX: ffffffffaf6749c0
[ 1949.881915] [   T3930] RDX: 0000000000000002 RSI: ffff88811a807448 RDI: 0000000000000014
[ 1949.882784] [   T3930] RBP: 0000000000000080 R08: ffff88811a807458 R09: ffff8881322e9d40
[ 1949.883645] [   T3930] R10: ffff88811a807470 R11: ffff8881322e9d58 R12: 0000000000000080
[ 1949.884529] [   T3930] R13: 0000000000000080 R14: 0000000000000000 R15: ffff88811a807448
[ 1949.885431] [   T3930] FS:  0000000000000000(0000) GS:ffff8883fa5bf000(0000) knlGS:0000000000000000
[ 1949.886413] [   T3930] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1949.887227] [   T3930] CR2: 00007f6e5397d0f0 CR3: 000000014762c000 CR4: 00000000000006f0
[ 1949.888193] [   T3930] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 1949.889121] [   T3930] DR3: 0000000000000000 DR6: 00000000ffff07f0 DR7: 0000000000000400
[ 1949.890013] [   T3930] Fixing recursive fault but reboot is needed!
[ 1949.890822] [   T3930] check_preemption_disabled: 40 callbacks suppressed
[ 1949.890824] [   T3930] BUG: using smp_processor_id() in preemptible [00000000] code: fio/3930
[ 1949.892952] [   T3930] caller is __schedule+0xea/0x5fa0
[ 1949.893780] [   T3930] CPU: 3 UID: 0 PID: 3930 Comm: fio Tainted: G    B D W           6.15.0-rc1+ #22 PREEMPT(voluntary) 
[ 1949.893785] [   T3930] Tainted: [B]=BAD_PAGE, [D]=DIE, [W]=WARN
[ 1949.893786] [   T3930] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
[ 1949.893789] [   T3930] Call Trace:
[ 1949.893791] [   T3930]  <TASK>
[ 1949.893792] [   T3930]  dump_stack_lvl+0x6a/0x90
[ 1949.893797] [   T3930]  ? do_task_dead+0xcb/0x100
[ 1949.893800] [   T3930]  check_preemption_disabled+0xda/0xe0
[ 1949.893804] [   T3930]  __schedule+0xea/0x5fa0
[ 1949.893806] [   T3930]  ? __wake_up_klogd.part.0+0x79/0xc0
[ 1949.893809] [   T3930]  ? vprintk_emit+0x185/0x650
[ 1949.893812] [   T3930]  ? __pfx_vprintk_emit+0x10/0x10
[ 1949.893816] [   T3930]  ? __pfx___schedule+0x10/0x10
[ 1949.893819] [   T3930]  ? do_raw_spin_lock+0x129/0x260
[ 1949.893822] [   T3930]  ? __pfx_do_raw_spin_lock+0x10/0x10
[ 1949.893824] [   T3930]  ? do_task_dead+0x93/0x100
[ 1949.893826] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.893829] [   T3930]  ? _raw_spin_unlock_irqrestore+0x4c/0x60
[ 1949.893831] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.893833] [   T3930]  ? _raw_spin_unlock_irqrestore+0x4c/0x60
[ 1949.893835] [   T3930]  ? do_task_dead+0x1a/0x100
[ 1949.893837] [   T3930]  do_task_dead+0xcb/0x100
[ 1949.893840] [   T3930]  make_task_dead.cold+0x184/0x18e
[ 1949.893844] [   T3930]  rewind_stack_and_make_dead+0x16/0x20
[ 1949.893846] [   T3930] RIP: 0033:0x7f789a2e195d
[ 1949.893849] [   T3930] Code: Unable to access opcode bytes at 0x7f789a2e1933.
[ 1949.893850] [   T3930] RSP: 002b:00007fff900de298 EFLAGS: 00000246 ORIG_RAX: 00000000000000d1
[ 1949.893853] [   T3930] RAX: ffffffffffffffda RBX: 00007f789a1ea6c0 RCX: 00007f789a2e195d
[ 1949.893854] [   T3930] RDX: 0000000030e1eef8 RSI: 0000000000000001 RDI: 00007f789159b000
[ 1949.893855] [   T3930] RBP: 00007fff900de2d0 R08: 0000034b66d0deb4 R09: 0000000000000001
[ 1949.893857] [   T3930] R10: 0000000000000000 R11: 0000000000000246 R12: 00007f789159b000
[ 1949.893858] [   T3930] R13: 0000000000000000 R14: 0000000000000001 R15: 0000000030e1eef8
[ 1949.893862] [   T3930]  </TASK>
[ 1949.893864] [   T3930] BUG: scheduling while atomic: fio/3930/0x00000000
[ 1949.921679] [   T3930] INFO: lockdep is turned off.
[ 1949.922322] [   T3930] Modules linked in: null_blk nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ip_set nf_tables qrtr sunrpc ppdev parport_pc parport 9pnet_virtio 9pnet e1000 netfs i2c_piix4 pcspkr i2c_smbus loop fuse dm_multipath nfnetlink vsock_loopback vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vsock vmw_vmci zram bochs drm_client_lib drm_shmem_helper drm_kms_helper xfs drm nvme sym53c8xx scsi_transport_spi nvme_core floppy nvme_keyring nvme_auth serio_raw ata_generic pata_acpi qemu_fw_cfg [last unloaded: null_blk]
[ 1949.927935] [   T3930] Preemption disabled at:
[ 1949.927937] [   T3930] [<0000000000000000>] 0x0
[ 1949.929254] [   T3930] CPU: 3 UID: 0 PID: 3930 Comm: fio Tainted: G    B D W           6.15.0-rc1+ #22 PREEMPT(voluntary) 
[ 1949.929259] [   T3930] Tainted: [B]=BAD_PAGE, [D]=DIE, [W]=WARN
[ 1949.929260] [   T3930] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
[ 1949.929261] [   T3930] Call Trace:
[ 1949.929263] [   T3930]  <TASK>
[ 1949.929265] [   T3930]  dump_stack_lvl+0x6a/0x90
[ 1949.929271] [   T3930]  __schedule_bug.cold+0xd3/0xfe
[ 1949.929275] [   T3930]  __schedule+0x4164/0x5fa0
[ 1949.929278] [   T3930]  ? __wake_up_klogd.part.0+0x79/0xc0
[ 1949.929282] [   T3930]  ? vprintk_emit+0x185/0x650
[ 1949.929286] [   T3930]  ? __pfx_vprintk_emit+0x10/0x10
[ 1949.929289] [   T3930]  ? __pfx___schedule+0x10/0x10
[ 1949.929291] [   T3930]  ? do_raw_spin_lock+0x129/0x260
[ 1949.929294] [   T3930]  ? __pfx_do_raw_spin_lock+0x10/0x10
[ 1949.929296] [   T3930]  ? do_task_dead+0x93/0x100
[ 1949.929299] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.929302] [   T3930]  ? _raw_spin_unlock_irqrestore+0x4c/0x60
[ 1949.929304] [   T3930]  ? rcu_is_watching+0x11/0xb0
[ 1949.929306] [   T3930]  ? _raw_spin_unlock_irqrestore+0x4c/0x60
[ 1949.929308] [   T3930]  ? do_task_dead+0x1a/0x100
[ 1949.929310] [   T3930]  do_task_dead+0xcb/0x100
[ 1949.929313] [   T3930]  make_task_dead.cold+0x184/0x18e
[ 1949.929316] [   T3930]  rewind_stack_and_make_dead+0x16/0x20
[ 1949.929319] [   T3930] RIP: 0033:0x7f789a2e195d
[ 1949.929321] [   T3930] Code: Unable to access opcode bytes at 0x7f789a2e1933.
[ 1949.929322] [   T3930] RSP: 002b:00007fff900de298 EFLAGS: 00000246 ORIG_RAX: 00000000000000d1
[ 1949.929325] [   T3930] RAX: ffffffffffffffda RBX: 00007f789a1ea6c0 RCX: 00007f789a2e195d
[ 1949.929327] [   T3930] RDX: 0000000030e1eef8 RSI: 0000000000000001 RDI: 00007f789159b000
[ 1949.929328] [   T3930] RBP: 00007fff900de2d0 R08: 0000034b66d0deb4 R09: 0000000000000001
[ 1949.929329] [   T3930] R10: 0000000000000000 R11: 0000000000000246 R12: 00007f789159b000
[ 1949.929330] [   T3930] R13: 0000000000000000 R14: 0000000000000001 R15: 0000000030e1eef8
[ 1949.929334] [   T3930]  </TASK>
[ 1949.939223] [   T3920] traps: fio[3920] general protection fault ip:7f789a2709f5 sp:7fff900e66d0 error:0 in libc.so.6[819f5,7f789a1f0000+16f000]
diff mbox series

Patch

diff --git a/tests/block/039 b/tests/block/039
new file mode 100755
index 0000000..d29db45
--- /dev/null
+++ b/tests/block/039
@@ -0,0 +1,67 @@ 
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright 2025 Ming Lei <ming.lei@redhat.com>
+#
+# Most of code is copied from block/029
+#
+# Trigger blk_mq_update_nr_hw_queues() & elevator switch
+
+. tests/block/rc
+. common/null_blk
+
+DESCRIPTION="test blk_mq_update_nr_hw_queues() vs switch elevator"
+QUICK=1
+
+requires() {
+	_have_fio && _have_null_blk
+}
+
+
+modify_io_sched() {
+	local deadline
+	local dev=$1
+
+	deadline=$(($(_uptime_s) + TIMEOUT))
+	while [ "$(_uptime_s)" -lt "$deadline" ]; do
+		for sched in $(_io_schedulers "$dev"); do
+			echo "$sched" > /sys/block/"$dev"/queue/scheduler > /dev/null 2>&1
+			sleep .5
+		done
+	done
+}
+
+modify_nr_hw_queues() {
+	local deadline num_cpus
+
+	deadline=$(($(_uptime_s) + TIMEOUT))
+	num_cpus=$(nproc)
+	while [ "$(_uptime_s)" -lt "$deadline" ]; do
+		sleep .1
+		echo 1 > /sys/kernel/config/nullb/nullb1/submit_queues
+		sleep .1
+		echo "$num_cpus" > /sys/kernel/config/nullb/nullb1/submit_queues
+	done
+}
+
+test() {
+	local sq=/sys/kernel/config/nullb/nullb1/submit_queues
+
+	: "${TIMEOUT:=30}"
+	_configure_null_blk nullb1 completion_nsec=0 blocksize=512 \
+			    size=16 memory_backed=1 power=1 &&
+	if { echo 1 >$sq; } 2>/dev/null; then
+		modify_nr_hw_queues &
+		modify_io_sched nullb1 &
+		fio --rw=randwrite --bs=4K --loops=$((10**6)) \
+		    --iodepth=64 --group_reporting --sync=1 --direct=1 \
+		    --ioengine=libaio --filename="/dev/nullb1" \
+		    --runtime="${TIMEOUT}" --name=nullb1 \
+		    --output="${RESULTS_DIR}/block/fio-output-029.txt" \
+		    >>"$FULL"
+		wait
+	else
+		echo "Skipping test because $sq cannot be modified" >>"$FULL"
+	fi
+	_exit_null_blk
+	echo Passed
+}
diff --git a/tests/block/039.out b/tests/block/039.out
new file mode 100644
index 0000000..863339f
--- /dev/null
+++ b/tests/block/039.out
@@ -0,0 +1 @@ 
+Passed