f2fs: add support for IV_INO_LBLK_64 encryption policies
authorEric Biggers <ebiggers@google.com>
Thu, 24 Oct 2019 21:54:38 +0000 (14:54 -0700)
committerEric Biggers <ebiggers@google.com>
Wed, 6 Nov 2019 20:34:42 +0000 (12:34 -0800)
f2fs inode numbers are stable across filesystem resizing, and f2fs inode
and file logical block numbers are always 32-bit.  So f2fs can always
support IV_INO_LBLK_64 encryption policies.  Wire up the needed
fscrypt_operations to declare support.

Acked-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Eric Biggers <ebiggers@google.com>
fs/f2fs/super.c

index 1443cee..851ac95 100644 (file)
@@ -2308,13 +2308,27 @@ static bool f2fs_dummy_context(struct inode *inode)
        return DUMMY_ENCRYPTION_ENABLED(F2FS_I_SB(inode));
 }
 
+static bool f2fs_has_stable_inodes(struct super_block *sb)
+{
+       return true;
+}
+
+static void f2fs_get_ino_and_lblk_bits(struct super_block *sb,
+                                      int *ino_bits_ret, int *lblk_bits_ret)
+{
+       *ino_bits_ret = 8 * sizeof(nid_t);
+       *lblk_bits_ret = 8 * sizeof(block_t);
+}
+
 static const struct fscrypt_operations f2fs_cryptops = {
-       .key_prefix     = "f2fs:",
-       .get_context    = f2fs_get_context,
-       .set_context    = f2fs_set_context,
-       .dummy_context  = f2fs_dummy_context,
-       .empty_dir      = f2fs_empty_dir,
-       .max_namelen    = F2FS_NAME_LEN,
+       .key_prefix             = "f2fs:",
+       .get_context            = f2fs_get_context,
+       .set_context            = f2fs_set_context,
+       .dummy_context          = f2fs_dummy_context,
+       .empty_dir              = f2fs_empty_dir,
+       .max_namelen            = F2FS_NAME_LEN,
+       .has_stable_inodes      = f2fs_has_stable_inodes,
+       .get_ino_and_lblk_bits  = f2fs_get_ino_and_lblk_bits,
 };
 #endif