Tomasz Wegrzanowski <[EMAIL PROTECTED]> writes:

> 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 ?

No problem, "." and ".." are both empty directories.

> One solution is to block ~/1/foo/bar when ~/shadow/foo/bar
> is opened and return EBUSY on unlink(2)

I think you mean rmdir(2).  I don't like EBUSY here.  Unix lets
one unlink files which are being used; the same should work with
directories.

BTW, Linux allows removing the current directory but gets a bit
weird with "." and "..":

[EMAIL PROTECTED]:/tmp$ mkdir foo
[EMAIL PROTECTED]:/tmp$ cd foo
[EMAIL PROTECTED]:/tmp/foo$ ls -al
total 21
drwxrwxr-x    2 kalle    kalle        1024 May 15 18:08 .
drwxrwxrwt    4 root     root        19456 May 15 18:08 ..
[EMAIL PROTECTED]:/tmp/foo$ rmdir ../foo
[EMAIL PROTECTED]:/tmp/foo$ ls -al
total 0
[EMAIL PROTECTED]:/tmp/foo$ ls -ld . ..
drwxrwxr-x    0 kalle    kalle           0 May 15 18:08 .
drwxrwxrwt    3 root     root        19456 May 15 18:08 ..
[EMAIL PROTECTED]:/tmp/foo$ touch bar
touch: bar: Operation not permitted
[EMAIL PROTECTED]:/tmp/foo$ cd ..
[EMAIL PROTECTED]:/tmp$

Perhaps this means that the shadowfs empty directories can be
totally empty as well.  ;-)

> 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.

If it doesn't cache anything, it needn't watch anything.
I think you should first make a prototype without caches, and
then try how much faster it gets with caching.


Reply via email to