1. 07 4月, 2009 2 次提交
  2. 03 4月, 2009 4 次提交
  3. 01 4月, 2009 2 次提交
    • S
      ring-buffer: do not remove reader page from list on ring buffer free · 2e572895
      Steven Rostedt 提交于
      Impact: prevent possible memory leak
      
      The reader page of the ring buffer is special. Although it points
      into the ring buffer, it is not part of the actual buffer. It is
      a page used by the reader to swap with a page in the ring buffer.
      Once the swap is made, the new reader page is again outside the
      buffer.
      
      Even though the reader page points into the buffer, it is really
      pointing to residual data. Note, this data is used by the reader.
      
                    reader page
                        |
                        v
             (prev)   +---+    (next)
           +----------|   |----------+
           |          +---+          |
           v                         v
         +---+        +---+        +---+
      -->|   |------->|   |------->|   |--->
      <--|   |<-------|   |<-------|   |<---
         +---+        +---+        +---+
      
           ^            ^            ^
            \           |            /
             ------- Buffer---------
      
      If we perform a list_del_init() on the reader page we will actually remove
      the last page the reader swapped with and not the reader page itself.
      This will cause that page to not be freed, and thus is a memory leak.
      
      Luckily, the only user of the ring buffer so far is ftrace. And ftrace
      will not free its ring buffer after it allocates it. There is no current
      possible memory leak. But once there are other users, or if ftrace
      dynamically creates and frees its ring buffer, then this would be a
      memory leak.
      
      This patch fixes the leak for future cases.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      2e572895
    • S
      function-graph: allow unregistering twice · 2aad1b76
      Steven Rostedt 提交于
      Impact: fix to permanent disabling of function graph tracer
      
      There should be nothing to prevent a tracer from unregistering a
      function graph callback more than once. This can simplify error paths.
      
      But currently, the counter does not account for mulitple unregistering
      of the function graph callback. If it happens, the function graph
      tracer will be permanently disabled.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      2aad1b76
  4. 31 3月, 2009 12 次提交
  5. 30 3月, 2009 2 次提交
  6. 26 3月, 2009 5 次提交
  7. 24 3月, 2009 13 次提交
    • L
      tracing: use union for multi-usages field · ee000b7f
      Lai Jiangshan 提交于
      Impact: cleanup
      
      struct dyn_ftrace::ip has different usages in his lifecycle,
      we use union for it. And also for struct dyn_ftrace::flags.
      Signed-off-by: NLai Jiangshan <laijs@cn.fujitsu.com>
      Cc: Steven Rostedt <srostedt@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <49C871BE.3080405@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      ee000b7f
    • L
      ftrace: show virtual PID · cc59c9e8
      Lai Jiangshan 提交于
      Impact: fix PID output under namespaces
      
      When current namespace is not the global namespace,
      pid read from set_ftrace_pid is no correct.
      
       # ~/newpid_namespace_run bash
       # echo $$
       1
       # echo 1 > set_ftrace_pid
       # cat set_ftrace_pid
       3756
      
      Since we write virtual PID to set_ftrace_pid, we need get
      virtual PID when we read it.
      Signed-off-by: NLai Jiangshan <laijs@cn.fujitsu.com>
      Cc: Steven Rostedt <srostedt@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <49C84D65.9050606@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      cc59c9e8
    • S
      function-graph: add option for include sleep times · be6f164a
      Steven Rostedt 提交于
      Impact: give user a choice to show times spent while sleeping
      
      The user may want to see the time a function spent sleeping.
      This patch adds the trace option "sleep-time" to allow that.
      The "sleep-time" option is default on.
      
       echo sleep-time > /debug/tracing/trace_options
      
      produces:
      
       ------------------------------------------
       2)  avahi-d-3428  =>    <idle>-0
       ------------------------------------------
      
       2)               |      finish_task_switch() {
       2)   0.621 us    |        _spin_unlock_irq();
       2)   2.202 us    |      }
       2) ! 1002.197 us |    }
       2) ! 1003.521 us |  }
      
      where as,
      
       echo nosleep-time > /debug/tracing/trace_options
      
      produces:
      
       0)    <idle>-0    =>  yum-upd-3416
       ------------------------------------------
      
       0)               |              finish_task_switch() {
       0)   0.643 us    |                _spin_unlock_irq();
       0)   2.342 us    |              }
       0) + 41.302 us   |            }
       0) + 42.453 us   |          }
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      be6f164a
    • S
      function-graph: ignore times across schedule · 8aef2d28
      Steven Rostedt 提交于
      Impact: more accurate timings
      
      The current method of function graph tracing does not take into
      account the time spent when a task is not running. This shows functions
      that call schedule have increased costs:
      
       3) + 18.664 us   |      }
       ------------------------------------------
       3)    <idle>-0    =>  kblockd-123
       ------------------------------------------
      
       3)               |      finish_task_switch() {
       3)   1.441 us    |        _spin_unlock_irq();
       3)   3.966 us    |      }
       3) ! 2959.433 us |    }
       3) ! 2961.465 us |  }
      
      This patch uses the tracepoint in the scheduling context switch to
      account for time that has elapsed while a task is scheduled out.
      Now we see:
      
       ------------------------------------------
       3)    <idle>-0    =>  edac-po-1067
       ------------------------------------------
      
       3)               |      finish_task_switch() {
       3)   0.685 us    |        _spin_unlock_irq();
       3)   2.331 us    |      }
       3) + 41.439 us   |    }
       3) + 42.663 us   |  }
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      8aef2d28
    • S
      function-graph: prevent more than one tracer registering · 05ce5818
      Steven Rostedt 提交于
      Impact: prevent crash due to multiple function graph tracers
      
      The function graph tracer can currently only handle a single tracer
      being registered. If another tracer registers with the function
      graph tracer it can crash the system.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      05ce5818
    • S
      function-graph: moved the timestamp from arch to generic code · 5d1a03dc
      Steven Rostedt 提交于
      This patch move the timestamp from happening in the arch specific
      code into the general code. This allows for better control by the tracer
      to time manipulation.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      5d1a03dc
    • S
      tracing: fix memory leak in trace_stat · 09833521
      Steven Rostedt 提交于
      If the function profiler does not have any items recorded and one were
      to cat the function stat file, the kernel would take a BUG with a NULL
      pointer dereference.
      
      Looking further into this, I found that returning NULL from stat_start
      did not stop the stat logic, and would later call stat_next. This breaks
      from the way seq_file works, so I looked into fixing the stat code.
      
      This is where I noticed that the last next_entry is never freed.
      It is allocated, and if the stat_next returns NULL, the code breaks out
      of the loop, unlocks the mutex and exits. We never link the next_entry
      nor do we free it. Thus it is a real memory leak.
      
      This patch rearranges the code a bit to not only fix the memory leak,
      but also to act more like seq_file where nothing is printed if there
      is nothing to print. That is, stat_start returns NULL.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      09833521
    • L
      blktrace: print human-readable act_mask · 09341997
      Li Zefan 提交于
      Impact: new feature, allow symbolic values in /debug/tracing/act_mask
      
      Print stringified act_mask instead of hex value:
      
       # cat act_mask
       read,write,barrier,sync,queue,requeue,issue,complete,fs,pc,ahead,meta,
       discard,drv_data
       # echo "meta,write" > act_mask
       # cat act_mask
       write,meta
      
      Also:
       - make act_mask accept "ahead", "meta", "discard" and "drv_data"
       - use strsep() instead of strchr() to parse user input
       - return -EINVAL if a token is not found in the mask map
       - fix a bug that 'value' is unsigned, so it can < 0
       - propagate error value of blk_trace_mask2str() to userspace, but not
         always return -ENXIO.
      Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
      Acked-by: NJens Axboe <jens.axboe@oracle.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      LKML-Reference: <49C8AB42.1000802@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      09341997
    • L
      blktrace: fix t_error() · e0dc81be
      Li Zefan 提交于
      Impact: fix error flag output
      
      t_error() should return t->error but not t->sector.
      Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
      Acked-by: NJens Axboe <jens.axboe@oracle.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      LKML-Reference: <49C8945F.5020802@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e0dc81be
    • L
      blktrace: fix wrong calculation of RWBS · 65796348
      Li Zefan 提交于
      Impact: fix the output of IO type category characters
      
      Trace categories are the upper 16 bits, not the lower 16 bits.
      Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
      Acked-by: NJens Axboe <jens.axboe@oracle.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      LKML-Reference: <49C89432.8010805@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      65796348
    • L
      blktrace: mark ddir_act[] const · e4955c99
      Li Zefan 提交于
      Impact: cleanup
      
      ddir_act and what2act always stay immutable.
      Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
      Acked-by: NJens Axboe <jens.axboe@oracle.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      LKML-Reference: <49C89415.5080503@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e4955c99
    • T
      tracing/filters: disallow integer values for string filters and vice versa · 9f58a159
      Tom Zanussi 提交于
      Impact: fix filter use boundary condition / crash
      
      Make sure filters for string fields don't use integer values and vice
      versa.  Getting it wrong can crash the system or produce bogus
      results.
      Signed-off-by: NTom Zanussi <tzanussi@gmail.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: =?ISO-8859-1?Q?Fr=E9d=E9ric?= Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <1237878882.8339.61.camel@charm-linux>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      9f58a159
    • T
      tracing/filters: use trace_seq_printf() to print filters · 4bda2d51
      Tom Zanussi 提交于
      Impact: cleanup
      
      Instead of just using the trace_seq buffer to print the filters, use
      trace_seq_printf() as it was intended to be used.
      Reported-by: NSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: NTom Zanussi <tzanussi@gmail.com>
      Cc: =?ISO-8859-1?Q?Fr=E9d=E9ric?= Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <1237878871.8339.59.camel@charm-linux>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      4bda2d51