From mboxrd@z Thu Jan 1 00:00:00 1970 From: Cliff Wickman Subject: Re: [PATCH] libnuma: add check for return value of numa_node_to_cpus Date: Mon, 19 Jan 2015 10:44:16 -0600 Message-ID: <20150119164416.GA28086@sgi.com> References: <1421225627-9272-1-git-send-email-pholasek@redhat.com> Mime-Version: 1.0 Return-path: Content-Disposition: inline In-Reply-To: <1421225627-9272-1-git-send-email-pholasek@redhat.com> Sender: linux-numa-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Petr Holasek Cc: linux-numa@vger.kernel.org Hi Petr, Thanks for the patch. Sorry for the delay. I'm getting used to a new work flow for numactl/libnuma source. (it is also now at https://github.com/numactl/numactl) I started a new release candidate series for 2.0.11: ftp://oss.sgi.com/www/projects/libnuma/download/ your patch is in numactl-2.0.11-rc1.tar.gz Your patch is important for machines with non-contiguos node numbers, and I don't seem to have a system to test that. So I'm depending on all interested parties to test it. -Cliff On Wed, Jan 14, 2015 at 09:53:47AM +0100, Petr Holasek wrote: > When numa_node_to_cpu() has been called on machine with non-contiguous > nodes, it returned the first node which wasn't present on machine. > Now, return code is checked and code skips over non-existing nodes to > the right one. > > Also, caching of numa_node_to_cpus_v2() result while non-zero error had > been returned was disabled. > > Signed-off-by: Petr Holasek > --- > libnuma.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/libnuma.c b/libnuma.c > index 91425ae..8d7bf13 100644 > --- a/libnuma.c > +++ b/libnuma.c > @@ -1382,8 +1382,12 @@ numa_node_to_cpus_v2(int node, struct bitmask *buffer) > if (mask != buffer) > numa_bitmask_free(mask); > } else { > - node_cpu_mask_v2[node] = mask; > - } > + /* we don't want to cache faulty result */ > + if (!err) > + node_cpu_mask_v2[node] = mask; > + else > + numa_bitmask_free(mask); > + } > return err; > } > __asm__(".symver numa_node_to_cpus_v2,numa_node_to_cpus@@libnuma_1.2"); > @@ -1405,7 +1409,10 @@ int numa_node_of_cpu(int cpu) > bmp = numa_bitmask_alloc(ncpus); > nnodes = numa_max_node(); > for (node = 0; node <= nnodes; node++){ > - numa_node_to_cpus_v2_int(node, bmp); > + if (numa_node_to_cpus_v2_int(node, bmp) < 0) { > + /* It's possible for the node to not exist */ > + continue; > + } > if (numa_bitmask_isbitset(bmp, cpu)){ > ret = node; > goto end; > -- > 2.1.0 -- Cliff Wickman SGI cpw@sgi.com (651)683-7524 vnet 207524 (651)482-9347 home