mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 11:16:11 +00:00
trace_stat: Fix missing entry in stat file
One entry is missing in the output of a stat file. The cause is, when stat_seq_start() is called the 2nd time, we should start from the (pos-1)th elem in the rbtree but not pos, because pos == 0 is the header. Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Frederic Weisbecker <fweisbec@gmail.com> LKML-Reference: <4A891A65.70009@cn.fujitsu.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
ba8b3a40ba
commit
97d53202a5
1 changed files with 7 additions and 3 deletions
|
@ -203,17 +203,21 @@ static void *stat_seq_start(struct seq_file *s, loff_t *pos)
|
||||||
{
|
{
|
||||||
struct stat_session *session = s->private;
|
struct stat_session *session = s->private;
|
||||||
struct rb_node *node;
|
struct rb_node *node;
|
||||||
|
int n = *pos;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* Prevent from tracer switch or rbtree modification */
|
/* Prevent from tracer switch or rbtree modification */
|
||||||
mutex_lock(&session->stat_mutex);
|
mutex_lock(&session->stat_mutex);
|
||||||
|
|
||||||
/* If we are in the beginning of the file, print the headers */
|
/* If we are in the beginning of the file, print the headers */
|
||||||
if (!*pos && session->ts->stat_headers)
|
if (session->ts->stat_headers) {
|
||||||
return SEQ_START_TOKEN;
|
if (n == 0)
|
||||||
|
return SEQ_START_TOKEN;
|
||||||
|
n--;
|
||||||
|
}
|
||||||
|
|
||||||
node = rb_first(&session->stat_root);
|
node = rb_first(&session->stat_root);
|
||||||
for (i = 0; node && i < *pos; i++)
|
for (i = 0; node && i < n; i++)
|
||||||
node = rb_next(node);
|
node = rb_next(node);
|
||||||
|
|
||||||
return node;
|
return node;
|
||||||
|
|
Loading…
Reference in a new issue