freebsd-skq/sys
rwatson 621bdec0f6 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 Make test00 compilable again. 2008-01-15 18:34:47 +00:00
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 Add kdb_cpu_sync_icache(), intended to synchronize instruction 2007-06-09 21:55:17 +00:00
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 Spelling fix for interupt -> interrupt 2007-10-12 06:03:46 +00:00
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 Do not use __XSCALE__ to detect if clz is available, use _ARM_ARCH_5 instead. 2007-10-13 12:05:36 +00:00
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 Disconnect netatm from the build as it is not MPSAFE and relies on 2007-07-14 21:49:24 +00:00
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 Make tcpstates[] static, and make sure TCPSTATES is defined before 2007-07-30 11:06:42 +00:00
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
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 Make ftruncate a 'struct file' operation rather than a vnode operation. 2008-01-07 20:05:19 +00:00
pc98 Add COMPAT_FREEBSD7 and enable it in configs that have COMPAT_FREEBSD6. 2008-01-07 21:40:11 +00:00
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 VOP_LOCK1() (and so VOP_LOCK()) and VOP_UNLOCK() are only used in 2008-01-13 14:44:15 +00:00
Makefile o Add boot, gdb, nfsserver and opencrypto dirs to CSCOPEDIRS; sort. 2008-01-23 08:50:34 +00:00