diff options
author | Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> | 2008-11-06 17:50:21 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2008-11-06 17:50:21 -0500 |
commit | fb68407b0d9efba962c03f55009c797e22f024bc (patch) | |
tree | b3f33f513969d6f77c5b6a6f71b662057d3440a5 /fs/jbd2/checkpoint.c | |
parent | c3a326a657562dab81acf05aee106dc1fe345eb4 (diff) | |
download | lwn-fb68407b0d9efba962c03f55009c797e22f024bc.tar.gz lwn-fb68407b0d9efba962c03f55009c797e22f024bc.zip |
jbd2: Call journal commit callback without holding j_list_lock
Avoid freeing the transaction in __jbd2_journal_drop_transaction() so
the journal commit callback can run without holding j_list_lock, to
avoid lock contention on this spinlock.
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/jbd2/checkpoint.c')
-rw-r--r-- | fs/jbd2/checkpoint.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/jbd2/checkpoint.c b/fs/jbd2/checkpoint.c index adc08ec875ed..17159cacbd9e 100644 --- a/fs/jbd2/checkpoint.c +++ b/fs/jbd2/checkpoint.c @@ -682,6 +682,7 @@ int __jbd2_journal_remove_checkpoint(struct journal_head *jh) safely remove this transaction from the log */ __jbd2_journal_drop_transaction(journal, transaction); + kfree(transaction); /* Just in case anybody was waiting for more transactions to be checkpointed... */ @@ -756,5 +757,4 @@ void __jbd2_journal_drop_transaction(journal_t *journal, transaction_t *transact J_ASSERT(journal->j_running_transaction != transaction); jbd_debug(1, "Dropping transaction %d, all done\n", transaction->t_tid); - kfree(transaction); } |