[PATCH 5/6] JFS: Don't set log_SYNCBARRIER when log->active == 0
[email protected] (Dave Kleikamp) Tue, 26 Jul 2005 10:10:48 -0500 (CDT)
| Newsgroups | gmane.comp.file-systems.jfs.patches |
|---|---|
| Message-ID | <[email protected]> |
JFS: Don't set log_SYNCBARRIER when log->active == 0 If a metadata page is kept active, it is possible that the sync barrier logic continues to trigger, even if all active transactions have been phyically written to the journal. This can cause a hang, since the completion of the journal I/O is what unsets the sync barrier flag to allow new transactions to be created. Signed-off-by: Dave Kleikamp <[email protected]> --- commit c2783f3a625b2aba943ef94623e277557a91a448 tree e262b750f4e8cd5785417a55dd68b427e31bd86f parent c40c202493d18de42fcd0b8b5d68c22aefb70f03 author Dave Kleikamp <[email protected]> Mon, 25 Jul 2005 08:58:54 -0500 committer Dave Kleikamp <[email protected]> Mon, 25 Jul 2005 08:58:54 -0500 fs/jfs/jfs_logmgr.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/fs/jfs/jfs_logmgr.c b/fs/jfs/jfs_logmgr.c --- a/fs/jfs/jfs_logmgr.c +++ b/fs/jfs/jfs_logmgr.c @@ -1030,7 +1030,8 @@ static int lmLogSync(struct jfs_log * lo * starting until all current transactions are completed * by setting syncbarrier flag. */ - if (written > LOGSYNC_BARRIER(logsize) && logsize > 32 * LOGPSIZE) { + if (!test_bit(log_SYNCBARRIER, &log->flag) && + (written > LOGSYNC_BARRIER(logsize)) && log->active) { set_bit(log_SYNCBARRIER, &log->flag); jfs_info("log barrier on: lsn=0x%x syncpt=0x%x", lsn, log->syncpt); ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click