From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751796AbbFZBDz (ORCPT ); Thu, 25 Jun 2015 21:03:55 -0400 Received: from cn.fujitsu.com ([59.151.112.132]:22356 "EHLO heian.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1751277AbbFZBDs (ORCPT ); Thu, 25 Jun 2015 21:03:48 -0400 X-IronPort-AV: E=Sophos;i="5.13,665,1427731200"; d="scan'208";a="97766546" Message-ID: <558CA5FF.7090302@cn.fujitsu.com> Date: Fri, 26 Jun 2015 09:08:15 +0800 From: Lai Jiangshan User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: Nathan Zimmer CC: Andrew Morton , Nishanth Aravamudan , Tejun Heo , Mel Gorman , Subject: Re: [RFC] kthread_create_on_node is failing to honor the node choice References: <20150625204855.GC26927@suse.de> <1435268653-167841-1-git-send-email-nzimmer@sgi.com> In-Reply-To: <1435268653-167841-1-git-send-email-nzimmer@sgi.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.167.226.103] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/26/2015 05:44 AM, Nathan Zimmer wrote: > In kthread_create_on_node we set_cpus_allowed to cpu_all_mask > regardless of what the node is requested. > This seems incorrect. > > Signed-off-by: Nathan Zimmer > Cc: Andrew Morton > Cc: Nishanth Aravamudan > Cc: Tejun Heo > Cc: Lai Jiangshan > Cc: Mel Gorman > Cc: linux-kernel@vger.kernel.org > > --- > kernel/kthread.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/kernel/kthread.c b/kernel/kthread.c > index 10e489c..d885d66 100644 > --- a/kernel/kthread.c > +++ b/kernel/kthread.c > @@ -318,7 +318,10 @@ struct task_struct *kthread_create_on_node(int (*threadfn)(void *data), > * The kernel thread should not inherit these properties. > */ > sched_setscheduler_nocheck(task, SCHED_NORMAL, ¶m); > - set_cpus_allowed_ptr(task, cpu_all_mask); > + if (node == -1) > + set_cpus_allowed_ptr(task, cpu_all_mask); > + else > + set_cpus_allowed_ptr(task, cpumask_of_node(node)); cpumask_of_node(node) is bad here. It containers only online cpus. > } > kfree(create); > return task; >