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 v2: - keep the hash allocation for cloning inside the nfsv4 module Changes since v1: - only allocate the delegation hash for v4 mounts Diffstat: fs/nfs/client.c | 1 fs/nfs/delegation.c | 110 ++++++++++++++++++++++++++++------------------ fs/nfs/delegation.h | 3 + fs/nfs/nfs4client.c | 14 +++-- fs/nfs/nfs4proc.c | 22 ++++++++- include/linux/nfs_fs_sb.h | 3 + 6 files changed, 106 insertions(+), 47 deletions(-)