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 rb_node *node;
|
||||
int n = *pos;
|
||||
int i;
|
||||
|
||||
/* Prevent from tracer switch or rbtree modification */
|
||||
mutex_lock(&session->stat_mutex);
|
||||
|
||||
/* If we are in the beginning of the file, print the headers */
|
||||
if (!*pos && session->ts->stat_headers)
|
||||
return SEQ_START_TOKEN;
|
||||
if (session->ts->stat_headers) {
|
||||
if (n == 0)
|
||||
return SEQ_START_TOKEN;
|
||||
n--;
|
||||
}
|
||||
|
||||
node = rb_first(&session->stat_root);
|
||||
for (i = 0; node && i < *pos; i++)
|
||||
for (i = 0; node && i < n; i++)
|
||||
node = rb_next(node);
|
||||
|
||||
return node;
|
||||
|
|
Loading…
Reference in a new issue