> Correct. At least at one time it used the offset of the directory entry
> when that particular inode was last "seen" by the kernel... meaning that
> when it finally dropped out of the inode cache, it would change inode
> numbers. I thought that was a reasonable (by no means perfect, though)
> solution to a very sticky problem.
Unfortunately it wasn't a solution. Look: you open a file and rename it
away. Now you want to create something in the old directory. Woops - can't
use the old entry of our file, since we'll get icache conflict that way.
So we get this lovely notion of reserved entries and there lies the
madness. It gets especially nasty when you consider rmdir of something
that used to be non-empty, but everything had been renamed away from it.
And stayes open. Moreover, at every moment you need both the "original"
location (inumber) and current one (for write_inode()). Better yet, you
get to deal with opened files that are not renamed, but removed. Yes,
all of that can be dealt with. The old driver didn't.
-
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/