|
|
@@ -290,10 +290,20 @@ flags_err:
|
|
|
if (err)
|
|
|
goto flags_out;
|
|
|
|
|
|
- if ((jflag ^ oldflags) & (EXT4_JOURNAL_DATA_FL))
|
|
|
+ if ((jflag ^ oldflags) & (EXT4_JOURNAL_DATA_FL)) {
|
|
|
+ /*
|
|
|
+ * Changes to the journaling mode can cause unsafe changes to
|
|
|
+ * S_DAX if we are using the DAX mount option.
|
|
|
+ */
|
|
|
+ if (test_opt(inode->i_sb, DAX)) {
|
|
|
+ err = -EBUSY;
|
|
|
+ goto flags_out;
|
|
|
+ }
|
|
|
+
|
|
|
err = ext4_change_inode_journal_flag(inode, jflag);
|
|
|
- if (err)
|
|
|
- goto flags_out;
|
|
|
+ if (err)
|
|
|
+ goto flags_out;
|
|
|
+ }
|
|
|
if (migrate) {
|
|
|
if (flags & EXT4_EXTENTS_FL)
|
|
|
err = ext4_ext_migrate(inode);
|