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. Diffstat: fs/nfs/client.c | 24 +++++++++-- fs/nfs/delegation.c | 99 ++++++++++++++++++++++++++-------------------- fs/nfs/delegation.h | 3 + include/linux/nfs_fs_sb.h | 3 + 4 files changed, 82 insertions(+), 47 deletions(-)