Hi all, currently recalling delegations has to walk the server->delegations list, and then take the lock for each delegation. This can take a lot of time and has adverse effects to the rest of the system due to the number atomic operations, cache lines touched and a long RCU critical section. This series first converts the delegation watermark to be per-server, as all the state guarded by it is per-server and the commit message adding it talks about server side overhead as well, and then adds a very simple hash for finding the delegation for a given file handle in nfs_delegation_find_inode_server. With this hash sample microbenchmarks that cause delegation recalls in reverse list order are sped up ~5 percent, although the time is still very variable due to other factors. Changes since v1: - only allocate the delegation hash for v4 mounts Diffstat: fs/nfs/client.c | 15 +++++- fs/nfs/delegation.c | 110 ++++++++++++++++++++++++++++------------------ fs/nfs/delegation.h | 3 + fs/nfs/nfs4client.c | 10 +++- include/linux/nfs_fs_sb.h | 3 + 5 files changed, 96 insertions(+), 45 deletions(-)