• Yunlong Song's avatar
    perf trace: Support using -f to override perf.data file ownership · e366a6d8
    Yunlong Song authored
    Enable perf trace to use perf.data when it is not owned by current user
    or root.
    
    Example:
    
     # perf trace record ls
     # chown Yunlong.Song:Yunlong.Song perf.data
     # ls -al perf.data
     -rw------- 1 Yunlong.Song Yunlong.Song 4153101 Apr  2 15:28 perf.data
     # id
     uid=0(root) gid=0(root) groups=0(root),64(pkcs11)
    
    Before this patch:
    
     # perf trace -i perf.data
     File perf.data not owned by current user or root (use -f to override)
     # perf trace -i perf.data -f
       Error: unknown switch `f'
    
      usage: perf trace [<options>] [<command>]
         or: perf trace [<options>] -- <command> [<options>]
         or: perf trace record [<options>] [<command>]
         or: perf trace record [<options>] -- <command> [<options>]
    
             --event <event>   event selector. use 'perf list' to list
     						  available events
             --comm            show the thread COMM next to its id
             --tool_stats      show tool stats
         -e, --expr <expr>     list of events to trace
         -o, --output <file>   output file name
         -i, --input <file>    Analyze events in file
         -p, --pid <pid>       trace events on existing process id
         -t, --tid <tid>       trace events on existing thread id
             --filter-pids <float>
      ...
    
    As shown above, the -f option does not work at all.
    
    After this patch:
    
     # perf trace -i perf.data
     File perf.data not owned by current user or root (use -f to override)
     # perf trace -i perf.data -f
     0.056 ( 0.002 ms): ls/47325 brk(                                 ...
     0.108 ( 0.018 ms): ls/47325 mmap(len: 4096, prot: READ|WRITE,    ...
     0.145 ( 0.013 ms): ls/47325 access(filename: 0x7f31259a0eb0,     ...
     0.172 ( 0.008 ms): ls/47325 open(filename: 0x7fffeb9a0d00,       ...
     0.180 ( 0.004 ms): ls/47325 stat(filename: 0x7fffeb9a0d00,       ...
     0.185 ( 0.004 ms): ls/47325 open(filename: 0x7fffeb9a0d00,       ...
     0.189 ( 0.003 ms): ls/47325 stat(filename: 0x7fffeb9a0d00,       ...
     0.195 ( 0.004 ms): ls/47325 open(filename: 0x7fffeb9a0d00,       ...
     0.199 ( 0.002 ms): ls/47325 stat(filename: 0x7fffeb9a0d00,       ...
     0.205 ( 0.004 ms): ls/47325 open(filename: 0x7fffeb9a0d00,       ...
     0.211 ( 0.004 ms): ls/47325 stat(filename: 0x7fffeb9a0d00,       ...
     0.220 ( 0.007 ms): ls/47325 open(filename: 0x7f312599e8ff,       ...
     ...
     ...
    
    As shown above, the -f option really works now.
    Signed-off-by: default avatarYunlong Song <yunlong.song@huawei.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1427982439-27388-10-git-send-email-yunlong.song@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    e366a6d8
builtin-trace.c 74.2 KB