aboutsummaryrefslogtreecommitdiffstats
path: root/fs/jbd2
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2009-01-03 20:27:38 -0500
committerTheodore Ts'o <tytso@mit.edu>2009-01-03 20:27:38 -0500
commit30773840c19cea60dcef39545960d541b1ac1cf8 (patch)
treef220a2dce451a40dc7264e8fd70c77c5a3908873 /fs/jbd2
parentd7cfa4684d82f58e5d7cb73b8a3c88c169937f25 (diff)
ext4: add fsync batch tuning knobs
Add new mount options, min_batch_time and max_batch_time, which controls how long the jbd2 layer should wait for additional filesystem operations to get batched with a synchronous write transaction. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/jbd2')
-rw-r--r--fs/jbd2/journal.c2
-rw-r--r--fs/jbd2/transaction.c4
2 files changed, 5 insertions, 1 deletions
diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
index 74d87290381c..fd1d7557a098 100644
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
@@ -964,6 +964,8 @@ static journal_t * journal_init_common (void)
964 spin_lock_init(&journal->j_state_lock); 964 spin_lock_init(&journal->j_state_lock);
965 965
966 journal->j_commit_interval = (HZ * JBD2_DEFAULT_MAX_COMMIT_AGE); 966 journal->j_commit_interval = (HZ * JBD2_DEFAULT_MAX_COMMIT_AGE);
967 journal->j_min_batch_time = 0;
968 journal->j_max_batch_time = 15000; /* 15ms */
967 969
968 /* The journal is marked for error until we succeed with recovery! */ 970 /* The journal is marked for error until we succeed with recovery! */
969 journal->j_flags = JBD2_ABORT; 971 journal->j_flags = JBD2_ABORT;
diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c
index 13dcbc990f41..48c21bac5a56 100644
--- a/fs/jbd2/transaction.c
+++ b/fs/jbd2/transaction.c
@@ -1255,8 +1255,10 @@ int jbd2_journal_stop(handle_t *handle)
1255 trans_time = ktime_to_ns(ktime_sub(ktime_get(), 1255 trans_time = ktime_to_ns(ktime_sub(ktime_get(),
1256 transaction->t_start_time)); 1256 transaction->t_start_time));
1257 1257
1258 commit_time = max_t(u64, commit_time,
1259 1000*journal->j_min_batch_time);
1258 commit_time = min_t(u64, commit_time, 1260 commit_time = min_t(u64, commit_time,
1259 1000*jiffies_to_usecs(1)); 1261 1000*journal->j_max_batch_time);
1260 1262
1261 if (trans_time < commit_time) { 1263 if (trans_time < commit_time) {
1262 ktime_t expires = ktime_add_ns(ktime_get(), 1264 ktime_t expires = ktime_add_ns(ktime_get(),