lockd: stop abusing file_lock_list
authorChristoph Hellwig <hch@lst.de>
Mon, 20 Mar 2006 18:44:40 +0000 (13:44 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Mon, 20 Mar 2006 18:44:40 +0000 (13:44 -0500)
commit26bcbf965f857c710adafd16cf424f043006b5dd
treefa3c1e4ba07ab3d1e4e61b27c7579c57fd2d5c65
parent04266473ecf5cdca242201d9f1ed890afe070fb6
lockd: stop abusing file_lock_list

Currently lockd directly access the file_lock_list from fs/locks.c.
It does so to mark locks granted or reclaimable.  This is very
suboptimal, because a) lockd needs to poke into locks.c internals, and
b) it needs to iterate over all locks in the system for marking locks
granted or reclaimable.

This patch adds lists for granted and reclaimable locks to the nlm_host
structure instead, and adds locks to those.

nlmclnt_lock:
now adds the lock to h_granted instead of setting the
NFS_LCK_GRANTED, still O(1)

nlmclnt_mark_reclaim:
goes away completely, replaced by a list_splice_init.
Complexity reduced from O(locks in the system) to O(1)

reclaimer:
iterates over h_reclaim now, complexity reduced from
O(locks in the system) to O(locks per nlm_host)

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/lockd/clntlock.c
fs/lockd/clntproc.c
fs/lockd/host.c
fs/locks.c
include/linux/fs.h
include/linux/lockd/lockd.h
include/linux/nfs_fs_i.h