aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2/ops_super.c
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2009-05-13 09:49:48 -0400
committerSteven Whitehouse <swhiteho@redhat.com>2009-05-13 09:49:48 -0400
commit48c2b613616235d7c97fda5982f50100a6c79166 (patch)
tree7c735f22b3908ec4bdebd27f5b51a8e4631485a6 /fs/gfs2/ops_super.c
parenta1c0643ff9f360a30644f6e3cd643ca2a5083aea (diff)
GFS2: Add commit= mount option
It has always been possible to adjust the gfs2 log commit interval, but only from the sysfs interface. This adds a mount option, commit=<nn>, which will be familar to ext3 users. The sysfs interface continues to be available as well, although this might be removed in the future. Also this patch cleans up some duplicated structures in the GFS2 sysfs code. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/ops_super.c')
-rw-r--r--fs/gfs2/ops_super.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/fs/gfs2/ops_super.c b/fs/gfs2/ops_super.c
index 458019569dcb..0677a8378560 100644
--- a/fs/gfs2/ops_super.c
+++ b/fs/gfs2/ops_super.c
@@ -436,8 +436,12 @@ static int gfs2_remount_fs(struct super_block *sb, int *flags, char *data)
436{ 436{
437 struct gfs2_sbd *sdp = sb->s_fs_info; 437 struct gfs2_sbd *sdp = sb->s_fs_info;
438 struct gfs2_args args = sdp->sd_args; /* Default to current settings */ 438 struct gfs2_args args = sdp->sd_args; /* Default to current settings */
439 struct gfs2_tune *gt = &sdp->sd_tune;
439 int error; 440 int error;
440 441
442 spin_lock(&gt->gt_spin);
443 args.ar_commit = gt->gt_log_flush_secs;
444 spin_unlock(&gt->gt_spin);
441 error = gfs2_mount_args(sdp, &args, data); 445 error = gfs2_mount_args(sdp, &args, data);
442 if (error) 446 if (error)
443 return error; 447 return error;
@@ -473,6 +477,10 @@ static int gfs2_remount_fs(struct super_block *sb, int *flags, char *data)
473 sb->s_flags |= MS_POSIXACL; 477 sb->s_flags |= MS_POSIXACL;
474 else 478 else
475 sb->s_flags &= ~MS_POSIXACL; 479 sb->s_flags &= ~MS_POSIXACL;
480 spin_lock(&gt->gt_spin);
481 gt->gt_log_flush_secs = args.ar_commit;
482 spin_unlock(&gt->gt_spin);
483
476 return 0; 484 return 0;
477} 485}
478 486
@@ -550,6 +558,7 @@ static int gfs2_show_options(struct seq_file *s, struct vfsmount *mnt)
550{ 558{
551 struct gfs2_sbd *sdp = mnt->mnt_sb->s_fs_info; 559 struct gfs2_sbd *sdp = mnt->mnt_sb->s_fs_info;
552 struct gfs2_args *args = &sdp->sd_args; 560 struct gfs2_args *args = &sdp->sd_args;
561 int lfsecs;
553 562
554 if (is_ancestor(mnt->mnt_root, sdp->sd_master_dir)) 563 if (is_ancestor(mnt->mnt_root, sdp->sd_master_dir))
555 seq_printf(s, ",meta"); 564 seq_printf(s, ",meta");
@@ -610,7 +619,9 @@ static int gfs2_show_options(struct seq_file *s, struct vfsmount *mnt)
610 } 619 }
611 if (args->ar_discard) 620 if (args->ar_discard)
612 seq_printf(s, ",discard"); 621 seq_printf(s, ",discard");
613 622 lfsecs = sdp->sd_tune.gt_log_flush_secs;
623 if (lfsecs != 60)
624 seq_printf(s, ",commit=%d", lfsecs);
614 return 0; 625 return 0;
615} 626}
616 627