[RFC PATCH v1 15/17] blk-cgroup: remove blkg radix tree preloading
yu kuai
yukuai at fygo.io
Thu Jul 9 02:57:13 PDT 2026
Hi,
在 2026/7/9 14:18, Christoph Hellwig 写道:
> On Sun, Jul 05, 2026 at 03:51:22AM +0800, Yu Kuai wrote:
>> From: Yu Kuai <yukuai at fygo.io>
>>
>> blkg creation is now serialized by q->blkcg_mutex and no longer runs
>> under q->queue_lock. The radix tree is initialized with GFP_NOWAIT, so
>> radix_tree_insert() cannot sleep while blkcg->lock is held and the old
>> preload dance is no longer needed.
>>
>> Remove the preload calls and the associated unwind path.
> Isn't the GFP_NOWAIT a bit of a problem because it can fail way too
> easy?
I think GFP_NOWAIT should not be a problem because it's only possible to
allocate blkg when the thread is issuing the first IO. And it's not a big
deal to fail nowait in this case because the caller should fall back to
sleepable context to issue this IO, and then blkg will be created. The following
nowait IO issued by this thread should no longer hit blkg allocation path
anymore.
>
> What about converting both the radix tree and list to an xarray
> using the internal xarray to deal with sleeping allocations?
>
--
Thanks,
Kuai
More information about the Linux-nvme
mailing list