diff options
Diffstat (limited to 'fs/jfs/jfs_txnmgr.c')
| -rw-r--r-- | fs/jfs/jfs_txnmgr.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/jfs/jfs_txnmgr.c b/fs/jfs/jfs_txnmgr.c index 121c981ff453..c7a92f9deb2b 100644 --- a/fs/jfs/jfs_txnmgr.c +++ b/fs/jfs/jfs_txnmgr.c | |||
| @@ -552,6 +552,11 @@ void txEnd(tid_t tid) | |||
| 552 | * synchronize with logsync barrier | 552 | * synchronize with logsync barrier |
| 553 | */ | 553 | */ |
| 554 | if (test_bit(log_SYNCBARRIER, &log->flag)) { | 554 | if (test_bit(log_SYNCBARRIER, &log->flag)) { |
| 555 | TXN_UNLOCK(); | ||
| 556 | |||
| 557 | /* write dirty metadata & forward log syncpt */ | ||
| 558 | jfs_syncpt(log, 1); | ||
| 559 | |||
| 555 | jfs_info("log barrier off: 0x%x", log->lsn); | 560 | jfs_info("log barrier off: 0x%x", log->lsn); |
| 556 | 561 | ||
| 557 | /* enable new transactions start */ | 562 | /* enable new transactions start */ |
| @@ -560,11 +565,6 @@ void txEnd(tid_t tid) | |||
| 560 | /* wakeup all waitors for logsync barrier */ | 565 | /* wakeup all waitors for logsync barrier */ |
| 561 | TXN_WAKEUP(&log->syncwait); | 566 | TXN_WAKEUP(&log->syncwait); |
| 562 | 567 | ||
| 563 | TXN_UNLOCK(); | ||
| 564 | |||
| 565 | /* forward log syncpt */ | ||
| 566 | jfs_syncpt(log); | ||
| 567 | |||
| 568 | goto wakeup; | 568 | goto wakeup; |
| 569 | } | 569 | } |
| 570 | } | 570 | } |
| @@ -657,7 +657,9 @@ struct tlock *txLock(tid_t tid, struct inode *ip, struct metapage * mp, | |||
| 657 | /* only anonymous txn. | 657 | /* only anonymous txn. |
| 658 | * Remove from anon_list | 658 | * Remove from anon_list |
| 659 | */ | 659 | */ |
| 660 | TXN_LOCK(); | ||
| 660 | list_del_init(&jfs_ip->anon_inode_list); | 661 | list_del_init(&jfs_ip->anon_inode_list); |
| 662 | TXN_UNLOCK(); | ||
| 661 | } | 663 | } |
| 662 | jfs_ip->atlhead = tlck->next; | 664 | jfs_ip->atlhead = tlck->next; |
| 663 | } else { | 665 | } else { |
