On Sun, May 14, 2000 at 11:28:46AM +0300, Kalle Olavi Niemitalo wrote: > Tomasz Wegrzanowski <[EMAIL PROTECTED]> writes: > > > They can be faked by shadowfs, with content scaned on demand as of other > > dirs > > and maybe cached until notified of directory change > > (on notify not to rescan, only to invalidate cache) > > So, for each open directory, the shadowfs would remember the > steps taken to get there? That could work. > > If the user: > > 1. makes a directory ~/1 and a shadowfs ~/shadow which uses it > 2. makes a directory ~/1/foo > 3. changes directory to ~/shadowfs/foo > 4. renames ~/1/foo to ~/1/bar > 5. ls > > then the shadowfs tries to find ~/1/foo, and because it doesn't > exist, the user gets ENOENT. This sounds reasonable. > > If the user then makes another directory ~/1/foo, the current > directory starts referring to that instead, and ls works again. > > ENOENT on missing directories isn't the only possible way: the > shadowfs could instead give the user an empty (except . and ..) > directory so that he can at least "cd ..". Would that be better?
ENOENT seems ok. There is big problem with giving empty dir. User S 1. creates ~/1/foo/bar 2. enters ~/shadow/foo/bar 3. deletes ~/1/foo/bar 4. deletes ~/1/foo What then ? One solution is to block ~/1/foo/bar when ~/shadow/foo/bar is opened and return EBUSY on unlink(2) This seems a bit harder, and if : 5. create ~/2/foo is okay again to delete ~/1/foo/bar if we accept giving empty dir, but shadowfs don't know it yet 6. create ~/2/foo/bar is okay again to delete ~/1/foo/bar but shadowfs don't know it yet So shadowfs would have to check change_notifies from /foo/bar's of all subfs where it exists and last directory from path of all other subfs's (/foo or /), to see if one directory more hasn't been just created.