|
@@ -625,6 +625,9 @@ static int ext3_show_options(struct seq_file *seq, struct vfsmount *vfs)
|
|
|
else if (test_opt(sb, DATA_FLAGS) == EXT3_MOUNT_WRITEBACK_DATA)
|
|
|
seq_puts(seq, ",data=writeback");
|
|
|
|
|
|
+ if (test_opt(sb, DATA_ERR_ABORT))
|
|
|
+ seq_puts(seq, ",data_err=abort");
|
|
|
+
|
|
|
ext3_show_quota_options(seq, sb);
|
|
|
|
|
|
return 0;
|
|
@@ -754,6 +757,7 @@ enum {
|
|
|
Opt_reservation, Opt_noreservation, Opt_noload, Opt_nobh, Opt_bh,
|
|
|
Opt_commit, Opt_journal_update, Opt_journal_inum, Opt_journal_dev,
|
|
|
Opt_abort, Opt_data_journal, Opt_data_ordered, Opt_data_writeback,
|
|
|
+ Opt_data_err_abort, Opt_data_err_ignore,
|
|
|
Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota,
|
|
|
Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota,
|
|
|
Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota,
|
|
@@ -796,6 +800,8 @@ static const match_table_t tokens = {
|
|
|
{Opt_data_journal, "data=journal"},
|
|
|
{Opt_data_ordered, "data=ordered"},
|
|
|
{Opt_data_writeback, "data=writeback"},
|
|
|
+ {Opt_data_err_abort, "data_err=abort"},
|
|
|
+ {Opt_data_err_ignore, "data_err=ignore"},
|
|
|
{Opt_offusrjquota, "usrjquota="},
|
|
|
{Opt_usrjquota, "usrjquota=%s"},
|
|
|
{Opt_offgrpjquota, "grpjquota="},
|
|
@@ -1011,6 +1017,12 @@ static int parse_options (char *options, struct super_block *sb,
|
|
|
sbi->s_mount_opt |= data_opt;
|
|
|
}
|
|
|
break;
|
|
|
+ case Opt_data_err_abort:
|
|
|
+ set_opt(sbi->s_mount_opt, DATA_ERR_ABORT);
|
|
|
+ break;
|
|
|
+ case Opt_data_err_ignore:
|
|
|
+ clear_opt(sbi->s_mount_opt, DATA_ERR_ABORT);
|
|
|
+ break;
|
|
|
#ifdef CONFIG_QUOTA
|
|
|
case Opt_usrjquota:
|
|
|
qtype = USRQUOTA;
|
|
@@ -1986,6 +1998,10 @@ static void ext3_init_journal_params(struct super_block *sb, journal_t *journal)
|
|
|
journal->j_flags |= JFS_BARRIER;
|
|
|
else
|
|
|
journal->j_flags &= ~JFS_BARRIER;
|
|
|
+ if (test_opt(sb, DATA_ERR_ABORT))
|
|
|
+ journal->j_flags |= JFS_ABORT_ON_SYNCDATA_ERR;
|
|
|
+ else
|
|
|
+ journal->j_flags &= ~JFS_ABORT_ON_SYNCDATA_ERR;
|
|
|
spin_unlock(&journal->j_state_lock);
|
|
|
}
|
|
|
|