ext4: disable synchronous transaction batching if max_batch_time==0
Subsystems (2)
PATCH 1/1 ext4: disable synchronous transaction batching if max_batch_time==0
The mount manpage says of the max_batch_time option,
This optimization can be turned off entirely by setting max_batch_time to 0.
But the code doesn't do that. So fix the code to do that.
Signed-off-by Eric Sandeen <[email protected]>
---
Lightly tested: it mounts, accepts the mount option == 0, shows "0" in /proc/mounts, and does basic IO & unmounts without crashing. ;)
fs/ext4/super.c +0 -2
@@ -1524,8 +1524,6 @@ static int handle_mount_opt(struct super_block *sb, char *opt, int token, arg =JBD2_DEFAULT_MAX_COMMIT_AGE ; sbi->s_commit_interval =HZ * arg; }else if (token == Opt_max_batch_time) { -if (arg ==0 ) - arg =EXT4_DEF_MAX_BATCH_TIME ; sbi->s_max_batch_time = arg; }else if (token == Opt_min_batch_time) { sbi->s_min_batch_time = arg;
fs/jbd2/transaction.c +4 -1
@@ -1588,9 +1588,12 @@ int jbd2_journal_stop(handle_t *handle)* to perform a synchronous write. We do this to detect the * case where a single process is doing a stream of sync * writes. No point in waiting for joiners in that case. +* +* Setting max_batch_time to 0 disables this completely. */ pid = current->pid; -if (handle->h_sync && journal->j_last_sync_writer != pid) { +if (handle->h_sync && journal->j_last_sync_writer != pid && + journal->j_max_batch_time) {u64 commit_time, trans_time; journal->j_last_sync_writer = pid;
Quoted 9 lines · Eric Sandeen
The mount manpage says of the
max_batch_timeoption,This optimization can be turned off entirely by setting
max_batch_timeto 0.But the code doesn't do that. So fix the code to do that.
Signed-off-by Eric Sandeen <[email protected]>
Thanks, applied.
- Ted