The rcuperf trace-event processing counted every "done" trace event
as a piggyback, which is incorrect because the task that started the
grace period didn't piggyback at all.  This commit fixes this problem
by recording the task that started a given grace period and ignoring
that task's "done" record for that grace period.

Signed-off-by: Paul E. McKenney <[email protected]>
---
 tools/testing/selftests/rcutorture/bin/kvm-recheck-rcuperf-ftrace.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git 
a/tools/testing/selftests/rcutorture/bin/kvm-recheck-rcuperf-ftrace.sh 
b/tools/testing/selftests/rcutorture/bin/kvm-recheck-rcuperf-ftrace.sh
index dffb553a7bcc..8948f7926b21 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm-recheck-rcuperf-ftrace.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm-recheck-rcuperf-ftrace.sh
@@ -44,6 +44,7 @@ $8 == "start" {
        starttask = $1;
        starttime = $3;
        startseq = $7;
+       seqtask[startseq] = starttask;
 }
 
 $8 == "end" {
@@ -62,7 +63,7 @@ $8 == "end" {
        }
 }
 
-$8 == "done" {
+$8 == "done" && seqtask[$7] != $1 {
        piggybackcnt[$1]++;
 }
 
-- 
2.5.2

Reply via email to