OpenCloudOS-Kernel/net/sunrpc
NeilBrown 1f1e030bf7 [PATCH] knfsd: fix hash function for IP addresses on 64bit little-endian machines.
The hash.h hash_long function, when used on a 64 bit machine, ignores many
of the middle-order bits.  (The prime chosen it too bit-sparse).

IP addresses for clients of an NFS server are very likely to differ only in
the low-order bits.  As addresses are stored in network-byte-order, these
bits become middle-order bits in a little-endian 64bit 'long', and so do
not contribute to the hash.  Thus you can have the situation where all
clients appear on one hash chain.

So, until hash_long is fixed (or maybe forever), us a hash function that
works well on IP addresses - xor the bytes together.

Thanks to "Iozone" <capps@iozone.org> for identifying this problem.

Cc: "Iozone" <capps@iozone.org>

Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-06 08:33:21 -08:00
..
auth_gss SUNRPC: Fix "EPIPE" error on mount of rpcsec_gss-protected partitions 2005-12-19 23:12:21 -05:00
Makefile [PATCH] RPC: introduce client-side transport switch 2005-09-23 12:38:12 -04:00
auth.c NFS,SUNRPC,NLM: fix unused variable warnings when CONFIG_SYSCTL is disabled 2005-11-04 15:39:48 -05:00
auth_null.c [PATCH] RPC: Eliminate socket.h includes in RPC client 2005-09-23 12:38:23 -04:00
auth_unix.c [PATCH] RPC: Eliminate socket.h includes in RPC client 2005-09-23 12:38:23 -04:00
cache.c [PATCH] sunrpc: cache_register can use wrong module reference 2005-09-07 16:57:25 -07:00
clnt.c [PATCH] SUNRPC: don't reencode when looping in call transmit. 2005-11-09 19:31:33 -08:00
pmap_clnt.c SUNRPC: fix bug in patch "portmapper doesn't need a reserved port" 2005-09-23 13:54:10 -04:00
rpc_pipe.c SUNRPC: Fix "EPIPE" error on mount of rpcsec_gss-protected partitions 2005-12-19 23:12:21 -05:00
sched.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
socklib.c [NET]: Detect hardware rx checksum faults correctly 2005-11-10 13:01:24 -08:00
stats.c [PATCH] sunrpc: print unsigned integers in stats 2005-09-07 16:57:39 -07:00
sunrpc_syms.c SUNRPC: allow sunrpc.o to link when CONFIG_SYSCTL is disabled 2005-11-04 15:39:45 -05:00
svc.c [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
svcauth.c [PATCH] sunrpc: cache_register can use wrong module reference 2005-09-07 16:57:25 -07:00
svcauth_unix.c [PATCH] knfsd: fix hash function for IP addresses on 64bit little-endian machines. 2006-01-06 08:33:21 -08:00
svcsock.c [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
sysctl.c SUNRPC: allow sunrpc.o to link when CONFIG_SYSCTL is disabled 2005-11-04 15:39:45 -05:00
timer.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xdr.c [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
xprt.c SUNRPC: Provide a callback to allow free pages allocated during xdr encoding 2005-10-18 23:19:43 -07:00
xprtsock.c RPC: Do not block on skb allocation 2005-12-19 23:11:54 -05:00