From: Tao Su <tao1.su@linux.intel.com>
To: Yu Kuai <yukuai1@huaweicloud.com>
Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
tj@kernel.org, josef@toxicpanda.com, axboe@kernel.dk,
"yukuai (C)" <yukuai3@huawei.com>
Subject: Re: [PATCH v2] block: Skip destroyed blkg when restart in blkg_destroy_all()
Date: Fri, 28 Apr 2023 14:49:53 +0800 [thread overview]
Message-ID: <ZEtskeNOTKeqW2rS@linux.bj.intel.com> (raw)
In-Reply-To: <c007f189-8573-8390-4338-ae4c281ffbee@huaweicloud.com>
On Fri, Apr 28, 2023 at 02:12:06PM +0800, Yu Kuai wrote:
> Hi,
>
> 在 2023/04/28 12:51, Tao Su 写道:
> > Kernel hang in blkg_destroy_all() when total blkg greater than
> > BLKG_DESTROY_BATCH_SIZE, because of not removing destroyed blkg in
> > blkg_list. So the size of blkg_list is same after destroying a
> > batch of blkg, and the infinite 'restart' occurs.
> >
> > Since blkg should stay on the queue list until blkg_free_workfn(),
> > skip destroyed blkg when restart a new round, which will solve this
> > kernel hang issue and satisfy the previous will to restart.
>
> Please add a fix tag:
>
> Fixes: f1c006f1c685 ("blk-cgroup: synchronize pd_free_fn() from
> blkg_free_workfn() and blkcg_deactivate_policy()")
> >
> > Reported-by: Xiangfei Ma <xiangfeix.ma@intel.com>
> > Tested-by: Xiangfei Ma <xiangfeix.ma@intel.com>
> > Tested-by: Farrah Chen <farrah.chen@intel.com>
> > Signed-off-by: Yu Kuai <yukuai1@huaweicloud.com>
>
> You can remove this tag, and feel free to add:
>
> Suggested-and-reviewed-by: Yu Kuai <yukuai3@huawei.com>
Got it, thanks!
Tao
>
> Thanks,
> Kuai
> > Signed-off-by: Tao Su <tao1.su@linux.intel.com>
> > ---
> > v2:
> > - change 'directly remove destroyed blkg' to 'skip destroyed blkg'
> >
> > v1:
> > - https://lore.kernel.org/all/20230425075911.839539-1-tao1.su@linux.intel.com/
> >
> > block/blk-cgroup.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
> > index bd50b55bdb61..75bad5d60c9f 100644
> > --- a/block/blk-cgroup.c
> > +++ b/block/blk-cgroup.c
> > @@ -528,6 +528,9 @@ static void blkg_destroy_all(struct gendisk *disk)
> > list_for_each_entry_safe(blkg, n, &q->blkg_list, q_node) {
> > struct blkcg *blkcg = blkg->blkcg;
> > + if (hlist_unhashed(&blkg->blkcg_node))
> > + continue;
> > +
> > spin_lock(&blkcg->lock);
> > blkg_destroy(blkg);
> > spin_unlock(&blkcg->lock);
> >
>
next prev parent reply other threads:[~2023-04-28 6:51 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-28 4:51 [PATCH v2] block: Skip destroyed blkg when restart in blkg_destroy_all() Tao Su
2023-04-28 6:12 ` Yu Kuai
2023-04-28 6:49 ` Tao Su [this message]
2023-04-28 17:24 ` Jens Axboe
2023-04-29 7:10 ` Tao Su
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=ZEtskeNOTKeqW2rS@linux.bj.intel.com \
--to=tao1.su@linux.intel.com \
--cc=axboe@kernel.dk \
--cc=josef@toxicpanda.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tj@kernel.org \
--cc=yukuai1@huaweicloud.com \
--cc=yukuai3@huawei.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.