All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vivek Goyal <vgoyal@redhat.com>
To: Tejun Heo <tj@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>,
	linux-kernel@vger.kernel.org, Li Zefan <lizefan@huawei.com>
Subject: Re: [PATCH block/for-next 3/4] cgroup, block: implement task_get_css() and use it in bio_associate_current()
Date: Thu, 20 Nov 2014 15:27:06 -0500	[thread overview]
Message-ID: <20141120202706.GD11595@redhat.com> (raw)
In-Reply-To: <20141117211546.GF23126@htj.dyndns.org>

On Mon, Nov 17, 2014 at 04:15:46PM -0500, Tejun Heo wrote:
> bio_associate_current() currently open codes task_css() and
> css_tryget_online() to find and pin $current's blkcg css.  Abstract it
> into task_get_css() which is implemented from cgroup side.  As a task
> is always associated with an online css for every subsystem except
> while the css_set update is propagating, task_get_css() retries till
> css_tryget_online() succeeds.
> 
> This is a cleanup and shouldn't lead to noticeable behavior changes.
> 
> Signed-off-by: Tejun Heo <tj@kernel.org>
> Cc: Li Zefan <lizefan@huawei.com>
> Cc: Jens Axboe <axboe@kernel.dk>
> Cc: Vivek Goyal <vgoyal@redhat.com>

Looks good to me.

Acked-by: Vivek Goyal <vgoyal@redhat.com>

Vivek

> ---
> Hello,
> 
> This one can be routed through either cgroup or block tree but I think
> it'd be easier to route this through block as there will be more block
> changes in the area.
> 
> Thanks.
> 
>  block/bio.c            |   11 +----------
>  include/linux/cgroup.h |   25 +++++++++++++++++++++++++
>  2 files changed, 26 insertions(+), 10 deletions(-)
> 
> --- a/block/bio.c
> +++ b/block/bio.c
> @@ -1997,7 +1997,6 @@ EXPORT_SYMBOL(bioset_create_nobvec);
>  int bio_associate_current(struct bio *bio)
>  {
>  	struct io_context *ioc;
> -	struct cgroup_subsys_state *css;
>  
>  	if (bio->bi_ioc)
>  		return -EBUSY;
> @@ -2006,17 +2005,9 @@ int bio_associate_current(struct bio *bi
>  	if (!ioc)
>  		return -ENOENT;
>  
> -	/* acquire active ref on @ioc and associate */
>  	get_io_context_active(ioc);
>  	bio->bi_ioc = ioc;
> -
> -	/* associate blkcg if exists */
> -	rcu_read_lock();
> -	css = task_css(current, blkio_cgrp_id);
> -	if (css && css_tryget_online(css))
> -		bio->bi_css = css;
> -	rcu_read_unlock();
> -
> +	bio->bi_css = task_get_css(current, blkio_cgrp_id);
>  	return 0;
>  }
>  
> --- a/include/linux/cgroup.h
> +++ b/include/linux/cgroup.h
> @@ -748,6 +748,31 @@ static inline struct cgroup_subsys_state
>  }
>  
>  /**
> + * task_get_css - find and get the css for (task, subsys)
> + * @task: the target task
> + * @subsys_id: the target subsystem ID
> + *
> + * Find the css for the (@task, @subsys_id) combination, increment a
> + * reference on and return it.  This function is guaranteed to return a
> + * valid css.
> + */
> +static inline struct cgroup_subsys_state *
> +task_get_css(struct task_struct *task, int subsys_id)
> +{
> +	struct cgroup_subsys_state *css;
> +
> +	rcu_read_lock();
> +	while (true) {
> +		css = task_css(task, subsys_id);
> +		if (likely(css_tryget_online(css)))
> +			break;
> +		cpu_relax();
> +	}
> +	rcu_read_unlock();
> +	return css;
> +}
> +
> +/**
>   * task_css_is_root - test whether a task belongs to the root css
>   * @task: the target task
>   * @subsys_id: the target subsystem ID

  parent reply	other threads:[~2014-11-20 20:27 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-17 21:13 [PATCH block/for-next 1/4] blkcg: move block/blk-cgroup.h to include/linux/blk-cgroup.h Tejun Heo
2014-11-17 21:13 ` [PATCH block/for-next 2/4] blkcg: add blkcg_root_css Tejun Heo
2014-11-17 21:15   ` [PATCH block/for-next 3/4] cgroup, block: implement task_get_css() and use it in bio_associate_current() Tejun Heo
2014-11-17 21:16     ` [PATCH block/for-next 4/4] block: implement bio_associate_blkcg() Tejun Heo
2014-11-20 21:15       ` Vivek Goyal
2015-01-06 23:12         ` Tejun Heo
2014-11-20 20:27     ` Vivek Goyal [this message]
2014-11-20 20:16   ` [PATCH block/for-next 2/4] blkcg: add blkcg_root_css Vivek Goyal
2015-01-06 22:37     ` Tejun Heo
2014-11-20 20:10 ` [PATCH block/for-next 1/4] blkcg: move block/blk-cgroup.h to include/linux/blk-cgroup.h Vivek Goyal

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=20141120202706.GD11595@redhat.com \
    --to=vgoyal@redhat.com \
    --cc=axboe@kernel.dk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizefan@huawei.com \
    --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.