lkml.org 
[lkml]   [2013]   [Dec]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 23/38] tools lib traceevent: Add jbd2 plugin
    Date
    From: Jiri Olsa <jolsa@redhat.com>

    Backporting jbd2 plugin.

    Backported from Steven Rostedt's trace-cmd repo (HEAD 0f2c2fb):
    git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git

    This plugin adds field resolving functions for following tracepoint
    events:

    jbd2:jbd2_checkpoint_stats
    jbd2:jbd2_run_stats

    The diff of 'perf script' output generated by old and new code:
    (data was generated by 'perf record -e 'jbd2:jbd2_run_stats,jbd2:jbd2_checkpoint_stats' -a')

    --- script.jbd2.old
    +++ script.jbd2.new
    - jbd2/dm-3-8 576 [000] 2983.748423: jbd2:jbd2_checkpoint_stats: [FAILED TO PARSE] dev=265289731 tid=0x3f2bbb chp_time=0x0 forced_to_close=0 written=0 dropped=2
    + jbd2/dm-3-8 576 [000] 2983.748423: jbd2:jbd2_checkpoint_stats: dev 253,3 tid 4139963 chp_time 0 forced_to_close 0 written 0 dropped 2
    - jbd2/dm-3-8 576 [000] 2983.852789: jbd2:jbd2_run_stats: [FAILED TO PARSE] dev=265289731 tid=0x3f2bc0 wait=0x0 request_delay=0x0 running=0x138d locked=0x0 flushing=0x0 logging=0x68 handle_count=2995 blocks=17 blocks_logged=18
    + jbd2/dm-3-8 576 [000] 2983.852789: jbd2:jbd2_run_stats: dev 253,3 tid 4139968 wait 0 request_delay 0 running 5005 locked 0 flushing 0 logging 104 handle_count 2995 blocks 17 blocks_logged 18

    This plugin also adds jbd2_dev_to_name function, which was removed from
    jdb2 tracepoints recently. Keeping it in for backward compatibility
    reasons.

    Signed-off-by: Jiri Olsa <jolsa@redhat.com>
    Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Link: http://lkml.kernel.org/r/1386076182-14484-13-git-send-email-jolsa@redhat.com
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/lib/traceevent/Makefile | 2 ++
    tools/lib/traceevent/plugin_jbd2.c | 66 ++++++++++++++++++++++++++++++++++++++
    2 files changed, 68 insertions(+)
    create mode 100644 tools/lib/traceevent/plugin_jbd2.c

    diff --git a/tools/lib/traceevent/Makefile b/tools/lib/traceevent/Makefile
    index f9468519d5f7..6c6540075a67 100644
    --- a/tools/lib/traceevent/Makefile
    +++ b/tools/lib/traceevent/Makefile
    @@ -212,6 +212,8 @@ PEVENT_LIB_OBJS += parse-filter.o
    PEVENT_LIB_OBJS += parse-utils.o
    PEVENT_LIB_OBJS += kbuffer-parse.o

    +PLUGIN_OBJS = plugin_jbd2.o
    +
    PLUGINS := $(PLUGIN_OBJS:.o=.so)

    ALL_OBJS = $(PEVENT_LIB_OBJS) $(PLUGIN_OBJS)
    diff --git a/tools/lib/traceevent/plugin_jbd2.c b/tools/lib/traceevent/plugin_jbd2.c
    new file mode 100644
    index 000000000000..5d85de741b52
    --- /dev/null
    +++ b/tools/lib/traceevent/plugin_jbd2.c
    @@ -0,0 +1,66 @@
    +/*
    + * Copyright (C) 2010 Red Hat Inc, Steven Rostedt <srostedt@redhat.com>
    + *
    + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + * This program is free software; you can redistribute it and/or
    + * modify it under the terms of the GNU Lesser General Public
    + * License as published by the Free Software Foundation;
    + * version 2.1 of the License (not later!)
    + *
    + * This program is distributed in the hope that it will be useful,
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    + * GNU Lesser General Public License for more details.
    + *
    + * You should have received a copy of the GNU Lesser General Public
    + * License along with this program; if not, see <http://www.gnu.org/licenses>
    + *
    + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + */
    +#include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +
    +#include "event-parse.h"
    +
    +#define MINORBITS 20
    +#define MINORMASK ((1U << MINORBITS) - 1)
    +
    +#define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS))
    +#define MINOR(dev) ((unsigned int) ((dev) & MINORMASK))
    +
    +unsigned long long process_jbd2_dev_to_name(struct trace_seq *s,
    + unsigned long long *args)
    +{
    + unsigned int dev = args[0];
    +
    + trace_seq_printf(s, "%d:%d", MAJOR(dev), MINOR(dev));
    + return 0;
    +}
    +
    +unsigned long long process_jiffies_to_msecs(struct trace_seq *s,
    + unsigned long long *args)
    +{
    + unsigned long long jiffies = args[0];
    +
    + trace_seq_printf(s, "%lld", jiffies);
    + return jiffies;
    +}
    +
    +int PEVENT_PLUGIN_LOADER(struct pevent *pevent)
    +{
    + pevent_register_print_function(pevent,
    + process_jbd2_dev_to_name,
    + PEVENT_FUNC_ARG_STRING,
    + "jbd2_dev_to_name",
    + PEVENT_FUNC_ARG_INT,
    + PEVENT_FUNC_ARG_VOID);
    +
    + pevent_register_print_function(pevent,
    + process_jiffies_to_msecs,
    + PEVENT_FUNC_ARG_LONG,
    + "jiffies_to_msecs",
    + PEVENT_FUNC_ARG_LONG,
    + PEVENT_FUNC_ARG_VOID);
    + return 0;
    +}
    --
    1.8.1.4


    \
     
     \ /
      Last update: 2013-12-04 22:21    [W:4.058 / U:2.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site