Re: [PATCH v10 1/4] cgroups: use bitmask to filter for_each_subsys

Tejun Heo
2015-04-22T15:25:51Z

Hello, Aleksa.

On Sun, Apr 19, 2015 at 10:22:31PM +1000, Aleksa Sarai wrote:
> -static int need_forkexit_callback __read_mostly;
> +static int need_fork_callback __read_mostly;
> +static int need_exit_callback __read_mostly;

These are bitmasks now, right? Let's make them unsigned int.

> static struct cftype cgroup_dfl_base_files[];
> +#define for_each_subsys_which(ss_mask, ss, ssid) \
> + for_each_subsys((ss), (ssid)) \
> + if ((ss_mask) & (1 << (ssid)))

Maybe using for_each_set_bit() is better?

#define for_each_subsys_which(ss_mask, ss, ssid) \
for_each_set_bit(ssid, &(ss_mask), CGROUP_SUBSYS_COUNT) \
if ((ss) = group_subsys[ssid] && false) \
; \
else

> @@ -4932,7 +4947,8 @@ static void __init cgroup_init_subsys(struct cgroup_subsys *ss, bool early)
> * init_css_set is in the subsystem's root cgroup. */
> init_css_set.subsys[ss->id] = css;
>
> - need_forkexit_callback |= ss->fork || ss->exit;
> + need_fork_callback |= (bool) ss->fork << ss->id;
> + need_exit_callback |= (bool) ss->exit << ss->id;
^
please drop the space here

Other than the above minor points, looks good to me.

Thanks for the persistence.

--
tejun