Commit 66883da1 authored by Gabriel Krisman Bertazi's avatar Gabriel Krisman Bertazi Committed by Theodore Ts'o

ext4: fix dcache lookup of !casefolded directories

Found by visual inspection, this wasn't caught by my xfstest, since it's
effect is ignoring positive dentries in the cache the fallback just goes
to the disk.  it was introduced in the last iteration of the
case-insensitive patch.

d_compare should return 0 when the entries match, so make sure we are
correctly comparing the entire string if the encoding feature is set and
we are on a case-INsensitive directory.

Fixes: b886ee3e ("ext4: Support case-insensitive file name lookups")
Signed-off-by: default avatarGabriel Krisman Bertazi <krisman@collabora.com>
Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
parent ee0ed02c
...@@ -671,7 +671,7 @@ static int ext4_d_compare(const struct dentry *dentry, unsigned int len, ...@@ -671,7 +671,7 @@ static int ext4_d_compare(const struct dentry *dentry, unsigned int len,
if (!IS_CASEFOLDED(dentry->d_parent->d_inode)) { if (!IS_CASEFOLDED(dentry->d_parent->d_inode)) {
if (len != name->len) if (len != name->len)
return -1; return -1;
return !memcmp(str, name, len); return memcmp(str, name->name, len);
} }
return ext4_ci_compare(dentry->d_parent->d_inode, name, &qstr); return ext4_ci_compare(dentry->d_parent->d_inode, name, &qstr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment