From b38d68478983126a3be24e4156a94a78d47b701f Mon Sep 17 00:00:00 2001 From: Nathan Scott Date: Thu, 28 Sep 2006 11:02:14 +1000 Subject: [PATCH] --- yaml --- r: 37143 b: refs/heads/master c: a3c6685eaa1b6c5cf05b084b3bc91895e253ad2c h: refs/heads/master i: 37141: 28237631b22c485d315824b61bd08438fff9c9fe 37139: afebe4e0b040746bd202fc556e1c5d89a89aad33 37135: cd6010c0e641b8cfabae2ad9c3da7c60939957b7 v: v3 --- [refs] | 2 +- trunk/fs/xfs/xfs_log.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index d68f04208d2b..5f60653e4cad 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bb3c7d2936b6db6f5ded9abf4d215abe97af8372 +refs/heads/master: a3c6685eaa1b6c5cf05b084b3bc91895e253ad2c diff --git a/trunk/fs/xfs/xfs_log.c b/trunk/fs/xfs/xfs_log.c index 21ac1a67e3e0..2a46919110f2 100644 --- a/trunk/fs/xfs/xfs_log.c +++ b/trunk/fs/xfs/xfs_log.c @@ -2212,9 +2212,13 @@ xlog_state_do_callback( iclog = iclog->ic_next; } while (first_iclog != iclog); - if (repeats && (repeats % 10) == 0) { + + if (repeats > 5000) { + flushcnt += repeats; + repeats = 0; xfs_fs_cmn_err(CE_WARN, log->l_mp, - "xlog_state_do_callback: looping %d", repeats); + "%s: possible infinite loop (%d iterations)", + __FUNCTION__, flushcnt); } } while (!ioerrors && loopdidcallbacks); @@ -2246,6 +2250,7 @@ xlog_state_do_callback( } #endif + flushcnt = 0; if (log->l_iclog->ic_state & (XLOG_STATE_ACTIVE|XLOG_STATE_IOERROR)) { flushcnt = log->l_flushcnt; log->l_flushcnt = 0;