|
@@ -138,7 +138,7 @@ static int journal_submit_commit_record(journal_t *journal,
|
|
|
set_buffer_ordered(bh);
|
|
|
barrier_done = 1;
|
|
|
}
|
|
|
- ret = submit_bh(WRITE_SYNC, bh);
|
|
|
+ ret = submit_bh(WRITE_SYNC_PLUG, bh);
|
|
|
if (barrier_done)
|
|
|
clear_buffer_ordered(bh);
|
|
|
|
|
@@ -159,7 +159,7 @@ static int journal_submit_commit_record(journal_t *journal,
|
|
|
lock_buffer(bh);
|
|
|
set_buffer_uptodate(bh);
|
|
|
clear_buffer_dirty(bh);
|
|
|
- ret = submit_bh(WRITE_SYNC, bh);
|
|
|
+ ret = submit_bh(WRITE_SYNC_PLUG, bh);
|
|
|
}
|
|
|
*cbh = bh;
|
|
|
return ret;
|
|
@@ -190,7 +190,7 @@ retry:
|
|
|
set_buffer_uptodate(bh);
|
|
|
bh->b_end_io = journal_end_buffer_io_sync;
|
|
|
|
|
|
- ret = submit_bh(WRITE_SYNC, bh);
|
|
|
+ ret = submit_bh(WRITE_SYNC_PLUG, bh);
|
|
|
if (ret) {
|
|
|
unlock_buffer(bh);
|
|
|
return ret;
|
|
@@ -402,8 +402,13 @@ void jbd2_journal_commit_transaction(journal_t *journal)
|
|
|
spin_lock(&journal->j_state_lock);
|
|
|
commit_transaction->t_state = T_LOCKED;
|
|
|
|
|
|
+ /*
|
|
|
+ * Use plugged writes here, since we want to submit several before
|
|
|
+ * we unplug the device. We don't do explicit unplugging in here,
|
|
|
+ * instead we rely on sync_buffer() doing the unplug for us.
|
|
|
+ */
|
|
|
if (commit_transaction->t_synchronous_commit)
|
|
|
- write_op = WRITE_SYNC;
|
|
|
+ write_op = WRITE_SYNC_PLUG;
|
|
|
stats.u.run.rs_wait = commit_transaction->t_max_wait;
|
|
|
stats.u.run.rs_locked = jiffies;
|
|
|
stats.u.run.rs_running = jbd2_time_diff(commit_transaction->t_start,
|