Re: [PATCH 2/2] fs: ext4: Fix the inconsistent name exposed by /proc/self/cwd
From: Gabriel Krisman Bertazi <hidden>
Date: 2021-10-14 21:54:48
Also in:
linux-fsdevel, lkml
"Theodore Ts'o" [off-list ref] writes:
On Fri, Oct 01, 2021 at 03:11:30PM -0400, Gabriel Krisman Bertazi wrote:quoted
The dcache name is exposed in more places, like /proc/mounts. We have a bug reported against flatpak where its initialization code bind mounts a directory that was previously touched with a different case combination, and then checks /proc/mounts in a case-sensitive way to see if the mount succeeded. This code now regresses on CI directories because the name it asked to bind mount is not found in /proc/mounts.Ah, thanks for the context. That makes sense.quoted
I think the more reasonable approach is to save the disk exact name on the dcache, because that is the only version that doesn't change based on who won the race for the first lookup.What about the alternative of storing the casefolded name? The advantage of using the casefolded name is that we can always casefold the name, where as in the case of a negative dentry, there is no disk exact name to use (since by definition there is no on-disk name).
That would work. The casefolded version is always predictable (since unicode is stable) and even though is not as easily available as the disk name function (getdents), it solves the issue. It would also allow us to use utf8_strncasecmp_folded in the d_compare hook, which is nice. Do you have an implementation suggestion to solve the dcache issue pointed by Viro? -- Gabriel Krisman Bertazi