From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936086AbbCDIJp (ORCPT ); Wed, 4 Mar 2015 03:09:45 -0500 Received: from szxga01-in.huawei.com ([58.251.152.64]:46319 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933632AbbCDIJn (ORCPT ); Wed, 4 Mar 2015 03:09:43 -0500 X-Greylist: delayed 311 seconds by postgrey-1.27 at vger.kernel.org; Wed, 04 Mar 2015 03:09:43 EST Message-ID: <54F6BC43.3000509@huawei.com> Date: Wed, 4 Mar 2015 16:03:15 +0800 From: Xishi Qiu User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: Gu Zheng CC: Yasuaki Ishimatsu , Andrew Morton , Tang Chen , Yinghai Lu , Linux MM , LKML , Toshi Kani , Mel Gorman , Tejun Heo , Xiexiuqi , Hanjun Guo , Li Zefan Subject: Re: node-hotplug: is memset 0 safe in try_offline_node()? References: <54F52ACF.4030103@huawei.com> <54F58AE3.50101@cn.fujitsu.com> <54F66C52.4070600@huawei.com> <54F67376.8050001@huawei.com> <54F68270.5000203@cn.fujitsu.com> In-Reply-To: <54F68270.5000203@cn.fujitsu.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [10.177.25.179] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2015/3/4 11:56, Gu Zheng wrote: > Hi Xishi, > On 03/04/2015 10:52 AM, Xishi Qiu wrote: > >> On 2015/3/4 10:22, Xishi Qiu wrote: >> >>> On 2015/3/3 18:20, Gu Zheng wrote: >>> >>>> Hi Xishi, >>>> On 03/03/2015 11:30 AM, Xishi Qiu wrote: >>>> >>>>> When hot-remove a numa node, we will clear pgdat, >>>>> but is memset 0 safe in try_offline_node()? >>>> >>>> It is not safe here. In fact, this is a temporary solution here. >>>> As you know, pgdat is accessed lock-less now, so protection >>>> mechanism (RCU?) is needed to make it completely safe here, >>>> but it seems a bit over-kill. >>>> >> >> Hi Gu, >> >> Can we just remove "memset(pgdat, 0, sizeof(*pgdat));" ? >> I find this will be fine in the stress test except the warning >> when hot-add memory. > > As you see, it will trigger the warning in free_area_init_node(). > Could you try the following patch? It will reset the pgdat before reuse it. > > diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c > index 1778628..0717649 100644 > --- a/mm/memory_hotplug.c > +++ b/mm/memory_hotplug.c > @@ -1092,6 +1092,9 @@ static pg_data_t __ref *hotadd_new_pgdat(int nid, u64 start) > return NULL; > > arch_refresh_nodedata(nid, pgdat); > + } else { > + /* Reset the pgdat to reuse */ > + memset(pgdat, 0, sizeof(*pgdat)); > } Hi Gu, If schedule last a long time, next_zone may be still access the pgdat here, so it is not safe enough, right? Thanks Xishi Qiu > > /* we can use NODE_DATA(nid) from here */ > @@ -2021,15 +2024,6 @@ void try_offline_node(int nid) > > /* notify that the node is down */ > call_node_notify(NODE_DOWN, (void *)(long)nid); > - > - /* > - * Since there is no way to guarentee the address of pgdat/zone is not > - * on stack of any kernel threads or used by other kernel objects > - * without reference counting or other symchronizing method, do not > - * reset node_data and free pgdat here. Just reset it to 0 and reuse > - * the memory when the node is online again. > - */ > - memset(pgdat, 0, sizeof(*pgdat)); > } > EXPORT_SYMBOL(try_offline_node); > > >> >> Thanks, >> Xishi Qiu >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> Please read the FAQ at http://www.tux.org/lkml/ >> . >> > > > > . >