|
@@ -414,17 +414,19 @@ static inline int ext4_inode_journal_mode(struct inode *inode)
|
|
|
return EXT4_INODE_WRITEBACK_DATA_MODE; /* writeback */
|
|
|
/* We do not support data journalling with delayed allocation */
|
|
|
if (!S_ISREG(inode->i_mode) ||
|
|
|
- test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA)
|
|
|
- return EXT4_INODE_JOURNAL_DATA_MODE; /* journal data */
|
|
|
- if (ext4_test_inode_flag(inode, EXT4_INODE_JOURNAL_DATA) &&
|
|
|
- !test_opt(inode->i_sb, DELALLOC))
|
|
|
+ test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA ||
|
|
|
+ (ext4_test_inode_flag(inode, EXT4_INODE_JOURNAL_DATA) &&
|
|
|
+ !test_opt(inode->i_sb, DELALLOC))) {
|
|
|
+ /* We do not support data journalling for encrypted data */
|
|
|
+ if (S_ISREG(inode->i_mode) && ext4_encrypted_inode(inode))
|
|
|
+ return EXT4_INODE_ORDERED_DATA_MODE; /* ordered */
|
|
|
return EXT4_INODE_JOURNAL_DATA_MODE; /* journal data */
|
|
|
+ }
|
|
|
if (test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_ORDERED_DATA)
|
|
|
return EXT4_INODE_ORDERED_DATA_MODE; /* ordered */
|
|
|
if (test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_WRITEBACK_DATA)
|
|
|
return EXT4_INODE_WRITEBACK_DATA_MODE; /* writeback */
|
|
|
- else
|
|
|
- BUG();
|
|
|
+ BUG();
|
|
|
}
|
|
|
|
|
|
static inline int ext4_should_journal_data(struct inode *inode)
|