For dnotify purposes this may be solvable without a full reverse map.
Suppose that we have per-inode notifiers as I suggested, and as the imon
patch implements. Of course, multiple listeners can attach to an
inode's notifier chain -- this is needed to support multiple processes
listening.
Then you can implement dnotify by attaching the parent directory as a
listener to each of its child inodes. (It's a bit heavy to set up,
though).
Now, when an inode is modifed we don't guarantee to notify all the
parent directories... but we do guarantee to notify all the ones which
are actually listening at the moment. So it's a partial reverse map. I
expect Al Viro would have something to say about dcache races at this
point.
For recursive parent notification, such as monitoring "/usr" to learn
about changes anywhere underneath "/usr", the above is perhaps
impractical. We're right back to having to do "find -print" equivalent
disk activity. Or reverse maps in the filesystem. Ugh.
In practice I'd just give up trying to cache stat() results of hard
linked files, unless I knew I'd found all the paths to those files.
Just don't use hard links ;-)
cheers,
-- Jamie
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/