|
@@ -2031,7 +2031,7 @@ static int tracing_open(struct inode *inode, struct file *file)
|
|
|
|
|
|
/* If this file was open for write, then erase contents */
|
|
|
if ((file->f_mode & FMODE_WRITE) &&
|
|
|
- !(file->f_flags & O_APPEND)) {
|
|
|
+ (file->f_flags & O_TRUNC)) {
|
|
|
long cpu = (long) inode->i_private;
|
|
|
|
|
|
if (cpu == TRACE_PIPE_ALL_CPU)
|
|
@@ -3085,7 +3085,8 @@ tracing_fill_pipe_page(size_t rem, struct trace_iterator *iter)
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- trace_consume(iter);
|
|
|
+ if (ret != TRACE_TYPE_NO_CONSUME)
|
|
|
+ trace_consume(iter);
|
|
|
rem -= count;
|
|
|
if (!find_next_entry_inc(iter)) {
|
|
|
rem = 0;
|
|
@@ -4233,8 +4234,11 @@ static void __ftrace_dump(bool disable_tracing)
|
|
|
iter.pos = -1;
|
|
|
|
|
|
if (find_next_entry_inc(&iter) != NULL) {
|
|
|
- print_trace_line(&iter);
|
|
|
- trace_consume(&iter);
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ ret = print_trace_line(&iter);
|
|
|
+ if (ret != TRACE_TYPE_NO_CONSUME)
|
|
|
+ trace_consume(&iter);
|
|
|
}
|
|
|
|
|
|
trace_printk_seq(&iter.seq);
|