GFS2: add barrier/nobarrier mount options
Currently gfs2 issues barrier unconditionally. There are various reasons to disable them, be that just for testing or for stupid devices flushing large battert backed caches. Add a nobarrier option that matches xfs and btrfs for this. Also add a symmetric barrier option to turn it back on at remount time. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
parent
c14f5735e7
commit
f25934c5f8
|
@ -429,6 +429,7 @@ struct gfs2_args {
|
|||
unsigned int ar_meta:1; /* mount metafs */
|
||||
unsigned int ar_discard:1; /* discard requests */
|
||||
unsigned int ar_errors:2; /* errors=withdraw | panic */
|
||||
unsigned int ar_nobarrier:1; /* do not send barriers */
|
||||
int ar_commit; /* Commit interval */
|
||||
int ar_statfs_quantum; /* The fast statfs interval */
|
||||
int ar_quota_quantum; /* The quota interval */
|
||||
|
|
|
@ -1131,6 +1131,8 @@ static int fill_super(struct super_block *sb, struct gfs2_args *args, int silent
|
|||
}
|
||||
if (sdp->sd_args.ar_posix_acl)
|
||||
sb->s_flags |= MS_POSIXACL;
|
||||
if (sdp->sd_args.ar_nobarrier)
|
||||
set_bit(SDF_NOBARRIERS, &sdp->sd_flags);
|
||||
|
||||
sb->s_magic = GFS2_MAGIC;
|
||||
sb->s_op = &gfs2_super_ops;
|
||||
|
|
|
@ -73,6 +73,8 @@ enum {
|
|||
Opt_statfs_quantum,
|
||||
Opt_statfs_percent,
|
||||
Opt_quota_quantum,
|
||||
Opt_barrier,
|
||||
Opt_nobarrier,
|
||||
Opt_error,
|
||||
};
|
||||
|
||||
|
@ -107,6 +109,8 @@ static const match_table_t tokens = {
|
|||
{Opt_statfs_quantum, "statfs_quantum=%d"},
|
||||
{Opt_statfs_percent, "statfs_percent=%d"},
|
||||
{Opt_quota_quantum, "quota_quantum=%d"},
|
||||
{Opt_barrier, "barrier"},
|
||||
{Opt_nobarrier, "nobarrier"},
|
||||
{Opt_error, NULL}
|
||||
};
|
||||
|
||||
|
@ -253,6 +257,12 @@ int gfs2_mount_args(struct gfs2_args *args, char *options)
|
|||
}
|
||||
args->ar_errors = GFS2_ERRORS_PANIC;
|
||||
break;
|
||||
case Opt_barrier:
|
||||
args->ar_nobarrier = 0;
|
||||
break;
|
||||
case Opt_nobarrier:
|
||||
args->ar_nobarrier = 1;
|
||||
break;
|
||||
case Opt_error:
|
||||
default:
|
||||
printk(KERN_WARNING "GFS2: invalid mount option: %s\n", o);
|
||||
|
@ -1143,6 +1153,10 @@ static int gfs2_remount_fs(struct super_block *sb, int *flags, char *data)
|
|||
sb->s_flags |= MS_POSIXACL;
|
||||
else
|
||||
sb->s_flags &= ~MS_POSIXACL;
|
||||
if (sdp->sd_args.ar_nobarrier)
|
||||
set_bit(SDF_NOBARRIERS, &sdp->sd_flags);
|
||||
else
|
||||
clear_bit(SDF_NOBARRIERS, &sdp->sd_flags);
|
||||
spin_lock(>->gt_spin);
|
||||
gt->gt_log_flush_secs = args.ar_commit;
|
||||
gt->gt_quota_quantum = args.ar_quota_quantum;
|
||||
|
|
Loading…
Reference in New Issue