262
262
int ext4_force_commit(struct super_block *sb);
265
* Ext4 inode journal modes
267
#define EXT4_INODE_JOURNAL_DATA_MODE 0x01 /* journal data mode */
268
#define EXT4_INODE_ORDERED_DATA_MODE 0x02 /* ordered data mode */
269
#define EXT4_INODE_WRITEBACK_DATA_MODE 0x04 /* writeback data mode */
271
static inline int ext4_inode_journal_mode(struct inode *inode)
273
if (EXT4_JOURNAL(inode) == NULL)
274
return EXT4_INODE_WRITEBACK_DATA_MODE; /* writeback */
275
/* We do not support data journalling with delayed allocation */
276
if (!S_ISREG(inode->i_mode) ||
277
test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA)
278
return EXT4_INODE_JOURNAL_DATA_MODE; /* journal data */
279
if (ext4_test_inode_flag(inode, EXT4_INODE_JOURNAL_DATA) &&
280
!test_opt(inode->i_sb, DELALLOC))
281
return EXT4_INODE_JOURNAL_DATA_MODE; /* journal data */
282
if (test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_ORDERED_DATA)
283
return EXT4_INODE_ORDERED_DATA_MODE; /* ordered */
284
if (test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_WRITEBACK_DATA)
285
return EXT4_INODE_WRITEBACK_DATA_MODE; /* writeback */
264
290
static inline int ext4_should_journal_data(struct inode *inode)
266
if (EXT4_JOURNAL(inode) == NULL)
268
if (!S_ISREG(inode->i_mode))
270
if (test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA)
272
if (ext4_test_inode_flag(inode, EXT4_INODE_JOURNAL_DATA))
292
return ext4_inode_journal_mode(inode) & EXT4_INODE_JOURNAL_DATA_MODE;
277
295
static inline int ext4_should_order_data(struct inode *inode)
279
if (EXT4_JOURNAL(inode) == NULL)
281
if (!S_ISREG(inode->i_mode))
283
if (ext4_test_inode_flag(inode, EXT4_INODE_JOURNAL_DATA))
285
if (test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_ORDERED_DATA)
297
return ext4_inode_journal_mode(inode) & EXT4_INODE_ORDERED_DATA_MODE;
290
300
static inline int ext4_should_writeback_data(struct inode *inode)
292
if (EXT4_JOURNAL(inode) == NULL)
294
if (!S_ISREG(inode->i_mode))
296
if (ext4_test_inode_flag(inode, EXT4_INODE_JOURNAL_DATA))
298
if (test_opt(inode->i_sb, DATA_FLAGS) == EXT4_MOUNT_WRITEBACK_DATA)
302
return ext4_inode_journal_mode(inode) & EXT4_INODE_WRITEBACK_DATA_MODE;