diff options
author | Daniel Rosenberg <drosen@google.com> | 2020-11-19 09:09:04 +0300 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2020-12-03 09:00:21 +0300 |
commit | 7ad08a58bf67594057362e45cbddd3e27e53e557 (patch) | |
tree | cc8f281ee95421efe8cb34564938b466141ee506 /fs/f2fs/super.c | |
parent | bb9cd9106b22b4fc5ff8d78a752be8a4ba2cbba5 (diff) | |
download | linux-7ad08a58bf67594057362e45cbddd3e27e53e557.tar.xz |
f2fs: Handle casefolding with Encryption
Expand f2fs's casefolding support to include encrypted directories. To
index casefolded+encrypted directories, we use the SipHash of the
casefolded name, keyed by a key derived from the directory's fscrypt
master key. This ensures that the dirhash doesn't leak information
about the plaintext filenames.
Encryption keys are unavailable during roll-forward recovery, so we
can't compute the dirhash when recovering a new dentry in an encrypted +
casefolded directory. To avoid having to force a checkpoint when a new
file is fsync'ed, store the dirhash on-disk appended to i_name.
This patch incorporates work by Eric Biggers <ebiggers@google.com>
and Jaegeuk Kim <jaegeuk@kernel.org>.
Co-developed-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Daniel Rosenberg <drosen@google.com>
Reviewed-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/super.c')
-rw-r--r-- | fs/f2fs/super.c | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 08e63c8caa1e..1c282c3da263 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -3398,12 +3398,6 @@ static int f2fs_setup_casefold(struct f2fs_sb_info *sbi) struct unicode_map *encoding; __u16 encoding_flags; - if (f2fs_sb_has_encrypt(sbi)) { - f2fs_err(sbi, - "Can't mount with encoding and encryption"); - return -EINVAL; - } - if (f2fs_sb_read_encoding(sbi->raw_super, &encoding_info, &encoding_flags)) { f2fs_err(sbi, |