Re: [PATCH] libnuma: add check for return value of numa_node_to_cpus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <pholasek@xxxxxxxxxx>
> ---
>  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@xxxxxxx
(651)683-7524 vnet 207524
(651)482-9347 home
--
To unsubscribe from this list: send the line "unsubscribe linux-numa" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]     [Devices]

  Powered by Linux