android_kernel_samsung_univ.../fs
Chuck Lever 8ea6ecc8b0 lockd: Create client-side nlm_host cache
NFS clients don't need the garbage collection processing that is
performed on nlm_host structures.  The client picks up an nlm_host at
mount time and holds a reference to it until the file system is
unmounted.

Servers, on the other hand, don't have a precise way to tell when an
nlm_host is no longer being used, so zero refcount nlm_host entries
are left to expire in the cache after a time.

Basically there's nothing holding a reference to an nlm_host between
individual server-side NLM requests, but we can't afford the expense
of recreating them for every new NLM request from a client.  The
nlm_host cache adds some lifetime hysteresis to entries in the cache
so the next time a particular nlm_host is needed, it's likely to be
discovered by a lookup rather than created from whole cloth.

With the new implementation, client nlm_host cache items are no longer
garbage collected, and are destroyed directly by a new release
function specialized for client entries, nlmclnt_release_host().  They
are cached in their own data structure, and have their own lookup
logic, simplified and specialized for client nlm_host entries.

However, the client nlm_host cache still shares reboot recovery logic
with the server nlm_host cache.  The NSM "peer rebooted" downcall for
clients and servers still come through the same RPC call.  This is a
legacy formal API that would be difficult to alter, and besides, the
user space NSM implementation can't tell the difference between peers
that are clients or servers.

For this reason, the client cache continues to share the
nlm_host_mutex (and reboot recovery logic) with the server cache.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2010-12-16 12:37:26 -05:00
..
9p
adfs
affs
afs
autofs4 autofs4 - remove ioctl mutex (bz23142) 2010-12-07 07:45:44 -08:00
befs
bfs
btrfs Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable 2010-12-14 11:08:13 -08:00
cachefiles
ceph ceph: fix ioctl magic 2010-12-06 09:45:22 -08:00
cifs cifs: remove bogus remapping of error in cifs_filldir() 2010-12-08 18:47:54 +00:00
coda
configfs
cramfs
debugfs
devpts
dlm
ecryptfs BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
efs
exofs
exportfs
ext2
ext3 BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
ext4 ext4: fix typo which broke '..' detection in ext4_find_entry() 2010-12-14 21:45:31 -05:00
fat
freevxfs
fscache
fuse fuse: verify ioctl retries 2010-11-30 16:39:27 +01:00
gfs2 GFS2: Userland expects quota limit/warn/usage in 512b blocks 2010-11-19 11:20:29 +00:00
hfs
hfsplus
hostfs
hpfs
hppfs
hugetlbfs hugetlbfs: lessen the impact of a deprecation warning 2010-11-12 07:55:32 -08:00
isofs
jbd
jbd2 jbd2: fix /proc/fs/jbd2/<dev> when using an external journal 2010-11-17 21:46:26 -05:00
jffs2
jfs
lockd lockd: Create client-side nlm_host cache 2010-12-16 12:37:26 -05:00
logfs
minix
ncpfs BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
nfs SUNRPC: New xdr_streams XDR decoder API 2010-12-16 12:37:25 -05:00
nfs_common
nfsd SUNRPC: New xdr_streams XDR decoder API 2010-12-16 12:37:25 -05:00
nilfs2 nilfs2: fix regression of garbage collection ioctl 2010-12-16 14:35:18 +09:00
nls
notify
ntfs
ocfs2 ocfs2_connection_find() returns pointer to bad structure 2010-11-18 15:41:41 -08:00
omfs
openpromfs sparc: fix openpromfs compile 2010-11-08 14:29:39 -08:00
partitions
proc Revert "vfs: show unreachable paths in getcwd and proc" 2010-12-05 16:39:45 -08:00
qnx4
quota
ramfs
reiserfs reiserfs: don't acquire lock recursively in reiserfs_acl_chmod 2010-12-02 14:51:15 -08:00
romfs
squashfs
sysfs
sysv
ubifs
udf
ufs
xfs xfs: log timestamp changes to the source inode in rename 2010-12-09 17:07:02 -06:00
aio.c
anon_inodes.c
attr.c
bad_inode.c
binfmt_aout.c
binfmt_elf_fdpic.c
binfmt_elf.c
binfmt_em86.c
binfmt_flat.c
binfmt_misc.c
binfmt_script.c
binfmt_som.c
bio-integrity.c
bio.c bio: take care not overflow page count when mapping/copying user data 2010-11-10 14:40:43 +01:00
block_dev.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
buffer.c
char_dev.c
compat_binfmt_elf.c
compat_ioctl.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
compat.c exec: copy-and-paste the fixes into compat_do_execve() paths 2010-11-30 17:56:38 -08:00
dcache.c
dcookies.c
direct-io.c
drop_caches.c
eventfd.c
eventpoll.c
exec.c install_special_mapping skips security_file_mmap check. 2010-12-15 12:30:36 -08:00
fcntl.c
fifo.c
file_table.c
file.c
filesystems.c
fs_struct.c
fs-writeback.c
generic_acl.c
inode.c
internal.h
ioctl.c Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 2010-11-19 19:46:45 -08:00
ioprio.c ioprio: grab rcu_read_lock in sys_ioprio_{set,get}() 2010-11-15 10:23:31 +01:00
Kconfig
Kconfig.binfmt
libfs.c
locks.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
Makefile
mbcache.c
mpage.c
namei.c
namespace.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
nfsctl.c
no-block.c
open.c
pipe.c Un-inline get_pipe_info() helper function 2010-11-28 16:27:19 -08:00
pnode.c
pnode.h
posix_acl.c
read_write.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
read_write.h
readdir.c
select.c
seq_file.c
signalfd.c
splice.c Export 'get_pipe_info()' to other users 2010-11-28 14:09:57 -08:00
stack.c
stat.c
statfs.c
super.c
sync.c
timerfd.c
utimes.c
xattr_acl.c
xattr.c