reiserfs: Make flush bios explicitely sync
Commitb685d3d65a
"block: treat REQ_FUA and REQ_PREFLUSH as synchronous" removed REQ_SYNC flag from WRITE_{FUA|PREFLUSH|...} definitions. generic_make_request_checks() however strips REQ_FUA and REQ_PREFLUSH flags from a bio when the storage doesn't report volatile write cache and thus write effectively becomes asynchronous which can lead to performance regressions Fix the problem by making sure all bios which are synchronous are properly marked with REQ_SYNC. Fixes:b685d3d65a
CC: reiserfs-devel@vger.kernel.org CC: stable@vger.kernel.org Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
0f0b9b63e1
commit
d8747d642e
|
@ -1112,7 +1112,7 @@ static int flush_commit_list(struct super_block *s,
|
|||
depth = reiserfs_write_unlock_nested(s);
|
||||
if (reiserfs_barrier_flush(s))
|
||||
__sync_dirty_buffer(jl->j_commit_bh,
|
||||
REQ_PREFLUSH | REQ_FUA);
|
||||
REQ_SYNC | REQ_PREFLUSH | REQ_FUA);
|
||||
else
|
||||
sync_dirty_buffer(jl->j_commit_bh);
|
||||
reiserfs_write_lock_nested(s, depth);
|
||||
|
@ -1271,7 +1271,7 @@ static int _update_journal_header_block(struct super_block *sb,
|
|||
|
||||
if (reiserfs_barrier_flush(sb))
|
||||
__sync_dirty_buffer(journal->j_header_bh,
|
||||
REQ_PREFLUSH | REQ_FUA);
|
||||
REQ_SYNC | REQ_PREFLUSH | REQ_FUA);
|
||||
else
|
||||
sync_dirty_buffer(journal->j_header_bh);
|
||||
|
||||
|
|
Loading…
Reference in New Issue