DragonFly kernel List (threaded) for 2006-01
Re: a take at cache coherency
Csaba Henk wrote:
- Unidirectonal synchronization. Only upper layers keep a reference to
lower ones, a lower ("shadowed") layer doesn't need to be aware of
- Namecache API got messed up a bit, too. Some attributes can't be
accessed directly: you can't use "ncp->nc_vp", you need to do
"cache_grphead(ncp)->nc_vp". Eventually some kind of wrapper should
be made around namecache entries, so that you could write eg.
"NC_VP(ncp)". At this stage I didn't do this.
- Some attributes of namecache entries were transformed into shadow
group attributes: these are
nc_vp, nc_error, nc_timeout, nc_exlocks, nc_locktd, and some of
NCF_LOCKED, NCF_WHITEOUT, NCF_UNRESOLVED, NCF_ISSYMLINK, NCF_ISDIR,
-- ie, attributes which refer the underlying vnode, and locking.
i'm sorry but i don't like the patch for those reasons. general vfs
code gets cluttered with namecache interal going-ons (the shadow groups)
and makes it super-easy to introduce a mistake.
I think if we already carry the fields around in the namecache structs
we should also populate them.
* Unsolved issues. It's not handled properly when the lower layer
gets unmounted. There are two possible behaviours:
- keep lower fs busy, don't let it go.
- let lower fs go; when it's gone, return ENXIO from calls.
+ renames on the lower layer don't trigger namecache
renames/invalidations on a higher layer. this is what the coherency
should be about, i think.
maybe we should discuss design before actually implementing it? :)
Serve - BSD +++ RENT this banner advert +++ ASCII Ribbon /"\
Work - Mac +++ space for low €€€ NOW!1 +++ Campaign \ /
Party Enjoy Relax | http://dragonflybsd.org Against HTML \
Dude 2c 2 the max ! http://golden-apple.biz Mail + News / \