On 2/17/23 5:14 AM, Pankaj Raghav wrote: > Unconditionally calling radix_tree_preload_end() results in a OOPS > message as the preload is only conditionally called for > gfpflags_allow_blocking(). > > [ 20.267323] BUG: using smp_processor_id() in preemptible [00000000] code: fio/416 > [ 20.267837] caller is brd_insert_page.part.0+0xbe/0x190 [brd] > [ 20.269436] Call Trace: > [ 20.269598] <TASK> > [ 20.269742] dump_stack_lvl+0x32/0x50 > [ 20.269982] check_preemption_disabled+0xd1/0xe0 > [ 20.270289] brd_insert_page.part.0+0xbe/0x190 [brd] > [ 20.270664] brd_submit_bio+0x33f/0xf40 [brd] > > Use radix_tree_maybe_preload() which does preload only if > gfpflags_allow_blocking() is true but also takes the lock. Therefore, > unconditionally calling radix_tree_preload_end() should not create any > issues and the message disappears. Thanks, I wonder why I didn't see this in my testing which did both. But it's certainly an oversight! -- Jens Axboe