tunable ext3 commit interval
PATCH 4/12 tunable ext3 commit interval
The patch from Stephen Tweedie allows users to modify the journal commit interval for the ext3 filesystem.
The commit interval is normally five seconds. For portable computers with spun-down drives it is advantageous to be able to increase the commit interval.
There may also be advantages in decreasing the commit interval for specialised applications such as heavily-loaded NFS servers which are using synchronous exports.
The laptop users will also need to increase the pdflush periodic writeback interval (/proc/sys/vm/dirty_writeback_centisecs), because the `kupdate' activity also forces a commit.
To specify the commit interval, use
mount -o commit=30 /dev/hda1 /mnt/whatever
or
mount -o remount,commit=30 /dev/hda1
The commit interval is specified in units of seconds.
super.c | 26 +++++++++++++++++++++++++- 1 files changed, 25 insertions, 1 deletion
fs/ext3/super.c renamed from fs/ext3/super.c~ext3-commit-interval +25 -1
@@ -696,6 +696,11 @@ static int parse_options (char * options *mount_options &= ~EXT3_MOUNT_DATA_FLAGS ; *mount_options |= data_opt; } + }else if (!strcmp (this_char,"commit" )) { +unsigned long v; +if (want_numeric (value,"commit" , &v)) +return 0 ; + sbi->s_commit_interval = (HZ * v); }else { printk (KERN_ERR "EXT3-fs: Unrecognized mount option %s\n",
@@ -1260,6 +1265,22 @@ out_fail:return -EINVAL ; } +/* +* Setup any per-fs journal parameters now. We'll do this both on +* initial mount, once the journal has been initialised but before we've +* done any recovery; and again on any subsequent remount. +*/ +static void ext3_init_journal_params (struct ext3_sb_info *sbi, +journal_t *journal) +{ +if (sbi->s_commit_interval) + journal->j_commit_interval = sbi->s_commit_interval; +/* We could also set up an ext3-specific default for the commit +* interval here, but for now we'll just fall back to the jbd +* default. */ +} + +static journal_t *ext3_get_journal (struct super_block *sb,int journal_inum) {struct inode *journal_inode;
@@ -1294,7 +1315,7 @@ static journal_t *ext3_get_journal(strucprintk (KERN_ERR "EXT3-fs: Could not load journal inode\n" );iput (journal_inode); } - +ext3_init_journal_params (EXT3_SB (sb), journal);return journal; }
@@ -1371,6 +1392,7 @@ static journal_t *ext3_get_dev_journal(s goto out_journal; }EXT3_SB (sb)->journal_bdev = bdev; +ext3_init_journal_params (EXT3_SB (sb), journal);return journal; out_journal:journal_destroy (journal);
@@ -1667,6 +1689,8 @@ int ext3_remount (struct super_block * s es = sbi->s_es; +ext3_init_journal_params (sbi, sbi->s_journal); +if ((*flags &MS_RDONLY ) != (sb->s_flags &MS_RDONLY )) {if (sbi->s_mount_opt &EXT3_MOUNT_ABORT )return -EROFS ;
.
OoO En cette nuit striée d'éclairs du samedi 10 août 2002, vers 02:56, Andrew Morton <[email protected]> disait:
Quoted 2 lines
The patch from Stephen Tweedie allows users to modify the journal commit interval for the ext3 filesystem.
Could this patch be officially backported to 2.4 to allow the use of the flexible commit interval in noflushd ?
Quoted 9 lines · Vincent Bernat
OoO En cette nuit striée d'éclairs du samedi 10 août 2002, vers 02:56, Andrew Morton <[email protected]> disait:
Quoted 2 lines
The patch from Stephen Tweedie allows users to modify the journal commit interval for the ext3 filesystem.
Could this patch be officially backported to 2.4 to allow the use of the flexible commit interval in noflushd ?
It's in the 2.4 devel tree, so it will appear in 2.4.20-pre sometime.
-------- Original Message --------
Subject: [gkernel-commit] CVS: ext3/fs/ext3 super.c,1.34.2.21,1.34.2.22
Date: Mon, 29 Jul 2002 14:31:41 -0700
From: "Stephen C. Tweedie" <[email protected]>
To: [email protected]
Update of /cvsroot/gkernel/ext3/fs/ext3
In directory usw-pr-cvs1:/tmp/cvs-serv7665
Modified Files:
Tag: ext3-1_0-branch super.c
Log Message:
Allow an arbitrary commit interval to be set when mounting or remounting a filesystem.
Note that if this is greater than the system bdflush interval, then the regular sync()s will beat the commit timer and you won't get longer commit timeouts.
Index: super.c
===================================================================
RCS file: /cvsroot/gkernel/ext3/fs/ext3/super.c,v
retrieving revision 1.34.2.21
retrieving revision 1.34.2.22
super.c +25 -1
@@ -646,6 +646,11 @@ *mount_options &= ~EXT3_MOUNT_DATA_FLAGS ; *mount_options |= data_opt; } + }else if (!strcmp (this_char,"commit" )) { +unsigned long v; +if (want_numeric (value,"commit" , &v)) +return 0 ; + sbi->s_commit_interval = (HZ * v); }else { printk (KERN_ERR "EXT3-fs: Unrecognized mount option %s\n",
@@ -1229,6 +1234,22 @@return NULL ; } +/* +* Setup any per-fs journal parameters now. We'll do this both on +* initial mount, once the journal has been initialised but before we've +* done any recovery; and again on any subsequent remount. +*/ +static void ext3_init_journal_params (struct ext3_sb_info *sbi, +journal_t *journal) +{ +if (sbi->s_commit_interval) + journal->j_commit_interval = sbi->s_commit_interval; +/* We could also set up an ext3-specific default for the commit +* interval here, but for now we'll just fall back to the jbd +* default. */ +} + +static journal_t *ext3_get_journal (struct super_block *sb,int journal_inum) {struct inode *journal_inode;
@@ -1263,7 +1284,7 @@printk (KERN_ERR "EXT3-fs: Could not load journal inode\n" );iput (journal_inode); } - +ext3_init_journal_params (EXT3_SB (sb), journal);return journal; }
@@ -1341,6 +1362,7 @@ goto out_journal; }EXT3_SB (sb)->journal_bdev = bdev; +ext3_init_journal_params (EXT3_SB (sb), journal);return journal; out_journal:journal_destroy (journal);
@@ -1638,6 +1660,8 @@ es = sbi->s_es; +ext3_init_journal_params (sbi, sbi->s_journal); +if ((*flags &MS_RDONLY ) != (sb->s_flags &MS_RDONLY )) {if (sbi->s_mount_opt &EXT3_MOUNT_ABORT )return -EROFS ;
-------------------------------------------------------
This sf.net email is sponsored by: Dice - The leading online job board for high-tech professionals. Search and apply for tech jobs today!
http://seeker.dice.com/seeker.epl?rel_code=31
_______________________________________________
Gkernel-commit mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/gkernel-commit