|
@@ -1073,7 +1073,6 @@ int jbd2_journal_get_create_access(handle_t *handle, struct buffer_head *bh)
|
|
|
* reused here.
|
|
|
*/
|
|
|
jbd_lock_bh_state(bh);
|
|
|
- spin_lock(&journal->j_list_lock);
|
|
|
J_ASSERT_JH(jh, (jh->b_transaction == transaction ||
|
|
|
jh->b_transaction == NULL ||
|
|
|
(jh->b_transaction == journal->j_committing_transaction &&
|
|
@@ -1096,12 +1095,14 @@ int jbd2_journal_get_create_access(handle_t *handle, struct buffer_head *bh)
|
|
|
jh->b_modified = 0;
|
|
|
|
|
|
JBUFFER_TRACE(jh, "file as BJ_Reserved");
|
|
|
+ spin_lock(&journal->j_list_lock);
|
|
|
__jbd2_journal_file_buffer(jh, transaction, BJ_Reserved);
|
|
|
} else if (jh->b_transaction == journal->j_committing_transaction) {
|
|
|
/* first access by this transaction */
|
|
|
jh->b_modified = 0;
|
|
|
|
|
|
JBUFFER_TRACE(jh, "set next transaction");
|
|
|
+ spin_lock(&journal->j_list_lock);
|
|
|
jh->b_next_transaction = transaction;
|
|
|
}
|
|
|
spin_unlock(&journal->j_list_lock);
|