diff options
Diffstat (limited to 'fs/jbd/checkpoint.c')
-rw-r--r-- | fs/jbd/checkpoint.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/fs/jbd/checkpoint.c b/fs/jbd/checkpoint.c index 47552d4a6324..0f69c416eebc 100644 --- a/fs/jbd/checkpoint.c +++ b/fs/jbd/checkpoint.c | |||
@@ -602,15 +602,15 @@ int __journal_remove_checkpoint(struct journal_head *jh) | |||
602 | 602 | ||
603 | /* | 603 | /* |
604 | * There is one special case to worry about: if we have just pulled the | 604 | * There is one special case to worry about: if we have just pulled the |
605 | * buffer off a committing transaction's forget list, then even if the | 605 | * buffer off a running or committing transaction's checkpoing list, |
606 | * checkpoint list is empty, the transaction obviously cannot be | 606 | * then even if the checkpoint list is empty, the transaction obviously |
607 | * dropped! | 607 | * cannot be dropped! |
608 | * | 608 | * |
609 | * The locking here around j_committing_transaction is a bit sleazy. | 609 | * The locking here around t_state is a bit sleazy. |
610 | * See the comment at the end of journal_commit_transaction(). | 610 | * See the comment at the end of journal_commit_transaction(). |
611 | */ | 611 | */ |
612 | if (transaction == journal->j_committing_transaction) { | 612 | if (transaction->t_state != T_FINISHED) { |
613 | JBUFFER_TRACE(jh, "belongs to committing transaction"); | 613 | JBUFFER_TRACE(jh, "belongs to running/committing transaction"); |
614 | goto out; | 614 | goto out; |
615 | } | 615 | } |
616 | 616 | ||