nfsd: add a LRU list for blocked locks
authorJeff Layton <jlayton@redhat.com>
Fri, 16 Sep 2016 20:28:25 +0000 (16:28 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 26 Sep 2016 19:20:36 +0000 (15:20 -0400)
commit7919d0a27f1e7cb324e023776aa1cbff00f1ee7b
tree49ad90bf5a85f3c5ee3b0814be8902c3186614ec
parent76d348fadff52e8ad10e7f587a4560df79a5fefe
nfsd: add a LRU list for blocked locks

It's possible for a client to call in on a lock that is blocked for a
long time, but discontinue polling for it. A malicious client could
even set a lock on a file, and then spam the server with failing lock
requests from different lockowners that pile up in a DoS attack.

Add the blocked lock structures to a per-net namespace LRU when hashing
them, and timestamp them. If the lock request is not revisited after a
lease period, we'll drop it under the assumption that the client is no
longer interested.

This also gives us a mechanism to clean up these objects at server
shutdown time as well.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/netns.h
fs/nfsd/nfs4state.c
fs/nfsd/state.h