"Theodore Ts'o" <tytso@xxxxxxx> writes: > On Fri, Oct 01, 2021 at 03:11:30PM -0400, Gabriel Krisman Bertazi wrote: >> >> 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. > >> 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