diff options
Diffstat (limited to 'fs/jbd2/commit.c')
| -rw-r--r-- | fs/jbd2/commit.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c index 4ea72377c7a..0b7d3b8226f 100644 --- a/fs/jbd2/commit.c +++ b/fs/jbd2/commit.c | |||
| @@ -138,7 +138,7 @@ static int journal_submit_commit_record(journal_t *journal, | |||
| 138 | set_buffer_ordered(bh); | 138 | set_buffer_ordered(bh); |
| 139 | barrier_done = 1; | 139 | barrier_done = 1; |
| 140 | } | 140 | } |
| 141 | ret = submit_bh(WRITE_SYNC, bh); | 141 | ret = submit_bh(WRITE_SYNC_PLUG, bh); |
| 142 | if (barrier_done) | 142 | if (barrier_done) |
| 143 | clear_buffer_ordered(bh); | 143 | clear_buffer_ordered(bh); |
| 144 | 144 | ||
| @@ -159,7 +159,7 @@ static int journal_submit_commit_record(journal_t *journal, | |||
| 159 | lock_buffer(bh); | 159 | lock_buffer(bh); |
| 160 | set_buffer_uptodate(bh); | 160 | set_buffer_uptodate(bh); |
| 161 | clear_buffer_dirty(bh); | 161 | clear_buffer_dirty(bh); |
| 162 | ret = submit_bh(WRITE_SYNC, bh); | 162 | ret = submit_bh(WRITE_SYNC_PLUG, bh); |
| 163 | } | 163 | } |
| 164 | *cbh = bh; | 164 | *cbh = bh; |
| 165 | return ret; | 165 | return ret; |
| @@ -190,7 +190,7 @@ retry: | |||
| 190 | set_buffer_uptodate(bh); | 190 | set_buffer_uptodate(bh); |
| 191 | bh->b_end_io = journal_end_buffer_io_sync; | 191 | bh->b_end_io = journal_end_buffer_io_sync; |
| 192 | 192 | ||
| 193 | ret = submit_bh(WRITE_SYNC, bh); | 193 | ret = submit_bh(WRITE_SYNC_PLUG, bh); |
| 194 | if (ret) { | 194 | if (ret) { |
| 195 | unlock_buffer(bh); | 195 | unlock_buffer(bh); |
| 196 | return ret; | 196 | return ret; |
| @@ -402,8 +402,13 @@ void jbd2_journal_commit_transaction(journal_t *journal) | |||
| 402 | spin_lock(&journal->j_state_lock); | 402 | spin_lock(&journal->j_state_lock); |
| 403 | commit_transaction->t_state = T_LOCKED; | 403 | commit_transaction->t_state = T_LOCKED; |
| 404 | 404 | ||
| 405 | /* | ||
| 406 | * Use plugged writes here, since we want to submit several before | ||
| 407 | * we unplug the device. We don't do explicit unplugging in here, | ||
| 408 | * instead we rely on sync_buffer() doing the unplug for us. | ||
| 409 | */ | ||
| 405 | if (commit_transaction->t_synchronous_commit) | 410 | if (commit_transaction->t_synchronous_commit) |
| 406 | write_op = WRITE_SYNC; | 411 | write_op = WRITE_SYNC_PLUG; |
| 407 | stats.u.run.rs_wait = commit_transaction->t_max_wait; | 412 | stats.u.run.rs_wait = commit_transaction->t_max_wait; |
| 408 | stats.u.run.rs_locked = jiffies; | 413 | stats.u.run.rs_locked = jiffies; |
| 409 | stats.u.run.rs_running = jbd2_time_diff(commit_transaction->t_start, | 414 | stats.u.run.rs_running = jbd2_time_diff(commit_transaction->t_start, |
| @@ -501,7 +506,8 @@ void jbd2_journal_commit_transaction(journal_t *journal) | |||
| 501 | if (err) | 506 | if (err) |
| 502 | jbd2_journal_abort(journal, err); | 507 | jbd2_journal_abort(journal, err); |
| 503 | 508 | ||
| 504 | jbd2_journal_write_revoke_records(journal, commit_transaction); | 509 | jbd2_journal_write_revoke_records(journal, commit_transaction, |
| 510 | write_op); | ||
| 505 | 511 | ||
| 506 | jbd_debug(3, "JBD: commit phase 2\n"); | 512 | jbd_debug(3, "JBD: commit phase 2\n"); |
| 507 | 513 | ||
