diff options
author | Dave Kleikamp <shaggy@austin.ibm.com> | 2005-05-02 14:25:08 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-03 01:23:53 -0400 |
commit | 1c6278295d6482edaaaef5faa64b18f17b3319b7 (patch) | |
tree | 226896c455d8a4996527c4a0ec5699956c657ec3 /fs/jfs/jfs_txnmgr.c | |
parent | 7fab479bebb96b1b4888bdae9b42e1fa9c5d3f38 (diff) |
[PATCH] JFS: Write journal sync points more often
This patch adds jfs_syncpt, which calls lmLogSync to write sync points
to the journal both in jfs_sync_fs and when sync barrier processing
completes.
lmLogSync accomplishes two things: 1) it pushes logged-but-dirty
metadata pages to disk, and 2) it writes a sync record to the journal
so that jfs_fsck doesn't need to replay more transactions than is
necessary.
Signed-off-by: Dave Kleikamp <shaggy@austin.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/jfs/jfs_txnmgr.c')
-rw-r--r-- | fs/jfs/jfs_txnmgr.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/fs/jfs/jfs_txnmgr.c b/fs/jfs/jfs_txnmgr.c index bbc9c1407b55..e93d01aa12c4 100644 --- a/fs/jfs/jfs_txnmgr.c +++ b/fs/jfs/jfs_txnmgr.c | |||
@@ -567,9 +567,6 @@ void txEnd(tid_t tid) | |||
567 | * synchronize with logsync barrier | 567 | * synchronize with logsync barrier |
568 | */ | 568 | */ |
569 | if (test_bit(log_SYNCBARRIER, &log->flag)) { | 569 | if (test_bit(log_SYNCBARRIER, &log->flag)) { |
570 | /* forward log syncpt */ | ||
571 | /* lmSync(log); */ | ||
572 | |||
573 | jfs_info("log barrier off: 0x%x", log->lsn); | 570 | jfs_info("log barrier off: 0x%x", log->lsn); |
574 | 571 | ||
575 | /* enable new transactions start */ | 572 | /* enable new transactions start */ |
@@ -577,15 +574,22 @@ void txEnd(tid_t tid) | |||
577 | 574 | ||
578 | /* wakeup all waitors for logsync barrier */ | 575 | /* wakeup all waitors for logsync barrier */ |
579 | TXN_WAKEUP(&log->syncwait); | 576 | TXN_WAKEUP(&log->syncwait); |
577 | |||
578 | TXN_UNLOCK(); | ||
579 | |||
580 | /* forward log syncpt */ | ||
581 | jfs_syncpt(log); | ||
582 | |||
583 | goto wakeup; | ||
580 | } | 584 | } |
581 | } | 585 | } |
582 | 586 | ||
587 | TXN_UNLOCK(); | ||
588 | wakeup: | ||
583 | /* | 589 | /* |
584 | * wakeup all waitors for a free tblock | 590 | * wakeup all waitors for a free tblock |
585 | */ | 591 | */ |
586 | TXN_WAKEUP(&TxAnchor.freewait); | 592 | TXN_WAKEUP(&TxAnchor.freewait); |
587 | |||
588 | TXN_UNLOCK(); | ||
589 | } | 593 | } |
590 | 594 | ||
591 | 595 | ||