diff options
Diffstat (limited to 'fs/ocfs2/journal.c')
-rw-r--r-- | fs/ocfs2/journal.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index 0a42ae96dca7..2dd36af79e26 100644 --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c | |||
@@ -355,11 +355,14 @@ handle_t *ocfs2_start_trans(struct ocfs2_super *osb, int max_buffs) | |||
355 | if (journal_current_handle()) | 355 | if (journal_current_handle()) |
356 | return jbd2_journal_start(journal, max_buffs); | 356 | return jbd2_journal_start(journal, max_buffs); |
357 | 357 | ||
358 | sb_start_intwrite(osb->sb); | ||
359 | |||
358 | down_read(&osb->journal->j_trans_barrier); | 360 | down_read(&osb->journal->j_trans_barrier); |
359 | 361 | ||
360 | handle = jbd2_journal_start(journal, max_buffs); | 362 | handle = jbd2_journal_start(journal, max_buffs); |
361 | if (IS_ERR(handle)) { | 363 | if (IS_ERR(handle)) { |
362 | up_read(&osb->journal->j_trans_barrier); | 364 | up_read(&osb->journal->j_trans_barrier); |
365 | sb_end_intwrite(osb->sb); | ||
363 | 366 | ||
364 | mlog_errno(PTR_ERR(handle)); | 367 | mlog_errno(PTR_ERR(handle)); |
365 | 368 | ||
@@ -388,8 +391,10 @@ int ocfs2_commit_trans(struct ocfs2_super *osb, | |||
388 | if (ret < 0) | 391 | if (ret < 0) |
389 | mlog_errno(ret); | 392 | mlog_errno(ret); |
390 | 393 | ||
391 | if (!nested) | 394 | if (!nested) { |
392 | up_read(&journal->j_trans_barrier); | 395 | up_read(&journal->j_trans_barrier); |
396 | sb_end_intwrite(osb->sb); | ||
397 | } | ||
393 | 398 | ||
394 | return ret; | 399 | return ret; |
395 | } | 400 | } |