a take at cache coherency

Simon 'corecode' Schubert corecode at fs.ei.tum.de
Mon Jan 23 04:40:37 PST 2006

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
    being overlayed.
  - 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
      the flags:
      -- 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   / \

More information about the Kernel mailing list