cvs commit: src/sys/conf src/sys/kern src/sys/sys src/sys/emulation/svr4
Matthew Dillon
dillon at crater.dragonflybsd.org
Mon Sep 27 17:26:20 PDT 2004
dillon 2004/09/27 17:25:34 PDT
DragonFly src repository
Modified files:
sys/conf files
sys/kern init_main.c kern_descrip.c vfs_cache.c
vfs_default.c vfs_lookup.c vfs_syscalls.c
vfs_vopops.c
sys/sys namecache.h namei.h vfsops.h
sys/emulation/svr4 svr4_misc.c
Added files:
sys/kern vfs_nlookup.c
sys/sys nlookup.h
Log:
VFS messaging/interfacing work stage 6/99. Populate and maintain the
namecache pointers previously attached to struct filedesc, giving the new
lookup code a base from which to work.
Implement the new lookup API (it is not yet being used by anything) and
augment the namecache API to handle the new functions, in particular
adding cache_setvp() to resolve an unresolved namecache entry into a
positive or negative hit and set various flags. Note that we do not yet
cache symlink data but we could very easily.
The new API is greatly simplified. Basically nlookups need only returned
a locked namecache pointer (guarenteeing namespace atomicy). Related
vnodes are not locked. Both the leaf and governing directory vnodes can
be extracted from the returned namecache pointer. namecache pointers may
also represent negative hits, which means that their namespace locking
feature serves to reserve a filename that has not yet been created (e.g.
open+create, rename).
The kernel is still using the old API as of this commit. This commit is
primarily introducing the management infrastructure required to actually
start writing code to use the new API.
VOP_RESOLVE() has been added, along with a default function which falls back
to VOP_LOOKUP()/VOP_CACHEDLOOKUP(). This VOP function is not yet being used
as of this commit. This VOP will be responsible for taking an unresolved
but locked namecache structure (hence the namespace is locked), and actually
does the directory lookup. But unlike the far more complex
VOP_LOOKUP()/VOP_CACHEDLOOKUP() API the VOP_RESOLVE() API only needs to
attach a vnode (or NULL if the entry does not exist) to the passed-in
namecache structure. It is likely that timeouts, e.g. for NFS, will also
be attached via this API.
This commit does not implement any of the cache-coherency infrastructure
but keeps this future requirement in mind in its design.
Revision Changes Path
1.76 +1 -0 src/sys/conf/files
1.37 +4 -1 src/sys/kern/init_main.c
1.28 +24 -7 src/sys/kern/kern_descrip.c
1.28 +286 -69 src/sys/kern/vfs_cache.c
1.14 +56 -0 src/sys/kern/vfs_default.c
1.16 +1 -1 src/sys/kern/vfs_lookup.c
1.39 +13 -1 src/sys/kern/vfs_syscalls.c
1.7 +32 -0 src/sys/kern/vfs_vopops.c
1.9 +12 -4 src/sys/sys/namecache.h
1.14 +2 -0 src/sys/sys/namei.h
1.6 +11 -0 src/sys/sys/vfsops.h
1.23 +4 -1 src/sys/emulation/svr4/svr4_misc.c
http://www.dragonflybsd.org/cvsweb/src/sys/conf/files.diff?r1=1.75&r2=1.76&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/init_main.c.diff?r1=1.36&r2=1.37&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_descrip.c.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_cache.c.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_default.c.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_lookup.c.diff?r1=1.15&r2=1.16&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_syscalls.c.diff?r1=1.38&r2=1.39&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_vopops.c.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/namecache.h.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/namei.h.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/vfsops.h.diff?r1=1.5&r2=1.6&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/emulation/svr4/svr4_misc.c.diff?r1=1.22&r2=1.23&f=u
More information about the Commits
mailing list