Re: [RFC PATCH v1 15/17] blk-cgroup: remove blkg radix tree preloading
"yu kuai" <[email protected]> Thu, 9 Jul 2026 17:57:13 +0800
| Newsgroups | org.kernel.vger.linux-bcache,dev.linux.lists.dm-devel,org.infradead.lists.linux-nvme,org.kernel.vger.cgroups,org.kernel.vger.linux-block |
|---|---|
| Message-ID | <[email protected]> |
Hi, =E5=9C=A8 2026/7/9 14:18, Christoph Hellwig =E5=86=99=E9=81=93: > 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 foll= owing 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? > --=20 Thanks, Kuai