From: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
To: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 14/14] cgroup: implement css_tryget()
Date: Sun, 11 May 2014 00:54:59 -0400 [thread overview]
Message-ID: <20140511045459.GA25009@cmpxchg.org> (raw)
In-Reply-To: <1399671091-23867-15-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
On Fri, May 09, 2014 at 05:31:31PM -0400, Tejun Heo wrote:
> Implement css_tryget() which tries to grab a cgroup_subsys_state's
> reference as long as it already hasn't reached zero. Combined with
> the recent css iterator changes to include offline && !released csses
> during traversal, this can be used to access csses regardless of its
> online state.
>
> Signed-off-by: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> Cc: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
> ---
> include/linux/cgroup.h | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
> index c8eb66e..6dd3867 100644
> --- a/include/linux/cgroup.h
> +++ b/include/linux/cgroup.h
> @@ -111,6 +111,22 @@ static inline void css_get(struct cgroup_subsys_state *css)
> }
>
> /**
> + * css_tryget - try to obtain a reference on the specified css
> + * @css: target css
> + *
> + * Obtain a reference on @css unless it already has reached zero and is
> + * being released. This function doesn't care whether @css is on or
> + * offline. The caller naturally needs to ensure that @css is accessible
> + * but doesn't have to be holding a reference on it - IOW, RCU protected
> + * access is good enough for this function. Returns %true if a reference
> + * count was successfully obtained; %false otherwise.
> + */
> +static inline bool css_tryget(struct cgroup_subsys_state *css)
> +{
> + return percpu_ref_tryget(&css->refcnt);
> +}
percpu_ref_tryget() fails once killed (transitioned from per-cpu to
atomic mode), but exactly this happens during offlining and so this
would actually be equivalent to css_tryget_online(), no?
WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <hannes@cmpxchg.org>
To: Tejun Heo <tj@kernel.org>
Cc: lizefan@huawei.com, cgroups@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 14/14] cgroup: implement css_tryget()
Date: Sun, 11 May 2014 00:54:59 -0400 [thread overview]
Message-ID: <20140511045459.GA25009@cmpxchg.org> (raw)
In-Reply-To: <1399671091-23867-15-git-send-email-tj@kernel.org>
On Fri, May 09, 2014 at 05:31:31PM -0400, Tejun Heo wrote:
> Implement css_tryget() which tries to grab a cgroup_subsys_state's
> reference as long as it already hasn't reached zero. Combined with
> the recent css iterator changes to include offline && !released csses
> during traversal, this can be used to access csses regardless of its
> online state.
>
> Signed-off-by: Tejun Heo <tj@kernel.org>
> Cc: Johannes Weiner <hannes@cmpxchg.org>
> ---
> include/linux/cgroup.h | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
> index c8eb66e..6dd3867 100644
> --- a/include/linux/cgroup.h
> +++ b/include/linux/cgroup.h
> @@ -111,6 +111,22 @@ static inline void css_get(struct cgroup_subsys_state *css)
> }
>
> /**
> + * css_tryget - try to obtain a reference on the specified css
> + * @css: target css
> + *
> + * Obtain a reference on @css unless it already has reached zero and is
> + * being released. This function doesn't care whether @css is on or
> + * offline. The caller naturally needs to ensure that @css is accessible
> + * but doesn't have to be holding a reference on it - IOW, RCU protected
> + * access is good enough for this function. Returns %true if a reference
> + * count was successfully obtained; %false otherwise.
> + */
> +static inline bool css_tryget(struct cgroup_subsys_state *css)
> +{
> + return percpu_ref_tryget(&css->refcnt);
> +}
percpu_ref_tryget() fails once killed (transitioned from per-cpu to
atomic mode), but exactly this happens during offlining and so this
would actually be equivalent to css_tryget_online(), no?
next prev parent reply other threads:[~2014-05-11 4:54 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-09 21:31 [PATCHSET cgroup/for-3.16] cgroup: iterate cgroup_subsys_states directly Tejun Heo
2014-05-09 21:31 ` Tejun Heo
2014-05-09 21:31 ` [PATCH 01/14] cgroup: remove css_parent() Tejun Heo
[not found] ` <1399671091-23867-2-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2014-05-11 1:47 ` David Miller
2014-05-11 1:47 ` David Miller
2014-05-11 13:02 ` Neil Horman
2014-05-11 13:02 ` Neil Horman
2014-05-13 18:50 ` [PATCH v2 " Tejun Heo
2014-05-13 18:50 ` Tejun Heo
2014-05-12 13:16 ` [PATCH " Michal Hocko
2014-05-09 21:31 ` [PATCH 04/14] device_cgroup: remove direct access to cgroup->children Tejun Heo
[not found] ` <1399671091-23867-5-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2014-05-13 12:56 ` Aristeu Rozanski
2014-05-13 12:56 ` Aristeu Rozanski
2014-05-14 12:52 ` Serge E. Hallyn
2014-05-14 12:52 ` Serge E. Hallyn
2014-05-09 21:31 ` [PATCH 05/14] cgroup: remove cgroup->parent Tejun Heo
[not found] ` <1399671091-23867-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2014-05-09 21:31 ` [PATCH 02/14] cgroup: remove pointless has tasks/children test from mem_cgroup_force_empty() Tejun Heo
2014-05-09 21:31 ` Tejun Heo
[not found] ` <1399671091-23867-3-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2014-05-12 14:53 ` Michal Hocko
2014-05-12 14:53 ` Michal Hocko
[not found] ` <20140512145324.GE9564-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2014-05-12 14:58 ` [PATCH] memcg: deprecate memory.force_empty knob Michal Hocko
2014-05-12 14:58 ` Michal Hocko
[not found] ` <20140512145803.GF9564-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2014-05-12 15:00 ` Tejun Heo
2014-05-12 15:00 ` Tejun Heo
[not found] ` <20140512150014.GB1421-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-05-12 15:20 ` Michal Hocko
2014-05-12 15:20 ` Michal Hocko
2014-05-12 15:25 ` Tejun Heo
[not found] ` <20140512152507.GD1421-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-05-12 15:34 ` Michal Hocko
2014-05-12 15:34 ` Michal Hocko
[not found] ` <20140512153458.GJ9564-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2014-05-13 13:16 ` Johannes Weiner
2014-05-13 13:16 ` Johannes Weiner
[not found] ` <20140513131655.GC18849-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2014-05-13 15:09 ` Michal Hocko
2014-05-13 15:09 ` Michal Hocko
2014-05-12 14:59 ` [PATCH 02/14] cgroup: remove pointless has tasks/children test from mem_cgroup_force_empty() Tejun Heo
2014-05-12 14:59 ` Tejun Heo
[not found] ` <20140512145927.GA1421-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-05-12 15:21 ` Michal Hocko
2014-05-12 15:21 ` Michal Hocko
2014-05-13 13:10 ` Johannes Weiner
2014-05-13 13:10 ` Johannes Weiner
2014-05-13 16:46 ` Tejun Heo
2014-05-13 16:46 ` Tejun Heo
2014-05-13 18:51 ` [PATCH UPDATED 02/14] memcg: remove " Tejun Heo
2014-05-13 18:51 ` Tejun Heo
2014-05-09 21:31 ` [PATCH 03/14] memcg: update memcg_has_children() to use css_next_child() Tejun Heo
2014-05-09 21:31 ` Tejun Heo
[not found] ` <1399671091-23867-4-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2014-05-12 15:18 ` Michal Hocko
2014-05-12 15:18 ` Michal Hocko
2014-05-13 16:53 ` [PATCH v2 " Tejun Heo
2014-05-09 21:31 ` [PATCH 06/14] cgroup: move cgroup->sibling and ->children into cgroup_subsys_state Tejun Heo
2014-05-09 21:31 ` Tejun Heo
2014-05-09 21:31 ` [PATCH 07/14] cgroup: link all cgroup_subsys_states in their sibling lists Tejun Heo
2014-05-09 21:31 ` Tejun Heo
2014-05-13 16:59 ` [PATCHSET cgroup/for-3.16] cgroup: iterate cgroup_subsys_states directly Tejun Heo
2014-05-13 16:59 ` Tejun Heo
2014-05-14 4:21 ` Li Zefan
2014-05-14 4:21 ` Li Zefan
[not found] ` <5372EF45.8060701-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2014-05-14 13:07 ` Tejun Heo
2014-05-14 13:07 ` Tejun Heo
[not found] ` <20140514130722.GE28815-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-05-16 1:28 ` Li Zefan
2014-05-16 1:28 ` Li Zefan
2014-05-16 1:29 ` Li Zefan
2014-05-16 1:29 ` Li Zefan
2014-05-16 16:08 ` Tejun Heo
2014-05-16 16:08 ` Tejun Heo
2014-05-09 21:31 ` [PATCH 08/14] cgroup: move cgroup->serial_nr into cgroup_subsys_state Tejun Heo
2014-05-09 21:31 ` [PATCH 09/14] cgroup: introduce CSS_RELEASED and reduce css iteration fallback window Tejun Heo
[not found] ` <1399671091-23867-10-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2014-05-16 16:07 ` [PATCH v2 " Tejun Heo
2014-05-16 16:07 ` Tejun Heo
2014-05-09 21:31 ` [PATCH 10/14] cgroup: iterate cgroup_subsys_states directly Tejun Heo
2014-05-09 21:31 ` [PATCH 11/14] cgroup: use CSS_ONLINE instead of CGRP_DEAD Tejun Heo
2014-05-09 21:31 ` [PATCH 12/14] cgroup: convert cgroup_has_live_children() into css_has_online_children() Tejun Heo
2014-05-09 21:31 ` [PATCH 13/14] device_cgroup: use css_has_online_children() instead of has_children() Tejun Heo
[not found] ` <1399671091-23867-14-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2014-05-13 12:56 ` Aristeu Rozanski
2014-05-13 12:56 ` Aristeu Rozanski
2014-05-14 12:53 ` Serge E. Hallyn
2014-05-09 21:31 ` [PATCH 14/14] cgroup: implement css_tryget() Tejun Heo
[not found] ` <1399671091-23867-15-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2014-05-11 4:54 ` Johannes Weiner [this message]
2014-05-11 4:54 ` Johannes Weiner
[not found] ` <20140511045459.GA25009-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2014-05-11 12:38 ` Tejun Heo
2014-05-11 12:38 ` Tejun Heo
2014-05-16 16:07 ` [PATCH v2 " Tejun Heo
2014-05-16 16:07 ` 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=20140511045459.GA25009@cmpxchg.org \
--to=hannes-druugvl0lcnafugrpc6u6w@public.gmane.org \
--cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
--cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.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.