linux/fs/jbd2
Jan Kara 5052b069ac jbd2: fix dbench4 performance regression for 'nobarrier' mounts
Commit b685d3d65a "block: treat REQ_FUA and REQ_PREFLUSH as
synchronous" removed REQ_SYNC flag from WRITE_FUA implementation. Since
JBD2 strips REQ_FUA and REQ_FLUSH flags from submitted IO when the
filesystem is mounted with nobarrier mount option, journal superblock
writes ended up being async writes after this patch and that caused
heavy performance regression for dbench4 benchmark with high number of
processes. In my test setup with HP RAID array with non-volatile write
cache and 32 GB ram, dbench4 runs with 8 processes regressed by ~25%.

Fix the problem by making sure journal superblock writes are always
treated as synchronous since they generally block progress of the
journalling machinery and thus the whole filesystem.

Fixes: b685d3d65a
CC: stable@vger.kernel.org
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2017-04-29 21:07:30 -04:00
..
checkpoint.c block,fs: use REQ_* flags directly 2016-11-01 09:43:26 -06:00
commit.c fs/jbd2, locking/mutex, sched/wait: Use mutex_lock_io() for journal->j_checkpoint_mutex 2017-01-14 11:30:06 +01:00
journal.c jbd2: fix dbench4 performance regression for 'nobarrier' mounts 2017-04-29 21:07:30 -04:00
Kconfig jbd2: remove debug dependency on debug_fs and update Kconfig help text 2013-06-12 23:07:51 -04:00
Makefile
recovery.c fs: have ll_rw_block users pass in op and flags separately 2016-06-07 13:41:38 -06:00
revoke.c jbd2: don't leak memory if setting up journal fails 2017-03-15 15:08:48 -04:00
transaction.c jbd2: don't leak modified metadata buffers on an aborted journal 2017-02-04 23:14:19 -05:00