diff --git a/tools/ext4dist.py b/tools/ext4dist.py index 227c1386c553..1806953286df 100755 --- a/tools/ext4dist.py +++ b/tools/ext4dist.py @@ -110,14 +110,20 @@ if (tsp == 0) { return 0; // missed start or filtered } - u64 delta = (bpf_ktime_get_ns() - *tsp) / FACTOR; + u64 delta = bpf_ktime_get_ns() - *tsp; + start.delete(&pid); + + // Skip entries with backwards time: temp workaround for #728 + if ((s64) delta < 0) + return 0; + + delta /= FACTOR; // store as histogram dist_key_t key = {.slot = bpf_log2l(delta)}; __builtin_memcpy(&key.op, op, sizeof(key.op)); dist.increment(key); - start.delete(&pid); return 0; } diff --git a/tools/xfsslower.py b/tools/xfsslower.py index da70c5705192..c70721a67ce4 100755 --- a/tools/xfsslower.py +++ b/tools/xfsslower.py @@ -173,8 +173,15 @@ // calculate delta u64 ts = bpf_ktime_get_ns(); - u64 delta_us = (ts - valp->ts) / 1000; + u64 delta_us = ts - valp->ts; entryinfo.delete(&id); + + // Skip entries with backwards time: temp workaround for #728 + if ((s64) delta_us < 0) + return 0; + + delta_us /= 1000; + if (FILTER_US) return 0;