[PATCH 4 of 4] knfsd: handle non-contiguous cpu and node numbers

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

 



knfsd: when allocating per-cpu or per-node rpc thread pools, handle
the case of noncontiguous cpu or node numbers.

Tested:

Machine                         ARCH    SMP NUMA    SUNRPC  nodes   cpus    hpni    hppi    pools(mode)
-------                         ----    --- ----    ------  -----   ----    ----    ----    ------------
4 cpu Xeon SMP                  x86_64  y   y       y       1       4       31      7       4 (percpu)
4 cpu Xeon SMP                  x86_64  y   y       m       1       4       31      7       4 (percpu)
4 cpu Xeon SMP                  x86_64  y   n       y       0       4       0       7       4 (percpu)
4 cpu Xeon SMP                  x86_64  y   n       m       0       4       0       7       4 (percpu)
4 cpu Xeon SMP                  x86_64  n   n       y       0       1       0       0       1 (global)
4 cpu Xeon SMP                  x86_64  n   n       m       0       1       0       0       1 (global)
4 cpu (2 node) Itanium NUMA     ia64    y   y       m       2       4       1023    3       2 (pernode)
2 cpu (1 node) Itanium NUMA     ia64    y   y       m       1       2       1023    1       1 (global)

* number of nodes and cpus from /sys/devices/system/
* hpni = value of highest_possible_node_id()
* hppi = value of highest_possible_processor_id()

Signed-off-by: Greg Banks <[email protected]>
---

 net/sunrpc/svc.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Index: linus-git/net/sunrpc/svc.c
===================================================================
--- linus-git.orig/net/sunrpc/svc.c	2006-08-01 15:38:30.000000000 +1000
+++ linus-git/net/sunrpc/svc.c	2006-08-02 13:20:35.979647782 +1000
@@ -116,7 +116,7 @@ fail:
 static int
 svc_pool_map_init_percpu(struct svc_pool_map *m)
 {
-	unsigned int maxpools = num_possible_cpus();
+	unsigned int maxpools = highest_possible_processor_id()+1;
 	unsigned int pidx = 0;
 	unsigned int cpu;
 	int err;
@@ -144,7 +144,7 @@ svc_pool_map_init_percpu(struct svc_pool
 static int
 svc_pool_map_init_pernode(struct svc_pool_map *m)
 {
-	unsigned int maxpools = num_possible_nodes();
+	unsigned int maxpools = highest_possible_node_id()+1;
 	unsigned int pidx = 0;
 	unsigned int node;
 	int err;

-- 
Greg Banks, R&D Software Engineer, SGI Australian Software Group.
I don't speak for SGI.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux