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>
This commit is contained in:

کامیت شده توسط
J. Bruce Fields

والد
76d348fadf
کامیت
7919d0a27f
@@ -587,6 +587,8 @@ static inline bool nfsd4_stateid_generation_after(stateid_t *a, stateid_t *b)
|
||||
*/
|
||||
struct nfsd4_blocked_lock {
|
||||
struct list_head nbl_list;
|
||||
struct list_head nbl_lru;
|
||||
unsigned long nbl_time;
|
||||
struct file_lock nbl_lock;
|
||||
struct knfsd_fh nbl_fh;
|
||||
struct nfsd4_callback nbl_cb;
|
||||
|
مرجع در شماره جدید
Block a user