]> err.no Git - linux-2.6/commitdiff
[XFS] Ensure xlog_state_do_callback does not report spurious warnings on
authorNathan Scott <nathans@sgi.com>
Thu, 28 Sep 2006 01:02:14 +0000 (11:02 +1000)
committerTim Shimmin <tes@sgi.com>
Thu, 28 Sep 2006 01:02:14 +0000 (11:02 +1000)
ramdisks.

SGI-PV: 954802
SGI-Modid: xfs-linux-melb:xfs-kern:26627a

Signed-off-by: Nathan Scott <nathans@sgi.com>
Signed-off-by: Tim Shimmin <tes@sgi.com>
fs/xfs/xfs_log.c

index 21ac1a67e3e03c763eb61ea9be1e2a2eb170631e..2a46919110f21492309ee916ffd2e2cd5c8bc020 100644 (file)
@@ -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;