android_kernel_xiaomi_sdm845/include
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
..
acpi ACPI: video: fix build for CONFIG_ACPI=n 2010-12-11 02:01:46 -05:00
asm-generic asm-generic/stat.h: support 64-bit file time_t for stat() 2010-11-01 15:31:29 -04:00
crypto Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
drm drm/i915: announce to userspace that the bsd ring is coherent 2010-12-05 10:40:39 +00:00
keys
linux lockd: Create client-side nlm_host cache 2010-12-16 12:37:26 -05:00
math-emu
media [media] v4l: Remove module_name argument to the v4l2_i2c_new_subdev* functions 2010-11-22 11:56:26 -02:00
mtd mtd: Define MLC Flash as a different flash type 2010-10-25 00:50:20 +01:00
net filter: fix sk_filter rcu handling 2010-12-06 09:29:43 -08:00
pcmcia pcmcia: IOCARD is also required for using IRQs 2010-10-22 08:46:36 +02:00
rdma IB/core: Add VLAN support for IBoE 2010-10-25 10:20:39 -07:00
rxrpc
scsi SCSI host lock push-down 2010-11-16 13:33:23 -08:00
sound ARM: mach-shmobile: ap4evb: FSI clock use proper process for HDMI 2010-11-24 15:29:56 +09:00
trace ext4: Add new ext4 inode tracepoints 2010-11-08 13:51:33 -05:00
video fbdev: da8xx: punt duplicated FBIO_WAITFORVSYNC define 2010-11-16 10:14:22 +09:00
xen xen: Provide a variant of __RING_SIZE() that is an integer constant expression 2010-12-15 12:34:28 -08:00
Kbuild