Hi, 在 2026/7/9 14:18, Christoph Hellwig 写道: > On Sun, Jul 05, 2026 at 03:51:22AM +0800, Yu Kuai wrote: >> From: Yu Kuai <[email protected]> >> >> 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
