From: Andreas Herrmann <aherrmann@suse.de>
To: Christoph Hellwig <hch@lst.de>
Cc: Jens Axboe <axboe@kernel.dk>, Tejun Heo <tj@kernel.org>,
Josef Bacik <josef@toxicpanda.com>,
linux-block@vger.kernel.org, cgroups@vger.kernel.org
Subject: Re: [PATCH 05/15] blk-cgroup: store a gendisk to throttle in struct task_struct
Date: Fri, 20 Jan 2023 10:00:53 +0100 [thread overview]
Message-ID: <Y8pYReOp6VW3Va4O@suselix> (raw)
In-Reply-To: <20230117081257.3089859-6-hch@lst.de>
On Tue, Jan 17, 2023 at 09:12:47AM +0100, Christoph Hellwig wrote:
> Switch from a request_queue pointer and reference to a gendisk once
> for the throttle information in struct task_struct.
>
> Move the check for the dead disk to the latest place now that is is
^^
it
> unboundled from the reference grab.
^^^^^^^^^^
unbundled
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> block/blk-cgroup.c | 37 +++++++++++++++++++------------------
> include/linux/sched.h | 2 +-
> kernel/fork.c | 2 +-
> mm/swapfile.c | 2 +-
> 4 files changed, 22 insertions(+), 21 deletions(-)
Looks good to me. Feel free to add
Reviewed-by: Andreas Herrmann <aherrmann@suse.de>
> diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
> index f5a634ed098db0..603e911d1350db 100644
> --- a/block/blk-cgroup.c
> +++ b/block/blk-cgroup.c
> @@ -1334,9 +1334,9 @@ static void blkcg_bind(struct cgroup_subsys_state *root_css)
>
> static void blkcg_exit(struct task_struct *tsk)
> {
> - if (tsk->throttle_queue)
> - blk_put_queue(tsk->throttle_queue);
> - tsk->throttle_queue = NULL;
> + if (tsk->throttle_disk)
> + put_disk(tsk->throttle_disk);
> + tsk->throttle_disk = NULL;
> }
>
> struct cgroup_subsys io_cgrp_subsys = {
> @@ -1778,29 +1778,32 @@ static void blkcg_maybe_throttle_blkg(struct blkcg_gq *blkg, bool use_memdelay)
> *
> * This is only called if we've been marked with set_notify_resume(). Obviously
> * we can be set_notify_resume() for reasons other than blkcg throttling, so we
> - * check to see if current->throttle_queue is set and if not this doesn't do
> + * check to see if current->throttle_disk is set and if not this doesn't do
> * anything. This should only ever be called by the resume code, it's not meant
> * to be called by people willy-nilly as it will actually do the work to
> * throttle the task if it is setup for throttling.
> */
> void blkcg_maybe_throttle_current(void)
> {
> - struct request_queue *q = current->throttle_queue;
> + struct gendisk *disk = current->throttle_disk;
> struct blkcg *blkcg;
> struct blkcg_gq *blkg;
> bool use_memdelay = current->use_memdelay;
>
> - if (!q)
> + if (!disk)
> return;
>
> - current->throttle_queue = NULL;
> + current->throttle_disk = NULL;
> current->use_memdelay = false;
>
> + if (test_bit(GD_DEAD, &disk->state))
> + goto out_put_disk;
> +
> rcu_read_lock();
> blkcg = css_to_blkcg(blkcg_css());
> if (!blkcg)
> goto out;
> - blkg = blkg_lookup(blkcg, q);
> + blkg = blkg_lookup(blkcg, disk->queue);
> if (!blkg)
> goto out;
> if (!blkg_tryget(blkg))
> @@ -1809,11 +1812,12 @@ void blkcg_maybe_throttle_current(void)
>
> blkcg_maybe_throttle_blkg(blkg, use_memdelay);
> blkg_put(blkg);
> - blk_put_queue(q);
> + put_disk(disk);
> return;
> out:
> rcu_read_unlock();
> - blk_put_queue(q);
> +out_put_disk:
> + put_disk(disk);
> }
>
> /**
> @@ -1835,18 +1839,15 @@ void blkcg_maybe_throttle_current(void)
> */
> void blkcg_schedule_throttle(struct gendisk *disk, bool use_memdelay)
> {
> - struct request_queue *q = disk->queue;
> -
> if (unlikely(current->flags & PF_KTHREAD))
> return;
>
> - if (current->throttle_queue != q) {
> - if (!blk_get_queue(q))
> - return;
> + if (current->throttle_disk != disk) {
> + get_device(disk_to_dev(disk));
>
> - if (current->throttle_queue)
> - blk_put_queue(current->throttle_queue);
> - current->throttle_queue = q;
> + if (current->throttle_disk)
> + put_disk(current->throttle_disk);
> + current->throttle_disk = disk;
> }
>
> if (use_memdelay)
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index 853d08f7562bda..6f6ce9ca709798 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -1436,7 +1436,7 @@ struct task_struct {
> #endif
>
> #ifdef CONFIG_BLK_CGROUP
> - struct request_queue *throttle_queue;
> + struct gendisk *throttle_disk;
> #endif
>
> #ifdef CONFIG_UPROBES
> diff --git a/kernel/fork.c b/kernel/fork.c
> index 9f7fe354189785..d9c97704b7c9a4 100644
> --- a/kernel/fork.c
> +++ b/kernel/fork.c
> @@ -1044,7 +1044,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node)
> #endif
>
> #ifdef CONFIG_BLK_CGROUP
> - tsk->throttle_queue = NULL;
> + tsk->throttle_disk = NULL;
> tsk->use_memdelay = 0;
> #endif
>
> diff --git a/mm/swapfile.c b/mm/swapfile.c
> index 908a529bca12c9..3e0a742fb7bbff 100644
> --- a/mm/swapfile.c
> +++ b/mm/swapfile.c
> @@ -3642,7 +3642,7 @@ void __cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask)
> * We've already scheduled a throttle, avoid taking the global swap
> * lock.
> */
> - if (current->throttle_queue)
> + if (current->throttle_disk)
> return;
>
> spin_lock(&swap_avail_lock);
> --
> 2.39.0
>
--
Regards,
Andreas
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nürnberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Martje Boudien Moerman
(HRB 36809, AG Nürnberg)
next prev parent reply other threads:[~2023-01-20 9:00 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-17 8:12 switch blk-cgroup to work on gendisk Christoph Hellwig
2023-01-17 8:12 ` [PATCH 03/15] blk-cgroup: delay blk-cgroup initialization until add_disk Christoph Hellwig
[not found] ` <20230117081257.3089859-4-hch-jcswGhMUV9g@public.gmane.org>
2023-01-20 8:56 ` Andreas Herrmann
2023-01-20 8:56 ` Andreas Herrmann
2023-01-27 7:01 ` Hannes Reinecke
2023-01-27 7:01 ` Hannes Reinecke
2023-01-17 8:12 ` [PATCH 05/15] blk-cgroup: store a gendisk to throttle in struct task_struct Christoph Hellwig
2023-01-20 9:00 ` Andreas Herrmann [this message]
2023-01-27 7:03 ` Hannes Reinecke
2023-01-27 7:03 ` Hannes Reinecke
[not found] ` <20230117081257.3089859-1-hch-jcswGhMUV9g@public.gmane.org>
2023-01-17 8:12 ` [PATCH 01/15] blk-cgroup: don't defer blkg_free to a workqueue Christoph Hellwig
2023-01-17 8:12 ` Christoph Hellwig
2023-01-20 8:54 ` Andreas Herrmann
2023-01-27 6:59 ` Hannes Reinecke
2023-01-27 6:59 ` Hannes Reinecke
[not found] ` <b4622942-67e7-969b-4439-0aea7c5bd165-l3A5Bk7waGM@public.gmane.org>
2023-01-27 7:07 ` Christoph Hellwig
2023-01-27 7:07 ` Christoph Hellwig
2023-01-27 7:43 ` Hannes Reinecke
2023-01-27 7:43 ` Hannes Reinecke
2023-01-17 8:12 ` [PATCH 02/15] block: don't call blk_throtl_stat_add for non-READ/WRITE commands Christoph Hellwig
2023-01-17 8:12 ` Christoph Hellwig
[not found] ` <20230117081257.3089859-3-hch-jcswGhMUV9g@public.gmane.org>
2023-01-20 8:55 ` Andreas Herrmann
2023-01-20 8:55 ` Andreas Herrmann
2023-01-27 7:00 ` Hannes Reinecke
2023-01-27 7:00 ` Hannes Reinecke
2023-01-17 8:12 ` [PATCH 04/15] blk-cgroup: pin the gendisk in struct blkcg_gq Christoph Hellwig
2023-01-17 8:12 ` Christoph Hellwig
[not found] ` <20230117081257.3089859-5-hch-jcswGhMUV9g@public.gmane.org>
2023-01-20 8:57 ` Andreas Herrmann
2023-01-20 8:57 ` Andreas Herrmann
2023-01-27 7:02 ` Hannes Reinecke
2023-01-27 7:02 ` Hannes Reinecke
2023-01-17 8:12 ` [PATCH 06/15] blk-wbt: pass a gendisk to wbt_{enable,disable}_default Christoph Hellwig
2023-01-17 8:12 ` Christoph Hellwig
2023-01-20 9:10 ` Andreas Herrmann
2023-01-27 7:04 ` Hannes Reinecke
2023-01-27 7:04 ` Hannes Reinecke
2023-01-17 8:12 ` [PATCH 07/15] blk-wbt: pass a gendisk to wbt_init Christoph Hellwig
2023-01-17 8:12 ` Christoph Hellwig
2023-01-20 9:53 ` Andreas Herrmann
[not found] ` <20230117081257.3089859-8-hch-jcswGhMUV9g@public.gmane.org>
2023-01-27 7:05 ` Hannes Reinecke
2023-01-27 7:05 ` Hannes Reinecke
2023-01-17 8:12 ` [PATCH 08/15] blk-wbt: open code wbt_queue_depth_changed in wbt_update_limits Christoph Hellwig
2023-01-17 8:12 ` Christoph Hellwig
2023-01-20 9:21 ` Andreas Herrmann
[not found] ` <20230117081257.3089859-9-hch-jcswGhMUV9g@public.gmane.org>
2023-01-27 7:07 ` Hannes Reinecke
2023-01-27 7:07 ` Hannes Reinecke
2023-01-17 8:12 ` [PATCH 11/15] blk-rq-qos: store a gendisk instead of request_queue in struct rq_qos Christoph Hellwig
2023-01-17 8:12 ` Christoph Hellwig
2023-01-20 10:19 ` Andreas Herrmann
2023-01-27 7:09 ` Hannes Reinecke
2023-01-27 7:09 ` Hannes Reinecke
2023-01-17 8:12 ` [PATCH 09/15] blk-rq-qos: make rq_qos_add and rq_qos_del more useful Christoph Hellwig
[not found] ` <20230117081257.3089859-10-hch-jcswGhMUV9g@public.gmane.org>
2023-01-20 9:57 ` Andreas Herrmann
2023-01-20 9:57 ` Andreas Herrmann
2023-01-27 7:08 ` Hannes Reinecke
2023-01-27 7:08 ` Hannes Reinecke
2023-01-17 8:12 ` [PATCH 10/15] blk-rq-qos: constify rq_qos_ops Christoph Hellwig
2023-01-20 10:01 ` Andreas Herrmann
[not found] ` <20230117081257.3089859-11-hch-jcswGhMUV9g@public.gmane.org>
2023-01-27 7:08 ` Hannes Reinecke
2023-01-27 7:08 ` Hannes Reinecke
2023-01-17 8:12 ` [PATCH 12/15] blk-cgroup: pass a gendisk to blkcg_{de,}activate_policy Christoph Hellwig
2023-01-20 10:26 ` Andreas Herrmann
2023-01-27 7:10 ` Hannes Reinecke
2023-01-27 7:10 ` Hannes Reinecke
2023-01-17 8:12 ` [PATCH 13/15] blk-cgroup: pass a gendisk to pd_alloc_fn Christoph Hellwig
[not found] ` <20230117081257.3089859-14-hch-jcswGhMUV9g@public.gmane.org>
2023-01-20 10:37 ` Andreas Herrmann
2023-01-20 10:37 ` Andreas Herrmann
2023-01-27 7:10 ` Hannes Reinecke
2023-01-27 7:10 ` Hannes Reinecke
2023-01-17 8:12 ` [PATCH 14/15] blk-cgroup: pass a gendisk to blkg_lookup Christoph Hellwig
[not found] ` <20230117081257.3089859-15-hch-jcswGhMUV9g@public.gmane.org>
2023-01-20 11:07 ` Andreas Herrmann
2023-01-20 11:07 ` Andreas Herrmann
2023-01-27 7:11 ` Hannes Reinecke
2023-01-27 7:11 ` Hannes Reinecke
2023-01-17 8:12 ` [PATCH 15/15] blk-cgroup: move the cgroup information to struct gendisk Christoph Hellwig
[not found] ` <20230117081257.3089859-16-hch-jcswGhMUV9g@public.gmane.org>
2023-01-20 11:07 ` Andreas Herrmann
2023-01-20 11:07 ` Andreas Herrmann
2023-01-27 7:12 ` Hannes Reinecke
2023-01-27 7:12 ` Hannes Reinecke
2023-01-19 17:03 ` switch blk-cgroup to work on gendisk Tejun Heo
[not found] ` <Y8l34/qeHPLV4rKJ-NiLfg/pYEd1N0TnZuCh8vA@public.gmane.org>
2023-01-19 17:05 ` Christoph Hellwig
2023-01-19 17:05 ` Christoph Hellwig
[not found] ` <20230119170526.GA5050-jcswGhMUV9g@public.gmane.org>
2023-01-19 17:13 ` Tejun Heo
2023-01-19 17:13 ` Tejun Heo
-- strict thread matches above, loose matches on Subject: below --
2023-01-24 6:57 switch blk-cgroup to work on gendisk v2 Christoph Hellwig
[not found] ` <20230124065716.152286-1-hch-jcswGhMUV9g@public.gmane.org>
2023-01-24 6:57 ` [PATCH 05/15] blk-cgroup: store a gendisk to throttle in struct task_struct Christoph Hellwig
2023-01-24 6:57 ` Christoph Hellwig
2023-01-27 23:40 ` Tejun Heo
[not found] ` <Y9Rg0GuNAmJPlDri-NiLfg/pYEd1N0TnZuCh8vA@public.gmane.org>
2023-02-01 8:06 ` Christoph Hellwig
2023-02-01 8:06 ` Christoph Hellwig
2023-02-02 17:57 ` Tejun Heo
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=Y8pYReOp6VW3Va4O@suselix \
--to=aherrmann@suse.de \
--cc=axboe@kernel.dk \
--cc=cgroups@vger.kernel.org \
--cc=hch@lst.de \
--cc=josef@toxicpanda.com \
--cc=linux-block@vger.kernel.org \
--cc=tj@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.