DragonFly BSD
DragonFly kernel List (threaded) for 2006-01
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: nullfs stabilization I

From: "Simon 'corecode' Schubert" <corecode@xxxxxxxxxxxx>
Date: Wed, 11 Jan 2006 03:15:29 +0100

Matthew Dillon wrote:
    cache_lock would create the namecache record in the lower layer
    (recursively), and then operate in the same manner as if it exited in
    the first place.

The problem in this case is that you just don't know which lower namecache records to create. I don't want to guess the name of the lower layer from the name of the upper layer, because some filesystem might want to remap filenames or files and directories.

dumb idea, but think of a filesystem which sorts files alphabetically in directories..., or a filesystem which maps filenames to ones which are case-insensitive-safe (so that windows can access fOO and Foo, because one is mapped to fo_o_ and one to f_oo...

So at the very moment we do a lock action in the upper layer (i.e. every time we do a cache_lookup()), we already have to have the association ready. Which means we need a callback into the vfs; I just can't think of something else.

    This could be done with a VFS function, but I think its probably better
    to make it a separate registration call to create the association between
    layers as part of the struct mount.  There are two situations that need
    to be handled:
    The nullfs layer would thus have to register the relationship as part
    of the mount sequence.  Something like:

cache_register_shadow(nullfsmountpt, lowerfsmountpt)

Where would we then in turn store this information? In the mount structure? And where would the callback function pointer be stored then?


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   / \

[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]