From: Christoph Hellwig <hch@lst.de>
To: Yu Kuai <yukuai@kernel.org>
Cc: "Jens Axboe" <axboe@kernel.dk>, "Tejun Heo" <tj@kernel.org>,
"Josef Bacik" <josef@toxicpanda.com>,
"Johannes Weiner" <hannes@cmpxchg.org>,
"Michal Koutný" <mkoutny@suse.com>, "Yu Kuai" <yukuai@fygo.io>,
"Christoph Hellwig" <hch@lst.de>, "Tao Cui" <cui.tao@linux.dev>,
"Jan Kara" <jack@suse.cz>, "Ming Lei" <ming.lei@redhat.com>,
"Jonathan Corbet" <corbet@lwn.net>,
"Shuah Khan" <skhan@linuxfoundation.org>,
"Coly Li" <colyli@fygo.io>,
"Kent Overstreet" <kent.overstreet@linux.dev>,
"Alasdair Kergon" <agk@redhat.com>,
"Mike Snitzer" <snitzer@kernel.org>,
"Mikulas Patocka" <mpatocka@redhat.com>,
"Benjamin Marzinski" <bmarzins@redhat.com>,
"Song Liu" <song@kernel.org>,
"Li Nan" <magiclinan@didiglobal.com>, "Xiao Ni" <xiao@kernel.org>,
"Pankaj Gupta" <pankaj.gupta.linux@gmail.com>,
"Dan Williams" <djbw@kernel.org>,
"Vishal Verma" <vishal.l.verma@intel.com>,
"Dave Jiang" <dave.jiang@intel.com>,
"Alison Schofield" <alison.schofield@intel.com>,
"Ira Weiny" <iweiny@kernel.org>,
"Andreas Gruenbacher" <agruenba@redhat.com>,
"Matthew Wilcox" <willy@infradead.org>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Chris Li" <chrisl@kernel.org>,
"Kairui Song" <kasong@tencent.com>,
"Kemeng Shi" <shikemeng@huaweicloud.com>,
"Nhat Pham" <nphamcs@gmail.com>,
"Baoquan He" <baoquan.he@linux.dev>,
"Barry Song" <baohua@kernel.org>,
"Youngjun Park" <youngjun.park@lge.com>,
cgroups@vger.kernel.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-block@vger.kernel.org,
linux-bcache@vger.kernel.org, dm-devel@lists.linux.dev,
linux-raid@vger.kernel.org, nvdimm@lists.linux.dev,
virtualization@lists.linux.dev, gfs2@lists.linux.dev,
linux-fsdevel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [RFC PATCH v2 0/4] blk-cgroup: store blkcg in bio before blkcg_mutex conversion
Date: Fri, 14 Aug 2026 08:45:37 +0200 [thread overview]
Message-ID: <20260814064537.GA9355@lst.de> (raw)
In-Reply-To: <20260811064744.1139446-1-yukuai@kernel.org>
What tree does this apply to? I get failures both for Jens'
for-7.3/block and for-next trees in bfq-cgroups.c and bio.c
On Tue, Aug 11, 2026 at 02:47:40PM +0800, Yu Kuai wrote:
> From: Yu Kuai <yukuai@fygo.io>
>
> This RFC remains a preparatory series for the blkcg_mutex conversion
> proposed in the related blkcg_mutex RFC v2 series [1]. That conversion
> moves queue-local blkg topology synchronization from q->queue_lock to
> q->blkcg_mutex, which is awkward while bios directly store queue-local
> blkg references.
>
> v1 made the stored bio association queue-independent by replacing bi_blkg
> with bi_blkcg, but a bio-owned blkg reference still had to be recovered by
> looking up the bio's blkcg and current request_queue. Tao Cui reported that
> cgroup removal deletes a dying blkg from the per-blkcg radix tree before a
> throttled bio drops its reference. A later lookup for that pinned blkg then
> fails, triggers the warning in bio_pinned_blkg(), and leaks the reference.
>
> v2 makes request_queue the authoritative lookup owner before converting the
> bio association. A queue-owned rhashtable, keyed by the blkcg CSS ID, keeps
> dying blkgs discoverable until their references drain while q->blkg_list
> remains available for ordered walks. The bio conversion then stores and
> pins the blkcg CSS, lazily creates a blkg only for users which need one, and
> uses lookup-only access for completion and accounting paths which already
> own a blkg reference. Async bio punt state is finally moved from blkg to
> blkcg so punting alone does not instantiate a queue-local blkg.
>
> Changes since v1:
>
> - Add patch 1 to wait for every old blkg to leave q->blkg_list before a
> shared request_queue is rebound, instead of treating root_blkg == NULL
> as completion of asynchronous blkg teardown.
> - Add patch 2 to replace the per-blkcg radix tree and lookup hint with a
> request_queue rhashtable keyed by blkcg->css.id, as suggested by
> Christoph Hellwig. Keep dying pinned blkgs in the hash until
> blkg_release() so bio-owned references remain discoverable.
> - Fold the v1 helper-only patch into patch 3, as suggested by Jan Kara and
> Christoph Hellwig, and make bio_blkcg() naturally return NULL for an
> unassociated bio.
> - Rework patch 3 so blkg_lookup_create() acquires the bio-owned reference,
> falls back to a live parent when creation or tryget fails, and updates
> bi_blkcg when the returned blkg belongs to an ancestor.
> - Make bio_blkg_lookup() lookup-only: it returns NULL unless BIO_BLKG_REF
> is already set. Use bio_blkg() in the BFQ and IOCOST merge paths which
> may need to create a blkg, while keeping blk_cgroup_bio_start() and
> completion paths lookup-only.
> - Move CSS online-reference handling into
> bio_associate_blkcg_from_css(), including fallback to the root blkcg, so
> bio_associate_blkcg() does not take a redundant reference.
> - Keep the v1 async bio punt conversion as patch 4 and document that
> async_bio_lock protects async_bios.
>
> Previous versions:
> v1: https://lore.kernel.org/r/20260804065313.2092022-1-yukuai@kernel.org
>
> Related series:
> [1] RFC v2 blk-cgroup: protect blkgs with blkcg_mutex
> https://lore.kernel.org/r/20260724123037.3004560-1-yukuai@kernel.org
>
> Yu Kuai (4):
> blk-cgroup: wait for old blkgs to leave queue before disk rebind
> blk-cgroup: use a request_queue rhashtable for blkg lookup
> blk-cgroup: store blkcg in bio instead of blkg
> blk-cgroup: move async bio punt state to blkcg
>
> Documentation/admin-guide/cgroup-v2.rst | 2 +-
> block/bfq-cgroup.c | 16 +-
> block/bfq-iosched.c | 19 +-
> block/bio.c | 22 +-
> block/blk-cgroup-fc-appid.c | 10 +-
> block/blk-cgroup.c | 348 ++++++++++++++----------
> block/blk-cgroup.h | 82 ++++--
> block/blk-core.c | 9 +-
> block/blk-crypto-fallback.c | 2 +-
> block/blk-iocost.c | 12 +-
> block/blk-iolatency.c | 11 +-
> block/blk-ioprio.c | 2 +-
> block/blk-throttle.c | 2 +-
> block/blk-throttle.h | 2 +-
> drivers/md/bcache/request.c | 2 +-
> drivers/md/dm.c | 2 +-
> drivers/md/md.c | 2 +-
> drivers/nvdimm/nd_virtio.c | 2 +-
> fs/gfs2/lops.c | 3 +-
> include/linux/bio.h | 26 +-
> include/linux/blk_types.h | 9 +-
> include/linux/blkdev.h | 2 +
> include/linux/writeback.h | 2 +-
> mm/page_io.c | 13 +-
> 24 files changed, 357 insertions(+), 245 deletions(-)
>
>
> base-commit: f2690679ecf3a3151688ebef766dd2512ff95854
> --
> 2.51.0
---end quoted text---
next prev parent reply other threads:[~2026-08-14 6:45 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-11 6:47 [RFC PATCH v2 0/4] blk-cgroup: store blkcg in bio before blkcg_mutex conversion Yu Kuai
2026-08-11 6:47 ` [RFC PATCH v2 1/4] blk-cgroup: wait for old blkgs to leave queue before disk rebind Yu Kuai
2026-08-14 6:50 ` Christoph Hellwig
2026-08-11 6:47 ` [RFC PATCH v2 2/4] blk-cgroup: use a request_queue rhashtable for blkg lookup Yu Kuai
2026-08-14 7:12 ` Christoph Hellwig
2026-08-14 7:50 ` Yu Kuai
2026-08-14 8:15 ` Christoph Hellwig
2026-08-11 6:47 ` [RFC PATCH v2 3/4] blk-cgroup: store blkcg in bio instead of blkg Yu Kuai
2026-08-11 6:47 ` [RFC PATCH v2 4/4] blk-cgroup: move async bio punt state to blkcg Yu Kuai
2026-08-14 6:45 ` Christoph Hellwig [this message]
2026-08-14 7:53 ` [RFC PATCH v2 0/4] blk-cgroup: store blkcg in bio before blkcg_mutex conversion yu kuai
2026-08-14 8:16 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260814064537.GA9355@lst.de \
--to=hch@lst.de \
--cc=agk@redhat.com \
--cc=agruenba@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=alison.schofield@intel.com \
--cc=axboe@kernel.dk \
--cc=baohua@kernel.org \
--cc=baoquan.he@linux.dev \
--cc=bmarzins@redhat.com \
--cc=cgroups@vger.kernel.org \
--cc=chrisl@kernel.org \
--cc=colyli@fygo.io \
--cc=corbet@lwn.net \
--cc=cui.tao@linux.dev \
--cc=dave.jiang@intel.com \
--cc=djbw@kernel.org \
--cc=dm-devel@lists.linux.dev \
--cc=gfs2@lists.linux.dev \
--cc=hannes@cmpxchg.org \
--cc=iweiny@kernel.org \
--cc=jack@suse.cz \
--cc=josef@toxicpanda.com \
--cc=kasong@tencent.com \
--cc=kent.overstreet@linux.dev \
--cc=linux-bcache@vger.kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-raid@vger.kernel.org \
--cc=magiclinan@didiglobal.com \
--cc=ming.lei@redhat.com \
--cc=mkoutny@suse.com \
--cc=mpatocka@redhat.com \
--cc=nphamcs@gmail.com \
--cc=nvdimm@lists.linux.dev \
--cc=pankaj.gupta.linux@gmail.com \
--cc=shikemeng@huaweicloud.com \
--cc=skhan@linuxfoundation.org \
--cc=snitzer@kernel.org \
--cc=song@kernel.org \
--cc=tj@kernel.org \
--cc=virtualization@lists.linux.dev \
--cc=vishal.l.verma@intel.com \
--cc=willy@infradead.org \
--cc=xiao@kernel.org \
--cc=youngjun.park@lge.com \
--cc=yukuai@fygo.io \
--cc=yukuai@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.