Anyway, please see my countless former emails where I ask to work towards a solution instead of just arguing.
-Kevin Ballard On Jan 21, 2008, at 8:13 PM, Linus Torvalds wrote:
On Mon, 21 Jan 2008, Linus Torvalds wrote:Think about the file name "Abc", and think about what happens when youcreate it.Now, think about what happens if that filename is considered equivalent incase.. See? The filesystem has to *corrupt* the filename.Let me make this really clear, because I'm afraid that you won't get itwhen I leave out any steps of the way.Let us say that there is a filename "xyz" that is equivalent to a filename"abc" in *any* way. It does not matter if xyz/abc is Hello/hello, or whether it's two canonically equivalent strings. So now, do close(open(xyz, O_WRONLY | O_CREAT, 0666)); close(open(abc, O_WRONLY | O_CREAT, 0666)); and then look at the directory contents afterwards. There are two, and only two, choices here (*): - the filesystem created both files, and they show up as created- the filesystem decided they were equivalent, and munged one (or both)of them Now, let's go back to my claim: - munging user data is unacceptable and realize that equivalence BY DEFINITION must do it. So no, you do *not* get to have your cake and eat it too. You simplyfundamentally *cannot* have both filename equivalence and a non- mungingfilesystem. See above why. Linus (*) Actually, there is third choice above, which is: - the filesystem created the first file, and errored out on the second because it noticed it was equivalent - but not identical - to one it already hadThis one is actually a perfectly fine choice, but it's not "your" kindof equivalence, since it actually makes a difference between two equivalent but non-identical names. So the filenames aren't actuallyinterchangable, and this case is really more of a "the filesystem hassome very specific limitations on what it allows".
-- Kevin Ballard http://kevin.sb.org kevin@xxxxxx http://www.tildesoft.com
<<attachment: smime.p7s>>