From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965557AbbDVP0B (ORCPT ); Wed, 22 Apr 2015 11:26:01 -0400 Received: from mail-qc0-f170.google.com ([209.85.216.170]:33442 "EHLO mail-qc0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965454AbbDVPZ4 (ORCPT ); Wed, 22 Apr 2015 11:25:56 -0400 Date: Wed, 22 Apr 2015 11:25:51 -0400 From: Tejun Heo To: Aleksa Sarai Cc: lizefan@huawei.com, mingo@redhat.com, peterz@infradead.org, richard@nod.at, fweisbec@gmail.com, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org Subject: Re: [PATCH v10 1/4] cgroups: use bitmask to filter for_each_subsys Message-ID: <20150422152551.GA10738@htj.duckdns.org> References: <1429446154-10660-1-git-send-email-cyphar@cyphar.com> <1429446154-10660-2-git-send-email-cyphar@cyphar.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1429446154-10660-2-git-send-email-cyphar@cyphar.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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