Commit d2eb0b99 authored by Theodore Ts'o's avatar Theodore Ts'o

jbd2: check jh->b_transaction without taking j_list_lock

jh->b_transaction is adequately protected for reading by the
jbd_lock_bh_state(bh), so we don't need to take j_list_lock in
__journal_try_to_free_buffer().
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent d4e839d4
...@@ -1821,11 +1821,11 @@ __journal_try_to_free_buffer(journal_t *journal, struct buffer_head *bh) ...@@ -1821,11 +1821,11 @@ __journal_try_to_free_buffer(journal_t *journal, struct buffer_head *bh)
if (buffer_locked(bh) || buffer_dirty(bh)) if (buffer_locked(bh) || buffer_dirty(bh))
goto out; goto out;
if (jh->b_next_transaction != NULL) if (jh->b_next_transaction != NULL || jh->b_transaction != NULL)
goto out; goto out;
spin_lock(&journal->j_list_lock); spin_lock(&journal->j_list_lock);
if (jh->b_cp_transaction != NULL && jh->b_transaction == NULL) { if (jh->b_cp_transaction != NULL) {
/* written-back checkpointed metadata buffer */ /* written-back checkpointed metadata buffer */
JBUFFER_TRACE(jh, "remove from checkpoint list"); JBUFFER_TRACE(jh, "remove from checkpoint list");
__jbd2_journal_remove_checkpoint(jh); __jbd2_journal_remove_checkpoint(jh);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment