mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 05:11:48 +00:00
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 <shaggy@austin.ibm.com>
This commit is contained in:
parent
c40c202493
commit
c2783f3a62
@ -1030,7 +1030,8 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
|
||||
* 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);
|
||||
|
Loading…
Reference in New Issue
Block a user