All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yordan Karadzhov <ykaradzhov@vmware.com>
To: rostedt@goodmis.org
Cc: linux-trace-devel@vger.kernel.org,
	Yordan Karadzhov <ykaradzhov@vmware.com>
Subject: [PATCH] kernel-shark: Fixing the fix of ksmodel_shif_forward method()
Date: Wed, 20 Feb 2019 11:16:10 +0200	[thread overview]
Message-ID: <20190220091610.10699-1-ykaradzhov@vmware.com> (raw)

As explaned in the change log of

e54616484 ("Do not copy the Upper Overflow bin when shifting forward"),

the lower edge of the Upper Overflow bin is unusual (shift + 1). Because
of this, the content of the Upper Overflow bin cannot be copied, when
shifting the visible area forward. It has to be recalculated instead.
However, this is not enough to fix the bug. The last bin of the old histo
cannot be copied as well. This is because its upper edge is shifted
too (+1).

Reported-by: Tzvetomir Stoyanov <tstoyanov@vmware.com>
Fixes: e54616484 ("Do not copy the Upper Overflow bin when shifting forward")
Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com>
---
 kernel-shark/src/libkshark-model.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/kernel-shark/src/libkshark-model.c b/kernel-shark/src/libkshark-model.c
index b71a9b8..b80f71e 100644
--- a/kernel-shark/src/libkshark-model.c
+++ b/kernel-shark/src/libkshark-model.c
@@ -488,23 +488,30 @@ void ksmodel_shift_forward(struct kshark_trace_histo *histo, size_t n)
 	ksmodel_set_lower_edge(histo);
 
 	/*
-	 * Copy the the mapping indexes of all overlaping bins starting from
-	 * bin "0" of the new histo. Note that the number of overlaping bins
-	 * is histo->n_bins - n.
 	 * We will do a sanity check. ksmodel_set_lower_edge() sets map[0]
 	 * index of the new histo. This index should then be equal to map[n]
 	 * index of the old histo.
 	 */
 	assert (histo->map[0] == histo->map[n]);
+
+	/*
+	 * Copy the mapping indexes of all overlaping bins starting from
+	 * bin "0" of the new histo. Note that the number of overlaping bins
+	 * is histo->n_bins - n. However, the last bin of the models is
+	 * unusual. Its size has been increased by "1" in order make sure that
+	 * the last entry of the dataset will fall into it (see the comment in
+	 * ksmodel_set_next_bin_edge()). Because of this, we do not want to
+	 * copy the very last bin of the old histo. We are going to recalculate
+	 * its content instead. */
 	memmove(&histo->map[0], &histo->map[n],
-		sizeof(histo->map[0]) * (histo->n_bins - n));
+		sizeof(histo->map[0]) * (histo->n_bins - n - 1));
 
 	/*
 	 * Calculate only the content of the new (non-overlapping) bins.
 	 * Start from the last copied bin and set the edge of each consecutive
 	 * bin.
 	 */
-	bin = histo->n_bins - n - 1;
+	bin = histo->n_bins - n - 2;
 	for (; bin < histo->n_bins; ++bin) {
 		ksmodel_set_next_bin_edge(histo, bin, last_row);
 		if (histo->map[bin + 1] > 0)
-- 
2.17.1


             reply	other threads:[~2019-02-20  9:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-20  9:16 Yordan Karadzhov [this message]
2019-02-20 14:51 ` [PATCH] kernel-shark: Fixing the fix of ksmodel_shif_forward method() Steven Rostedt
2019-02-20 15:29   ` Yordan Karadzhov (VMware)
2019-02-20 16:37     ` Steven Rostedt
2019-02-21  8:22       ` Yordan Karadzhov (VMware)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190220091610.10699-1-ykaradzhov@vmware.com \
    --to=ykaradzhov@vmware.com \
    --cc=linux-trace-devel@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.