From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Ming Lei <ming.lei@redhat.com>
Cc: stable@vger.kernel.org, Jens Axboe <axboe@kernel.dk>,
linux-block@vger.kernel.org, Jay Shin <jaeshin@redhat.com>,
Tejun Heo <tj@kernel.org>, Waiman Long <longman@redhat.com>,
mkoutny@suse.com, Yosry Ahmed <yosryahmed@google.com>
Subject: Re: [PATCH 6.3.y] blk-cgroup: Flush stats before releasing blkcg_gq
Date: Mon, 19 Jun 2023 12:14:42 +0200 [thread overview]
Message-ID: <2023061933-corporate-overkill-e24a@gregkh> (raw)
In-Reply-To: <ZJAd0xNvx99haE6y@ovpn-8-18.pek2.redhat.com>
On Mon, Jun 19, 2023 at 05:20:19PM +0800, Ming Lei wrote:
> On Mon, Jun 19, 2023 at 10:51:16AM +0200, Greg Kroah-Hartman wrote:
> > On Mon, Jun 19, 2023 at 04:30:09PM +0800, Ming Lei wrote:
> > > As noted by Michal, the blkg_iostat_set's in the lockless list hold
> > > reference to blkg's to protect against their removal. Those blkg's
> > > hold reference to blkcg. When a cgroup is being destroyed,
> > > cgroup_rstat_flush() is only called at css_release_work_fn() which
> > > is called when the blkcg reference count reaches 0. This circular
> > > dependency will prevent blkcg and some blkgs from being freed after
> > > they are made offline.
> > >
> > > It is less a problem if the cgroup to be destroyed also has other
> > > controllers like memory that will call cgroup_rstat_flush() which will
> > > clean up the reference count. If block is the only controller that uses
> > > rstat, these offline blkcg and blkgs may never be freed leaking more
> > > and more memory over time.
> > >
> > > To prevent this potential memory leak:
> > >
> > > - flush blkcg per-cpu stats list in __blkg_release(), when no new stat
> > > can be added
> > >
> > > - add global blkg_stat_lock for covering concurrent parent blkg stat
> > > update
> > >
> > > - don't grab bio->bi_blkg reference when adding the stats into blkcg's
> > > per-cpu stat list since all stats are guaranteed to be consumed before
> > > releasing blkg instance, and grabbing blkg reference for stats was the
> > > most fragile part of original patch
> > >
> > > Based on Waiman's patch:
> > >
> > > https://lore.kernel.org/linux-block/20221215033132.230023-3-longman@redhat.com/
> > >
> > > Fixes: 3b8cc6298724 ("blk-cgroup: Optimize blkcg_rstat_flush()")
> > > Cc: stable@vger.kernel.org
> > > Reported-by: Jay Shin <jaeshin@redhat.com>
> > > Acked-by: Tejun Heo <tj@kernel.org>
> > > Cc: Waiman Long <longman@redhat.com>
> > > Cc: mkoutny@suse.com
> > > Cc: Yosry Ahmed <yosryahmed@google.com>
> > > Signed-off-by: Ming Lei <ming.lei@redhat.com>
> > > Link: https://lore.kernel.org/r/20230609234249.1412858-1-ming.lei@redhat.com
> > > Signed-off-by: Jens Axboe <axboe@kernel.dk>
> > > ---
> > > Context difference with linus tree: 2c275afeb61d ("block: make blkcg_punt_bio_submit
> > > optional") adds '#ifdef CONFIG_BLK_CGROUP_PUNT_BIO' in __blkg_release().
> > >
> > >
> >
> > What is the git commit id of this change in Linus's tree?
>
> 20cb1c2fb756 ("blk-cgroup: Flush stats before releasing blkcg_gq")
Thanks, now queued up.
greg k-h
prev parent reply other threads:[~2023-06-19 10:15 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-19 8:30 [PATCH 6.3.y] blk-cgroup: Flush stats before releasing blkcg_gq Ming Lei
2023-06-19 8:51 ` Greg Kroah-Hartman
2023-06-19 9:20 ` Ming Lei
2023-06-19 10:14 ` Greg Kroah-Hartman [this message]
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=2023061933-corporate-overkill-e24a@gregkh \
--to=gregkh@linuxfoundation.org \
--cc=axboe@kernel.dk \
--cc=jaeshin@redhat.com \
--cc=linux-block@vger.kernel.org \
--cc=longman@redhat.com \
--cc=ming.lei@redhat.com \
--cc=mkoutny@suse.com \
--cc=stable@vger.kernel.org \
--cc=tj@kernel.org \
--cc=yosryahmed@google.com \
/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.