This patchset reworks f2fs's handling of filenames to make it much easier to correctly implement all combinations of normal, encrypted, casefolded, and encrypted+casefolded directories. It also optimizes all filesystem operations to compute the dirhash and casefolded name only once, rather than once per directory level or directory block. Patch 4 is RFC and shows how we can add support for encrypted+casefolded directories fairly easily after this rework -- including support for roll-forward recovery. (It's incomplete as it doesn't include the needed dentry_ops -- those can be found in Daniel's patchset https://lkml.kernel.org/r/20200307023611.204708-1-drosen@xxxxxxxxxx) So far this is only lightly tested, e.g. with the xfstests in the 'encrypt' and 'casefold' groups. I haven't tested patch 4 yet. Eric Biggers (4): f2fs: don't leak filename in f2fs_try_convert_inline_dir() f2fs: split f2fs_d_compare() from f2fs_match_name() f2fs: rework filename handling f2fs: Handle casefolding with Encryption (INCOMPLETE) fs/f2fs/dir.c | 415 +++++++++++++++++++++++++++------------------ fs/f2fs/f2fs.h | 85 +++++++--- fs/f2fs/hash.c | 87 +++++----- fs/f2fs/inline.c | 49 +++--- fs/f2fs/namei.c | 6 +- fs/f2fs/recovery.c | 61 +++++-- 6 files changed, 430 insertions(+), 273 deletions(-) -- 2.26.2