summaryrefslogtreecommitdiffstats
path: root/fs/ext4/ialloc.c
diff options
context:
space:
mode:
authorMichael Halcrow <mhalcrow@google.com>2015-04-12 06:55:10 +0200
committerTheodore Ts'o <tytso@mit.edu>2015-04-12 06:55:10 +0200
commit2058f83a728adffbe00bded4f804b37a5ee58cbe (patch)
treee0bc1cf2aa8e3a36e9543567c5c248f785f88e2c /fs/ext4/ialloc.c
parentext4 crypto: inherit encryption policies on inode and directory create (diff)
downloadlinux-2058f83a728adffbe00bded4f804b37a5ee58cbe.tar.xz
linux-2058f83a728adffbe00bded4f804b37a5ee58cbe.zip
ext4 crypto: implement the ext4 encryption write path
Pulls block_write_begin() into fs/ext4/inode.c because it might need to do a low-level read of the existing data, in which case we need to decrypt it. Signed-off-by: Michael Halcrow <mhalcrow@google.com> Signed-off-by: Ildar Muslukhov <ildarm@google.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/ialloc.c')
-rw-r--r--fs/ext4/ialloc.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
index 6ab6f639c70b..247737efd725 100644
--- a/fs/ext4/ialloc.c
+++ b/fs/ext4/ialloc.c
@@ -996,6 +996,11 @@ got:
ei->i_block_group = group;
ei->i_last_alloc_group = ~0;
+ /* If the directory encrypted, then we should encrypt the inode. */
+ if ((S_ISDIR(mode) || S_ISREG(mode) || S_ISLNK(mode)) &&
+ ext4_encrypted_inode(dir))
+ ext4_set_inode_flag(inode, EXT4_INODE_ENCRYPT);
+
ext4_set_inode_flags(inode);
if (IS_DIRSYNC(inode))
ext4_handle_sync(handle);