freebsd-dev/sys
Robert Watson 38ab9a906a Implement a rudimentary access cache for the Coda kernel module,
modeled on the access cache found in NFS, smbfs, and the Linux coda
module.  This is a positive access cache of a single entry per file,
tracking recently granted rights, but unlike NFS and smbfs,
supporting explicit invalidation by the distributed file system.

For each cnode, maintain a C_ACCCACHE flag indicating the validity
of the cache, and a cached uid and mode tracking recently granted
positive access control decisions.

Prefer the cache to venus_access() in VOP_ACCESS() if it is valid,
and when we must fall back to venus_access(), update the cache.

Allow Venus to clear the access cache, either the whole cache on
CODA_FLUSH, or just entries for a specific uid on CODA_PURGEUSER.
Unlike the Coda module on Linux, we don't flush all entries on a
user purge using a generation number, we instead walk present
cnodes and clear only entries for the specific user, meaning it is
somewhat more expensive but won't hit all users.

Since the Coda module is agressive about not keeping around
unopened cnodes, the utility of the cache is somewhat limited for
files, but works will for directories.  We should make Coda less
agressive about GCing cnodes in VOP_INACTIVE() in order to improve
the effectiveness of in-kernel caching of attributes and access
rights.

MFC after:	1 month
2008-02-13 15:45:12 +00:00
..
amd64 If busdma is being used to realign dynamic buffers and the alignment is set to 2008-02-12 16:24:30 +00:00
arm ARM locore cosmetics. 2008-02-05 10:23:42 +00:00
boot Clean up PowerPC loader(8) build config. 2008-02-11 12:30:32 +00:00
bsm Merge OpenBSM 1.0 changes to src/sys/bsm: 2007-10-29 18:47:25 +00:00
cam Fix typo. 2008-02-12 11:07:33 +00:00
cddl - Reduce how much ZFS caches by default. This is another change to mitigate 2008-01-24 11:24:16 +00:00
compat Regenerate for readlink(2). 2008-02-12 20:11:54 +00:00
conf The Sun disk label only uses 16-bit fields for cylinders, heads and 2008-02-11 21:40:22 +00:00
contrib - Reduce how much ZFS caches by default. This is another change to mitigate 2008-01-24 11:24:16 +00:00
crypto
ddb Use dump_write() instead of direct calls to di->dumper() in textdumps. 2008-01-31 16:22:14 +00:00
dev Fix a typo when testing for the NO_C3 quirk. 2008-02-12 15:26:59 +00:00
fs Implement a rudimentary access cache for the Coda kernel module, 2008-02-13 15:45:12 +00:00
gdb
geom Unbreak build, size_t is larger on 64bit platforms. 2008-02-11 09:20:01 +00:00
gnu Cleanup lockmgr interface and exported KPI: 2008-01-24 12:34:30 +00:00
i4b
i386 If busdma is being used to realign dynamic buffers and the alignment is set to 2008-02-12 16:24:30 +00:00
ia64 Allocate a stack for thread0 and switch to it before calling 2008-02-04 02:21:33 +00:00
isa Use cpu_spinwait() (i.e., "pause") when spinning on rdtsc during DELAY(). 2008-01-17 18:59:38 +00:00
kern Make sure we restrict Linux only IPC calls from being executed 2008-02-12 20:55:03 +00:00
libkern
modules Rather than having the Coda module use its own namecache, use the global 2008-02-13 13:06:22 +00:00
net Add comment that bpfread() has multi-threading issues. 2008-02-02 20:35:05 +00:00
net80211 - Correctly handle ALTQ in ieee80211_deliver_data() 2008-02-03 12:00:03 +00:00
netatalk Annotate two possible bugs in a comment: (1) we allocate and explicitly 2007-11-20 18:50:54 +00:00
netatm
netgraph Use rtalloc1() instead of rtalloc_ign(). It returns a locked 2008-02-07 11:10:17 +00:00
netinet If the vhid already present, return EEXIST instead of 2008-02-07 13:18:59 +00:00
netinet6 Rather than passing around a cached 'priv', pass in an ucred to 2008-02-02 14:11:31 +00:00
netipsec Rather than passing around a cached 'priv', pass in an ucred to 2008-02-02 14:11:31 +00:00
netipx
netnatm s/destory/destroy/ (except for the code in contrib/). 2007-04-16 12:31:35 +00:00
netncp Cleanup lockmgr interface and exported KPI: 2008-01-24 12:34:30 +00:00
netsmb Cleanup lockmgr interface and exported KPI: 2008-01-24 12:34:30 +00:00
nfs NFSv4 client: 2006-11-28 19:33:28 +00:00
nfs4client Conver all explicit instances to VOP_ISLOCKED(arg, NULL) into 2008-02-08 21:45:47 +00:00
nfsclient Consolidate the code to generate a new XID for a NFS request into a 2008-02-13 00:04:58 +00:00
nfsserver Use nfsrv_destroycache() only once, else it crashes the server. 2008-01-18 17:03:36 +00:00
opencrypto
pc98
pccard
pci Give MEXTADD() another argument to make both void pointers to the 2008-02-01 19:36:27 +00:00
powerpc Remove SMP left-overs from NetBSD. 2008-02-12 20:55:51 +00:00
rpc Remove the now-unused NET_{LOCK,UNLOCK,ASSERT}_GIANT() macros, which 2007-08-06 14:26:03 +00:00
security Make sure that the termid type is initialized to AU_IPv4 by default. 2008-01-28 17:33:46 +00:00
sparc64 The Sun disk label only uses 16-bit fields for cylinders, heads and 2008-02-11 21:40:22 +00:00
sun4v Add a wrapper function that bound checks writes to the dump device. 2008-01-28 19:04:07 +00:00
sys Make sure we restrict Linux only IPC calls from being executed 2008-02-12 20:55:03 +00:00
tools Introduce a standalone shell script for embedding MFS image. 2008-02-05 10:46:30 +00:00
ufs Cleanup lockmgr interface and exported KPI: 2008-01-24 12:34:30 +00:00
vm
Makefile o Add boot, gdb, nfsserver and opencrypto dirs to CSCOPEDIRS; sort. 2008-01-23 08:50:34 +00:00