"rm -rf" complains if st_ino of a directory changes spontaneously.
Ah, right. Another small issue is that currently unionfs accesses
inode->i_* from the underlying filesystems instead of calling
->getattr(), which will break if the underlying fs is a union with its
dummy inodes. But that should be easy to fix.
I think it's best to leave that stuff until someone actually cares.
The "people might find it useful" argument is not strong enough to put
nontrivial effort into thinking about all the weird corner cases.
The DT_LNK check is done to filter out "." and "..". Added comment.
I'm not fond of relying on inode->i_* members directly as unionfs
itself doesn't play by those rules. But maybe it's OK here as
anything wanting to be an upper filesystem will be sufficiently
"normal" for this to work.
Fixed.
I think that's a matter of taste. The 'dev_name' argument is just a
specialized option, and when that option needs a structure like your
example then IMO it's better to just move it to normal options.
As I said, I'd leave it until someone actually needs this.
That's an idea, but I'm inclined just to add some hacks to the VFS to
omit the locking if some inode flag is set.
I'm not sure if the stable directory cookie problem is important
enough. AFAIR some ancient versions of libc relied on directory
seeking and also some weird apps might, but anything sane will not
touch that interface (and I'm hoping someday we can get rid of it for
good).
As for caching large directories, I think that's best done with the
page cache, not by permanently copying up the contents to the upper
directory.
Right, that's at the front of the todo list.
I agree completely. I just tend to write code first and documentation
later (or as late as possibly can) so your contribution in this area
really warms my heart :)
Thanks,
Miklos
--