Re: [PATCH] perf, tool, record: Fix the header generation for pipe

Jiri Olsa
2011-08-22T16:07:29Z

On Mon, Aug 22, 2011 at 05:51:06PM +0200, Eric Dumazet wrote:
> Le lundi 22 août 2011 à 16:52 +0200, Jiri Olsa a écrit :
>
> > - fd is always file.. the descriptor, which might be pipe, is in output_fd variable
> > but, maybe the die call is not necessary.. this should not fail
> >
> > - the record_file function is called only on debugfs or procfs files:
> > events/header_page
> > events/header_event
> > events/**/format
> > printk_formats
> > /proc/kallsyms
> >
> > so I think I need to read the whole file as in current code.
> >
>
> You read the file twice. Is it the right fix ?
>
> Once to compute the length to be able to write the output header, once
> to process the content.
>
> Are you sure length cannot change between the two phases ?
>
> /proc/kallsyms can definitely change when a module is loaded.

Right, better to store it to a temp file as you suggest,
so we have consistent view.. I'll prepare new patch.

thanks,
jirka

>
> Usually, when input "file" is not seekable or procfs based (fstat()
> returns st_size=0), we must load/cache it in memory (or using a
> temporary file) to get a consistent view of it.
>
> This is what is done by following commands :
>
> cat /proc/kallsyms | less
> less /proc/kallsyms
>
>
>