)]}'
{
  "log": [
    {
      "commit": "c9059598ea8981d02356eead3188bf7fa4d717b8",
      "tree": "03e73b20a30e988da7c6a3e0ad93b2dc5843274d",
      "parents": [
        "0a33f80a8373eca7f4bea3961d1346c3815fa5ed",
        "b0fd271d5fba0b2d00888363f3869e3f9b26caa9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 10:52:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 11:10:35 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block: (153 commits)\n  block: add request clone interface (v2)\n  floppy: fix hibernation\n  ramdisk: remove long-deprecated \"ramdisk\u003d\" boot-time parameter\n  fs/bio.c: add missing __user annotation\n  block: prevent possible io_context-\u003erefcount overflow\n  Add serial number support for virtio_blk, V4a\n  block: Add missing bounce_pfn stacking and fix comments\n  Revert \"block: Fix bounce limit setting in DM\"\n  cciss: decode unit attention in SCSI error handling code\n  cciss: Remove no longer needed sendcmd reject processing code\n  cciss: change SCSI error handling routines to work with interrupts enabled.\n  cciss: separate error processing and command retrying code in sendcmd_withirq_core()\n  cciss: factor out fix target status processing code from sendcmd functions\n  cciss: simplify interface of sendcmd() and sendcmd_withirq()\n  cciss: factor out core of sendcmd_withirq() for use by SCSI error handling code\n  cciss: Use schedule_timeout_uninterruptible in SCSI error handling code\n  block: needs to set the residual length of a bidi request\n  Revert \"block: implement blkdev_readpages\"\n  block: Fix bounce limit setting in DM\n  Removed reference to non-existing file Documentation/PCI/PCI-DMA-mapping.txt\n  ...\n\nManually fix conflicts with tracing updates in:\n\tblock/blk-sysfs.c\n\tdrivers/ide/ide-atapi.c\n\tdrivers/ide/ide-cd.c\n\tdrivers/ide/ide-floppy.c\n\tdrivers/ide/ide-tape.c\n\tinclude/trace/events/block.h\n\tkernel/trace/blktrace.c\n"
    },
    {
      "commit": "991ec02cdca33b03a132a0cacfe6f0aa0be9aa8d",
      "tree": "50b5f4e2b9f138da57f76eca44fdcc80a2fcd428",
      "parents": [
        "862366118026a358882eefc70238dbcc3db37aac",
        "84047e360af0394ac5861d433f26bbcf30f77dd1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 10 19:58:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 10 19:58:10 2009 -0700"
      },
      "message": "Merge branch \u0027tracing-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  function-graph: always initialize task ret_stack\n  function-graph: move initialization of new tasks up in fork\n  function-graph: add memory barriers for accessing task\u0027s ret_stack\n  function-graph: enable the stack after initialization of other variables\n  function-graph: only allocate init tasks if it was not already done\n\nManually fix trivial conflict in kernel/trace/ftrace.c\n"
    },
    {
      "commit": "862366118026a358882eefc70238dbcc3db37aac",
      "tree": "4eb62bc10327a5afac064a95a091ea05ecd2acc1",
      "parents": [
        "57eee9ae7bbcfb692dc96c739a5184adb6349733",
        "511b01bdf64ad8a38414096eab283c7784aebfc4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 10 19:53:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 10 19:53:40 2009 -0700"
      },
      "message": "Merge branch \u0027tracing-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (244 commits)\n  Revert \"x86, bts: reenable ptrace branch trace support\"\n  tracing: do not translate event helper macros in print format\n  ftrace/documentation: fix typo in function grapher name\n  tracing/events: convert block trace points to TRACE_EVENT(), fix !CONFIG_BLOCK\n  tracing: add protection around module events unload\n  tracing: add trace_seq_vprint interface\n  tracing: fix the block trace points print size\n  tracing/events: convert block trace points to TRACE_EVENT()\n  ring-buffer: fix ret in rb_add_time_stamp\n  ring-buffer: pass in lockdep class key for reader_lock\n  tracing: add annotation to what type of stack trace is recorded\n  tracing: fix multiple use of __print_flags and __print_symbolic\n  tracing/events: fix output format of user stack\n  tracing/events: fix output format of kernel stack\n  tracing/trace_stack: fix the number of entries in the header\n  ring-buffer: discard timestamps that are at the start of the buffer\n  ring-buffer: try to discard unneeded timestamps\n  ring-buffer: fix bug in ring_buffer_discard_commit\n  ftrace: do not profile functions when disabled\n  tracing: make trace pipe recognize latency format flag\n  ...\n"
    },
    {
      "commit": "110bf2b764eb6026b868d84499263cb24b1bcc8d",
      "tree": "66c869f6f96497051c4bda0797e234b3f7b39e8f",
      "parents": [
        "725c624a58a10ef90a2ff889e122158fabf36147"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Jun 09 17:29:07 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 09 17:29:07 2009 -0400"
      },
      "message": "tracing: add protection around module events unload\n\nWhen reading the trace buffer, there is a race that when a module\nis unloaded it removes events that is stilled referenced in the buffers.\nThis patch adds the protection around the unloading of the events\nfrom modules and the reading of the trace buffers.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "725c624a58a10ef90a2ff889e122158fabf36147",
      "tree": "0a233afc51fa5bc0717ff99f3004219da54dcd6b",
      "parents": [
        "6556d1df88fe68f9836beeb43342a336691cb67c"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Jun 08 19:09:45 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 09 15:17:32 2009 -0400"
      },
      "message": "tracing: add trace_seq_vprint interface\n\nThe code to update the print formats for events requires a vprintf\nformat in the trace_seq. This patch adds that interface.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "55782138e47d9baf2f7d3a7af9e7cf42adf72c56",
      "tree": "c7ccabae20e27bbeb08b69a358e8b86c98d1d9f3",
      "parents": [
        "f57a8a1911342265e7acdc190333c4e9235a6632"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Jun 09 13:43:05 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 09 12:34:23 2009 -0400"
      },
      "message": "tracing/events: convert block trace points to TRACE_EVENT()\n\nTRACE_EVENT is a more generic way to define tracepoints. Doing so adds\nthese new capabilities to this tracepoint:\n\n  - zero-copy and per-cpu splice() tracing\n  - binary tracing without printf overhead\n  - structured logging records exposed under /debug/tracing/events\n  - trace events embedded in function tracer output and other plugins\n  - user-defined, per tracepoint filter expressions\n  ...\n\nCons:\n\n  - no dev_t info for the output of plug, unplug_timer and unplug_io events.\n    no dev_t info for getrq and sleeprq events if bio \u003d\u003d NULL.\n    no dev_t info for rq_abort,...,rq_requeue events if rq-\u003erq_disk \u003d\u003d NULL.\n\n    This is mainly because we can\u0027t get the deivce from a request queue.\n    But this may change in the future.\n\n  - A packet command is converted to a string in TP_assign, not TP_print.\n    While blktrace do the convertion just before output.\n\n    Since pc requests should be rather rare, this is not a big issue.\n\n  - In blktrace, an event can have 2 different print formats, but a TRACE_EVENT\n    has a unique format, which means we have some unused data in a trace entry.\n\n    The overhead is minimized by using __dynamic_array() instead of __array().\n\nI\u0027ve benchmarked the ioctl blktrace vs the splice based TRACE_EVENT tracing:\n\n      dd                   dd + ioctl blktrace       dd + TRACE_EVENT (splice)\n1     7.36s, 42.7 MB/s     7.50s, 42.0 MB/s          7.41s, 42.5 MB/s\n2     7.43s, 42.3 MB/s     7.48s, 42.1 MB/s          7.43s, 42.4 MB/s\n3     7.38s, 42.6 MB/s     7.45s, 42.2 MB/s          7.41s, 42.5 MB/s\n\nSo the overhead of tracing is very small, and no regression when using\nthose trace events vs blktrace.\n\nAnd the binary output of TRACE_EVENT is much smaller than blktrace:\n\n # ls -l -h\n -rw-r--r-- 1 root root 8.8M 06-09 13:24 sda.blktrace.0\n -rw-r--r-- 1 root root 195K 06-09 13:24 sda.blktrace.1\n -rw-r--r-- 1 root root 2.7M 06-09 13:25 trace_splice.out\n\nFollowing are some comparisons between TRACE_EVENT and blktrace:\n\nplug:\n  kjournald-480   [000]   303.084981: block_plug: [kjournald]\n  kjournald-480   [000]   303.084981:   8,0    P   N [kjournald]\n\nunplug_io:\n  kblockd/0-118   [000]   300.052973: block_unplug_io: [kblockd/0] 1\n  kblockd/0-118   [000]   300.052974:   8,0    U   N [kblockd/0] 1\n\nremap:\n  kjournald-480   [000]   303.085042: block_remap: 8,0 W 102736992 + 8 \u003c- (8,8) 33384\n  kjournald-480   [000]   303.085043:   8,0    A   W 102736992 + 8 \u003c- (8,8) 33384\n\nbio_backmerge:\n  kjournald-480   [000]   303.085086: block_bio_backmerge: 8,0 W 102737032 + 8 [kjournald]\n  kjournald-480   [000]   303.085086:   8,0    M   W 102737032 + 8 [kjournald]\n\ngetrq:\n  kjournald-480   [000]   303.084974: block_getrq: 8,0 W 102736984 + 8 [kjournald]\n  kjournald-480   [000]   303.084975:   8,0    G   W 102736984 + 8 [kjournald]\n\n  bash-2066  [001]  1072.953770:   8,0    G   N [bash]\n  bash-2066  [001]  1072.953773: block_getrq: 0,0 N 0 + 0 [bash]\n\nrq_complete:\n  konsole-2065  [001]   300.053184: block_rq_complete: 8,0 W () 103669040 + 16 [0]\n  konsole-2065  [001]   300.053191:   8,0    C   W 103669040 + 16 [0]\n\n  ksoftirqd/1-7   [001]  1072.953811:   8,0    C   N (5a 00 08 00 00 00 00 00 24 00) [0]\n  ksoftirqd/1-7   [001]  1072.953813: block_rq_complete: 0,0 N (5a 00 08 00 00 00 00 00 24 00) 0 + 0 [0]\n\nrq_insert:\n  kjournald-480   [000]   303.084985: block_rq_insert: 8,0 W 0 () 102736984 + 8 [kjournald]\n  kjournald-480   [000]   303.084986:   8,0    I   W 102736984 + 8 [kjournald]\n\nChangelog from v2 -\u003e v3:\n\n- use the newly introduced __dynamic_array().\n\nChangelog from v1 -\u003e v2:\n\n- use __string() instead of __array() to minimize the memory required\n  to store hex dump of rq-\u003ecmd().\n\n- support large pc requests.\n\n- add missing blk_fill_rwbs_rq() in block_rq_requeue TRACE_EVENT.\n\n- some cleanups.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A2DF669.5070905@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f57a8a1911342265e7acdc190333c4e9235a6632",
      "tree": "db7aecf9dc26311068a48da77022e0377bf5d3d6",
      "parents": [
        "1f8a6a10fb9437eac3f516ea4324a19087872f30"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Jun 05 14:11:30 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 09 12:33:30 2009 -0400"
      },
      "message": "ring-buffer: fix ret in rb_add_time_stamp\n\nThe update of ret got mistakenly added to the if statement of\nrb_try_to_discard. The variable ret should be 1 on commit and zero\notherwise.\n\n[ Impact: fix compiler warning and real bug ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1f8a6a10fb9437eac3f516ea4324a19087872f30",
      "tree": "944f73519ef205c3baccd130d93ed70f7e7bc790",
      "parents": [
        "918143e8b7d6153d7a83a3f854323407939f4a7e"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Mon Jun 08 18:18:39 2009 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 08 18:50:20 2009 -0400"
      },
      "message": "ring-buffer: pass in lockdep class key for reader_lock\n\nOn Sun, 7 Jun 2009, Ingo Molnar wrote:\n\u003e Testing tracer sched_switch: \u003c6\u003eStarting ring buffer hammer\n\u003e PASSED\n\u003e Testing tracer sysprof: PASSED\n\u003e Testing tracer function: PASSED\n\u003e Testing tracer irqsoff:\n\u003e \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\u003e PASSED\n\u003e Testing tracer preemptoff: PASSED\n\u003e Testing tracer preemptirqsoff: [ INFO: possible recursive locking detected ]\n\u003e PASSED\n\u003e Testing tracer branch: 2.6.30-rc8-tip-01972-ge5b9078-dirty #5760\n\u003e ---------------------------------------------\n\u003e rb_consumer/431 is trying to acquire lock:\n\u003e  (\u0026cpu_buffer-\u003ereader_lock){......}, at: [\u003cc109eef7\u003e] ring_buffer_reset_cpu+0x37/0x70\n\u003e\n\u003e but task is already holding lock:\n\u003e  (\u0026cpu_buffer-\u003ereader_lock){......}, at: [\u003cc10a019e\u003e] ring_buffer_consume+0x7e/0xc0\n\u003e\n\u003e other info that might help us debug this:\n\u003e 1 lock held by rb_consumer/431:\n\u003e  #0:  (\u0026cpu_buffer-\u003ereader_lock){......}, at: [\u003cc10a019e\u003e] ring_buffer_consume+0x7e/0xc0\n\nThe ring buffer is a generic structure, and can be used outside of\nftrace. If ftrace traces within the use of the ring buffer, it can produce\nfalse positives with lockdep.\n\nThis patch passes in a static lock key into the allocation of the ring\nbuffer, so that different ring buffers will have their own lock class.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1244477919.13761.9042.camel@twins\u003e\n\n[ store key in ring buffer descriptor ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "918143e8b7d6153d7a83a3f854323407939f4a7e",
      "tree": "34c0b1434516d146fc3811a6d071b052dd59342b",
      "parents": [
        "64edbc562034f2ec3fce382cb208fab40586d005",
        "563af16c30ede41eda2d614195d88e07f7c7103d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 05 16:50:29 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 05 16:50:29 2009 +0200"
      },
      "message": "Merge branch \u0027tip/tracing/ftrace-4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace\n"
    },
    {
      "commit": "64edbc562034f2ec3fce382cb208fab40586d005",
      "tree": "7fbfaaea9467d14a1a6ac5667ce01be5ccb9b635",
      "parents": [
        "43bd1236234cacbc18d1476a9b57e7a306efddf5",
        "0f6ce3de4ef6ff940308087c49760d068851c1a7"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jun 04 13:59:26 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jun 04 13:59:40 2009 +0200"
      },
      "message": "Merge branch \u0027tracing/ftrace\u0027 into tracing/core\n\nMerge reason: this mini-topic had outstanding problems that delayed\n              its merge, so it does not fast-forward.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "563af16c30ede41eda2d614195d88e07f7c7103d",
      "tree": "a56b4f3339b8850b8f1fd9064bb99d50cd99aa79",
      "parents": [
        "56d8bd3f0b98972312cad683947ec90b21011199"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Jun 03 11:10:44 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 03 11:10:44 2009 -0400"
      },
      "message": "tracing: add annotation to what type of stack trace is recorded\n\nThe current method of printing out a stack trace is to add a new line\nand print out the trace:\n\n    yum-updatesd-3120  [002]   573.691303:\n \u003d\u003e do_softirq\n \u003d\u003e irq_exit\n \u003d\u003e smp_apic_timer_interrupt\n \u003d\u003e apic_timer_interrupt\n\nThis looks a bit awkward, and if we have both stack and user stack traces\nrunning, it would be nice to have a title to tell them apart, although\nit is easy to tell by the output.\n\nThis patch adds an annotation to the start of the stack traces:\n\n            init-1     [003]   929.304979: \u003cstack trace\u003e\n \u003d\u003e user_path_at\n \u003d\u003e vfs_fstatat\n \u003d\u003e vfs_stat\n \u003d\u003e sys_newstat\n \u003d\u003e system_call_fastpath\n\n             cat-3459  [002]  1016.824040: \u003cuser stack trace\u003e\n \u003d\u003e  \u003c0000003aae6c0250\u003e\n \u003d\u003e  \u003c00007ffff4b06ae4\u003e\n \u003d\u003e  \u003c69636172742f6775\u003e\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "56d8bd3f0b98972312cad683947ec90b21011199",
      "tree": "8ed2bb43d0f00923dd81b5b2c19c91b09e3977c6",
      "parents": [
        "048dc50c5e7eada19ebabbad70b7966d14283d41"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jun 03 14:52:03 2009 +0100"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 03 10:29:48 2009 -0400"
      },
      "message": "tracing: fix multiple use of __print_flags and __print_symbolic\n\nHere is an updated patch to include the extra call to\ntrace_seq_init() as requested. This is vs. the latest\n-tip tree and fixes the use of multiple __print_flags\nand __print_symbolic in a single tracer. Also tested\nto ensure its working now:\n\nmount.gfs2-2534  [000]   235.850587: gfs2_glock_queue: 8.7 glock 1:2 dequeue PR\nmount.gfs2-2534  [000]   235.850591: gfs2_demote_rq: 8.7 glock 1:0 demote EX to NL flags:DI\nmount.gfs2-2534  [000]   235.850591: gfs2_glock_queue: 8.7 glock 1:0 dequeue EX\nglock_workqueue-2529  [000]   235.850666: gfs2_glock_state_change: 8.7 glock 1:0 state EX \u003d\u003e NL tgt:NL dmt:NL flags:lDpI\nglock_workqueue-2529  [000]   235.850672: gfs2_glock_put: 8.7 glock 1:0 state NL \u003d\u003e IV flags:I\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nLKML-Reference: \u003c1244037123.29604.603.camel@localhost.localdomain\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "048dc50c5e7eada19ebabbad70b7966d14283d41",
      "tree": "2d81fa88cfb5ebd5ee2622b4eb7632b1f369a567",
      "parents": [
        "f11b3f4e2932bfdcfc458ab8d1ece62724ceabfc"
      ],
      "author": {
        "name": "walimis",
        "email": "walimisdev@gmail.com",
        "time": "Wed Jun 03 16:01:30 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 03 10:25:30 2009 -0400"
      },
      "message": "tracing/events: fix output format of user stack\n\nAccording to \"events/ftrace/user_stack/format\", fix the output of\nuser stack.\n\nbefore fix:\n\n  sh-1073  [000]    31.137561:  \u003cb7f274fe\u003e \u003c-  \u003c0804e33c\u003e \u003c-  \u003c080835c1\u003e\n\nafter fix:\n\n  sh-1072  [000]    37.039329:\n \u003d\u003e  \u003cb7f8a4fe\u003e\n \u003d\u003e  \u003c0804e33c\u003e\n \u003d\u003e  \u003c080835c1\u003e\n\nSigned-off-by: walimis \u003cwalimisdev@gmail.com\u003e\nLKML-Reference: \u003c1244016090-7814-3-git-send-email-walimisdev@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f11b3f4e2932bfdcfc458ab8d1ece62724ceabfc",
      "tree": "7cfd2a8b955b27eea4c0d5860e9a92fdc91b8024",
      "parents": [
        "083a63b48e4dd0a6a2d44216720076dc81ebb255"
      ],
      "author": {
        "name": "walimis",
        "email": "walimisdev@gmail.com",
        "time": "Wed Jun 03 16:01:29 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 03 10:25:15 2009 -0400"
      },
      "message": "tracing/events: fix output format of kernel stack\n\nAccording to \"events/ftrace/kernel_stack/format\", output format of\nkernel stack should use \"\u003d\u003e\" instead of \"\u003c\u003d\".\n\nThe second problem is that we shouldn\u0027t skip the first entry in the stack,\nalthough it seems to be duplicated when used in the \"function\" tracer,\nbut events also use it. If we skip the first one, we will drop the topmost\nentry of the stack.\n\nThe last problem is that if the last entry is ULONG_MAX(0xffffffff), we should\ndrop it, otherwise it will print a NULL name line.\n\nbefore fix:\n\n      sh-1072  [000]   26.957239: sched_process_fork: parent sh:1072 child sh:1073\n      sh-1072  [000]   26.957262:\n \u003c\u003d syscall_call\n \u003c\u003d\n      sh-1072  [000]   26.957744: sched_switch: task sh:1072 [120] (R) \u003d\u003d\u003e sh:1073 [120]\n      sh-1072  [000]   26.957752:\n \u003c\u003d preempt_schedule\n \u003c\u003d wake_up_new_task\n \u003c\u003d do_fork\n \u003c\u003d sys_clone\n \u003c\u003d syscall_call\n \u003c\u003d\n\nAfter fix:\n\n      sh-1075  [000]    39.791848: sched_process_fork: parent sh:1075  child sh:1076\n      sh-1075  [000]    39.791871:\n \u003d\u003e sys_clone\n \u003d\u003e syscall_call\n      sh-1075  [000]    39.792713: sched_switch: task sh:1075 [120] (R) \u003d\u003d\u003e sh:1076 [120]\n      sh-1075  [000]    39.792722:\n \u003d\u003e schedule\n \u003d\u003e preempt_schedule\n \u003d\u003e wake_up_new_task\n \u003d\u003e do_fork\n \u003d\u003e sys_clone\n \u003d\u003e syscall_call\n\nSigned-off-by: walimis \u003cwalimisdev@gmail.com\u003e\nLKML-Reference: \u003c1244016090-7814-2-git-send-email-walimisdev@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "083a63b48e4dd0a6a2d44216720076dc81ebb255",
      "tree": "c63fe5fed8b44538ecb6870cbe99c45d32915f9e",
      "parents": [
        "ea05b57cc19234d8de9887c8a32c2e58e84b56ba"
      ],
      "author": {
        "name": "walimis",
        "email": "walimisdev@gmail.com",
        "time": "Wed Jun 03 16:01:28 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 03 10:24:44 2009 -0400"
      },
      "message": "tracing/trace_stack: fix the number of entries in the header\n\nThe last entry in the stack_dump_trace is ULONG_MAX, which is not\na valid entry, but max_stack_trace.nr_entries has accounted for it.\nSo when printing the header, we should decrease it by one.\nBefore fix, print as following, for example:\n\n\tDepth    Size   Location    (53 entries)\t\u003c--- should be 52\n\t-----    ----   --------\n  0)     3264     108   update_wall_time+0x4d5/0x9a0\n  ...\n 51)       80      80   syscall_call+0x7/0xb\n ^^^\n   it\u0027s correct.\n\nSigned-off-by: walimis \u003cwalimisdev@gmail.com\u003e\nLKML-Reference: \u003c1244016090-7814-1-git-send-email-walimisdev@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ea05b57cc19234d8de9887c8a32c2e58e84b56ba",
      "tree": "6153db3dab161d495207114359b8c09944567f0c",
      "parents": [
        "edd813bffc62a980bb4fb9b1243f31c1cce78da3"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Jun 03 09:30:10 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 03 10:15:25 2009 -0400"
      },
      "message": "ring-buffer: discard timestamps that are at the start of the buffer\n\nEvery buffer page in the ring buffer includes its own time stamp.\nWhen an event is recorded to the ring buffer with a delta time greater\nthan what can be held in the event header, a time stamp event is created.\n\nIf the the create timestamp falls over to the next buffer page, it is\nredundant because the buffer page holds a full time stamp. This patch\nwill try to discard the time stamp when it falls to the start of the\nnext page.\n\nThis change also fixes a issues with disarding events. If most events are\ndiscarded, timestamps will start to creep into the ring buffer. If we\ndo not discard the timestamps then they can fill up the ring buffer over\ntime and waste space.\n\nThis change will keep time stamps from filling up over another page. If\nsomething is recorded in the buffer page, and the rest is filtered, then\nthe time stamps can only fill up to the end of the page.\n\n[ Impact: prevent time stamps from filling ring buffer ]\n\nReported-by: Tim Bird \u003ctim.bird@am.sony.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "edd813bffc62a980bb4fb9b1243f31c1cce78da3",
      "tree": "45dd8b0ca7b74f05bd545a1c3c7c4d2137f1b1d0",
      "parents": [
        "a2023556409cf7fec5d67a26f7fcfa57c5a4086d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Jun 02 23:00:53 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 03 10:15:22 2009 -0400"
      },
      "message": "ring-buffer: try to discard unneeded timestamps\n\nThere are times that a race may happen that we add a timestamp in a\nnested write. This timestamp would just contain a zero delta and serves\nno purpose.\n\nNow that we have a way to discard events, this patch will try to discard\nthe timestamp instead of just wasting the space in the ring buffer.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a2023556409cf7fec5d67a26f7fcfa57c5a4086d",
      "tree": "85d8824dd8989c62dc8f28feb2ee79f570f6872f",
      "parents": [
        "0f6ce3de4ef6ff940308087c49760d068851c1a7"
      ],
      "author": {
        "name": "Tim Bird",
        "email": "tim.bird@am.sony.com",
        "time": "Tue Jun 02 17:06:54 2009 -0700"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 03 10:15:06 2009 -0400"
      },
      "message": "ring-buffer: fix bug in ring_buffer_discard_commit\n\nThere\u0027s a bug in ring_buffer_discard_commit.  The wrong\npointer is being compared in order to check if the event\ncan be freed from the buffer rather than discarded\n(i.e. marked as PAD).\n\nI noticed this when I was working on duration filtering.\nThe bug is not deadly - it just results in lots of wasted\nspace in the buffer.  All filtered events are left in\nthe buffer and marked as discarded, rather than being\nremoved from the buffer to make space for other events.\n\nUnfortunately, when I fixed this bug, I got errors doing a\nfiltered function trace.  Multiple TIME_EXTEND\nevents pile up in the buffer, and trigger the\nfollowing loop overage warning in rb_iter_peek():\n\nagain:\n\t...\n\tif (RB_WARN_ON(cpu_buffer, ++nr_loops \u003e 10))\n\t\treturn NULL;\n\nI\u0027m not sure what the best way is to fix this. I don\u0027t\nknow if I should extend the loop threshhold, or if I should\nmake the test more complex (ignore TIME_EXTEND\nevents), or just get rid of this loop check completely.\n\nNote that if I implement a workaround for this, then I\nsee another problem from rb_advance_iter().  I haven\u0027t\ntracked that one down yet.\n\nIn general, it seems like the case of removing filtered\nevents has not been working properly, and so some assumptions\nabout buffer invariant conditions need to be revisited.\n\nHere\u0027s the patch for the simple fix:\n\nCompare correct pointer for checking if an event can be\nfreed rather than left as discarded in the buffer.\n\nSigned-off-by: Tim Bird \u003ctim.bird@am.sony.com\u003e\nLKML-Reference: \u003c4A25BE9E.5090909@am.sony.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "84047e360af0394ac5861d433f26bbcf30f77dd1",
      "tree": "55848e2ca4856a64b348a57ecca495c2f065aa0f",
      "parents": [
        "f7e8b616ed1cc6f790b82324bce8a2a60295e5c2"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Jun 02 16:51:55 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 02 16:51:55 2009 -0400"
      },
      "message": "function-graph: always initialize task ret_stack\n\nOn creating a new task while running the function graph tracer, if\nwe fail to allocate the ret_stack, and then fail the fork, the\ncode will free the parent ret_stack. This is because the child\nduplicated the parent and currently points to the parent\u0027s ret_stack.\n\nThis patch always initializes the task\u0027s ret_stack to NULL.\n\n[ Impact: prevent crash of parent on low memory during fork ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "26c01624a2a40f8a4ddf6449b65c9b1c418d0e72",
      "tree": "eeff81aa0fa56ba1f2c180d4ec6e64cb31af898e",
      "parents": [
        "82310a3272d5a2a7652f5649ad8a55f58c8f74d9"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Jun 02 14:01:19 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 02 14:42:17 2009 -0400"
      },
      "message": "function-graph: add memory barriers for accessing task\u0027s ret_stack\n\nThe code that handles the tasks ret_stack allocation for every task\nassumes that only an interrupt can cause issues (even though interrupts\nare disabled).\n\nIn reality, the code is allocating the ret_stack for tasks that may be\nrunning on other CPUs and there are not efficient memory barriers to\nhandle this case.\n\n[ Impact: prevent crash due to using of uninitialized ret_stack variables ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "82310a3272d5a2a7652f5649ad8a55f58c8f74d9",
      "tree": "c909c7a3f1fd3430f64be1d4aa8aff84fdf45b04",
      "parents": [
        "179c498ae2998461fe436437a74dc29036fc7dcc"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Jun 02 12:26:07 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 02 14:41:50 2009 -0400"
      },
      "message": "function-graph: enable the stack after initialization of other variables\n\nThe function graph tracer checks if the task_struct has ret_stack defined\nto know if it is OK or not to use it. The initialization is done for\nall tasks by one process, but the idle tasks use the same initialization\nused by new tasks.\n\nIf an interrupt happens on an idle task that just had the ret_stack\ncreated, but before the rest of the initialization took place, then\nwe can corrupt the return address of the functions.\n\nThis patch moves the setting of the task_struct\u0027s ret_stack to after\nthe other variables have been initialized.\n\n[ Impact: prevent kernel panic on idle task when starting function graph ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "179c498ae2998461fe436437a74dc29036fc7dcc",
      "tree": "7794227a9cc45c2ec22d3e3b3062a96d34e8b0b9",
      "parents": [
        "88fc86c283d9c3854e67e4155808027bc2519eb6"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Jun 02 12:03:19 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 02 12:03:19 2009 -0400"
      },
      "message": "function-graph: only allocate init tasks if it was not already done\n\nWhen the function graph tracer is enabled, it calls the initialization\nneeded for the init tasks that would be called on all created tasks.\n\nThe problem is that this is called every time the function graph tracer\nis enabled, and the ret_stack is allocated for the idle tasks each time.\nThus, the old ret_stack is lost and a memory leak is created.\n\nThis is also dangerous because if an interrupt happened on another CPU\nwith the init task and the ret_stack is replaced, we then lose all the\nreturn pointers for the interrupt, and a crash would take place.\n\n[ Impact: fix memory leak and possible crash due to race ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0f6ce3de4ef6ff940308087c49760d068851c1a7",
      "tree": "26a732ee4dd5b0f5612f0385893ec483c6ba4ab3",
      "parents": [
        "112f38a7e36e9d688b389507136bf3af3e6d159b"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Jun 01 21:51:28 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 01 23:26:23 2009 -0400"
      },
      "message": "ftrace: do not profile functions when disabled\n\nA race was found that if one were to enable and disable the function\nprofiler repeatedly, then the system can panic. This was because a profiled\nfunction may be preempted just before disabling interrupts. While\nthe profiler is disabled and then reenabled, the preempted function\ncould start again, and access the hash as it is being initialized.\n\nThis just adds a check in the irq disabled part to check if the profiler\nis enabled, and if it is not then it will just exit.\n\nWhen the system is disabled, the profile_enabled variable is cleared\nbefore calling the unregistering of the function profiler. This\nunregistering calls stop machine which also acts as a synchronize schedule.\n\n[ Impact: fix panic in enabling/disabling function profiler ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "112f38a7e36e9d688b389507136bf3af3e6d159b",
      "tree": "e63fd02a143c57b5a786351e4f2643f2104e2346",
      "parents": [
        "1d080d6c3141623c92caaebe20e847cb99ccbb60"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Jun 01 15:16:05 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 01 23:26:02 2009 -0400"
      },
      "message": "tracing: make trace pipe recognize latency format flag\n\nThe trace_pipe did not recognize the latency format flag and would produce\ndifferent output than the trace file. The problem was partly due that\nthe trace flags in the iterator was not set as well as the trace_pipe\nzeros out part of the iterator (including the flags) to be able to use\nthe same routines as the trace file. trace_flags of the iterator should\nnot cause any problems when not zeroed out by for trace_pipe.\n\nReported-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ec081ddc3d90aab35bc0de19a358b964978837cf",
      "tree": "a8c4128a3eb8e5917cc67cd0a3aee8f1e93c9205",
      "parents": [
        "7fcb7c472f455d1711eb5a7633204dba8800a6d6"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jun 01 15:53:35 2009 +0100"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 01 23:25:29 2009 -0400"
      },
      "message": "tracing: add exports to use __print_symbolic and __print_flags from a module\n\nA patch to allow the use of __print_symbolic and __print_flags\nfrom a module. This allows the current GFS2 tracing patch to\nbuild.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nLKML-Reference: \u003c1243868015.29604.542.camel@localhost.localdomain\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7fcb7c472f455d1711eb5a7633204dba8800a6d6",
      "tree": "ba64de513bdbe5550c6fc08078a356359830ec99",
      "parents": [
        "a9c1c3abe1160a5632e48c929b02b740556bf423"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Jun 01 15:35:46 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 01 23:25:15 2009 -0400"
      },
      "message": "tracing/events: introduce __dynamic_array()\n\n__string() is limited:\n\n  - it\u0027s a char array, but we may want to define array with other types\n  - a source string should be available, but we may just know the string size\n\nWe introduce __dynamic_array() to break those limitations, and __string()\nbecomes a wrapper of it. As a side effect, now __get_str() can be used\nin TP_fast_assign but not only TP_print.\n\nTake XFS for example, we have the string length in the dirent, but the\nstring itself is not NULL-terminated, so __dynamic_array() can be used:\n\nTRACE_EVENT(xfs_dir2,\n\tTP_PROTO(struct xfs_da_args *args),\n\tTP_ARGS(args),\n\n\tTP_STRUCT__entry(\n\t\t__field(int, namelen)\n\t\t__dynamic_array(char, name, args-\u003enamelen + 1)\n\t\t...\n\t),\n\n\tTP_fast_assign(\n\t\tchar *name \u003d __get_str(name);\n\n\t\tif (args-\u003enamelen)\n\t\t\tmemcpy(name, args-\u003ename, args-\u003enamelen);\n\t\tname[args-\u003enamelen] \u003d \u0027\\0\u0027;\n\n\t\t__entry-\u003enamelen \u003d args-\u003enamelen;\n\t),\n\n\tTP_printk(\"name %.*s namelen %d\",\n\t\t  __entry-\u003enamelen ? __get_str(name) : NULL\n\t\t  __entry-\u003enamelen)\n);\n\n[ Impact: allow defining dynamic size arrays ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A2384D2.3080403@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "897f17a65389a26509bd0c79a9812d1c9ea8ea6f",
      "tree": "ec23bdc97840581c6f4881f6e427c66d72a1269c",
      "parents": [
        "5e0a093910876882f91f1d4b8a1635a099e6c7ba"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu May 28 16:31:21 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 01 23:23:55 2009 -0400"
      },
      "message": "tracing: combine the default tracers into one config\n\nBoth event tracer and sched switch plugin are selected by default\nby all generic tracers. But if no generic tracer is enabled, their options\nappear. But ether one of them will select the other, thus it only\nmakes sense to have the default tracers be selected by one option.\n\n[ Impact: clean up kconfig menu ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "5e0a093910876882f91f1d4b8a1635a099e6c7ba",
      "tree": "2e9fb5caa629c2f1f77f82a78863366b82ad05f6",
      "parents": [
        "2af15d6a44b871ad4c2a651302374cde8f335480"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu May 28 15:50:13 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 01 23:23:30 2009 -0400"
      },
      "message": "tracing: fix config options to not show when automatically selected\n\nThere are two options that are selected by all tracers, but we want\nto have those options available when no tracer is selected. These are\n\n The event tracer and sched switch tracer.\n\nThe are enabled by all tracers, but if a tracer is not selected we want\nthe options to appear. All tracers including them select TRACING.\nThus what we would like to do is:\n\n  config EVENT_TRACER\n\tbool \"prompt\"\n\tdepends on TRACING\n\tselect TRACING\n\nBut that gives us a bug in the kbuild system since we just created a\ncircular dependency. We only want the prompt to show when TRACING is off.\n\nThis patch adds GENERIC_TRACER that all tracers will select instead of\nTRACING. The two options (sched switch and event tracer) will select\nTRACING directly and depend on !GENERIC_TRACER. This solves the cicular\ndependency.\n\n[ Impact: hide options that are selected by default ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2af15d6a44b871ad4c2a651302374cde8f335480",
      "tree": "39f06d511e3e1d1970fe4571128549c1c26230c1",
      "parents": [
        "f2aebaee653a35b01c3665de2cbb1e31456b8ea8"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu May 28 13:37:24 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jun 01 23:23:10 2009 -0400"
      },
      "message": "ftrace: add kernel command line function filtering\n\nWhen using ftrace\u003dfunction on the command line to trace functions\non boot up, one can not filter out functions that are commonly called.\n\nThis patch adds two new ftrace command line commands.\n\n  ftrace_notrace\u003dfunction-list\n  ftrace_filter\u003dfunction-list\n\nWhere function-list is a comma separated list of functions to filter.\nThe ftrace_notrace will make the functions listed not be included\nin the function tracing, and ftrace_filter will only trace the functions\nlisted.\n\nThese two act the same as the debugfs/tracing/set_ftrace_notrace and\ndebugfs/tracing/set_ftrace_filter respectively.\n\nThe simple glob expressions that are allowed by the filter files can also\nbe used by the command line interface.\n\n\tftrace_notrace\u003drcu*,*lock,*spin*\n\nWill not trace any function that starts with rcu, ends with lock, or has\nthe word spin in it.\n\nNote, if the self tests are enabled, they may interfere with the filtering\nset by the command lines.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "43bd1236234cacbc18d1476a9b57e7a306efddf5",
      "tree": "087fd59a2f98e85fdf017267998a7364a47536c3",
      "parents": [
        "dbd3fbdfeecfad4e71139db05d72560c3583e2a9"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat May 30 04:25:30 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jun 02 01:18:33 2009 +0200"
      },
      "message": "tracing/stat: remove unappropriate safe walk on list\n\nregister_stat_tracer() uses list_for_each_entry_safe\nto check whether a tracer is already present in the list.\nBut we don\u0027t delete anything from the list here, so\nwe don\u0027t need the safe version\n\n[ Impact: cleanup list use is stat tracing ]\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "dbd3fbdfeecfad4e71139db05d72560c3583e2a9",
      "tree": "51cf7d906bd73d91398dcc1142812f244fb0c9f6",
      "parents": [
        "e16228069083a2f6b94383ac5739aea7a0f38ce4"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed May 27 11:42:46 2009 +0800"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jun 02 01:18:18 2009 +0200"
      },
      "message": "tracing/stat: do some cleanups\n\n- remove duplicate code in stat_seq_init()\n- update comments to reflect the change from stat list to stat rbtree\n\n[ Impact: clean up ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "e16228069083a2f6b94383ac5739aea7a0f38ce4",
      "tree": "97bf6074fff3ea29daa732f92d29472cf803165a",
      "parents": [
        "b3dd7ba7d862707800c7ac45068f14ade2b65155"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed May 27 11:04:48 2009 +0800"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jun 02 01:18:03 2009 +0200"
      },
      "message": "tracing/stat: remember to free root node\n\nWhen closing a trace_stat file, we destroy the rbtree constructed during\nfile open, but there is memory leak that the root node is not freed.\n\n[ Impact: fix memory leak when closing a trace_stat file ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "b3dd7ba7d862707800c7ac45068f14ade2b65155",
      "tree": "2b39cf635ea0c8acb52bea38edd6a8db843644d4",
      "parents": [
        "8f184f27300f66f6dcc8296c2dae7a1fbe8429c9"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed May 27 11:04:26 2009 +0800"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jun 02 01:17:49 2009 +0200"
      },
      "message": "tracing/stat: change dummpy_cmp() to return -1\n\nCurrently the output of trace_stat/workqueues is totally reversed:\n\n # cat /debug/tracing/trace_stat/workqueues\n    ...\n    1       17       17      210       37   `-blk_unplug_work+0x0/0x57\n    1     3779     3779      181       11   |-cfq_kick_queue+0x0/0x2f\n    1     3796     3796                     kblockd/1:120\n    ...\n\nThe correct output should be:\n\n    1     3796     3796                     kblockd/1:120\n    1     3779     3779      181       11   |-cfq_kick_queue+0x0/0x2f\n    1       17       17      210       37   `-blk_unplug_work+0x0/0x57\n\nIt\u0027s caused by \"tracing/stat: replace linked list by an rbtree for\nsorting\"\n(53059c9b67a62a3dc8c80204d3da42b9267ea5a0).\n\ndummpy_cmp() should return -1, so rb_node will always be inserted as\nright-most node in the rbtree, thus we sort the output in ascending\norder.\n\n[ Impact: fix the output of trace_stat/workqueues ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "8f184f27300f66f6dcc8296c2dae7a1fbe8429c9",
      "tree": "a21aa4d88a11217bdd9eaaf31b2189d8b6b45b5b",
      "parents": [
        "0d64f8342de26d02451900b1aad94716fe92c4ab"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat May 16 06:24:36 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jun 02 01:17:35 2009 +0200"
      },
      "message": "tracing/stat: replace linked list by an rbtree for sorting\n\nWhen the stat tracing framework prepares the entries from a tracer\nto output them to the user, it starts by computing a linear sort\nthrough a linked list to give the entries ordered by relevance\nto the user.\n\nThis is quite ugly and causes a small latency when we begin to\nread the file.\n\nThis patch changes that by turning the linked list into a red-black\ntree. Athough the whole iteration using the start and next tracer\ncallbacks while opening the file remain the same, it is now much\nmore fast and scalable.\n\nThe rbtree guarantees O(log(n)) insertions whereas a linked\nlist with linear sorting brought us a O(n) despair. Now the\n(visible) latency has disapeared.\n\n[ Impact: kill the latency while starting to read a stat tracer file ]\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "0d64f8342de26d02451900b1aad94716fe92c4ab",
      "tree": "b74741815a673be584141dcd3691daaeea0fc053",
      "parents": [
        "f3c4ae26e93d354152196b62797ba86ad86dd0cc"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat May 16 05:58:49 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jun 02 01:17:17 2009 +0200"
      },
      "message": "tracing/stat: replace trace_stat_session by stat_session\n\nThe \"trace\" prefix in struct trace_stat_session type is annoying while\nreading the trace_stat.c file. It makes the lines longer, and\nis not that much useful to explain the sense of this type.\n\nJust keep \"struct stat_session\" for this type.\n\n[ Impact: make the code a bit more readable ]\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "f3c4ae26e93d354152196b62797ba86ad86dd0cc",
      "tree": "62a6ea34e64bffaaa192d05c42409f4ef1d361d5",
      "parents": [
        "b8867164f05791a6b5363bd51c1274e03600886e"
      ],
      "author": {
        "name": "Zhaolei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Mon Apr 20 15:02:17 2009 +0800"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jun 02 01:14:26 2009 +0200"
      },
      "message": "trace_workqueue: remove blank line between each cpu\n\nThe blankline between each cpu\u0027s workqueue stat is not necessary, because\nthe cpu number is enough to part them by eye.\nOld style also caused a blankline below headline, and made code complex\nby using lock, disableirq and get cpu var.\n\nOld style:\n # CPU  INSERTED  EXECUTED   NAME\n # |      |         |          |\n\n   0   8644       8644       events/0\n   0      0          0       cpuset\n   ...\n   0      1          1       kdmflush\n\n   1  35365      35365       events/1\n   ...\n\nNew style:\n # CPU  INSERTED  EXECUTED   NAME\n # |      |         |          |\n\n   0   8644       8644       events/0\n   0      0          0       cpuset\n   ...\n   0      1          1       kdmflush\n   1  35365      35365       events/1\n   ...\n\n[ Impact: provide more readable code ]\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "b8867164f05791a6b5363bd51c1274e03600886e",
      "tree": "781be4716c204703143db86606372b64db6dc835",
      "parents": [
        "1fdfca9c577aac96a559c1ea68f5c9156f17d636"
      ],
      "author": {
        "name": "Zhaolei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Mon Apr 20 14:59:36 2009 +0800"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jun 02 01:13:46 2009 +0200"
      },
      "message": "trace_workqueue: remove cpu_workqueue_stats-\u003efirst_entry\n\ncpu_workqueue_stats-\u003efirst_entry is useless because we can retrieve the\nheader of a cpu workqueue using:\nif (\u0026cpu_workqueue_stats-\u003elist \u003d\u003d workqueue_cpu_stat(cpu)-\u003elist.next)\n\n[ Impact: cleanup ]\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "1fdfca9c577aac96a559c1ea68f5c9156f17d636",
      "tree": "fbbeeba504037440e42cce056781d56ecebfc4b1",
      "parents": [
        "fb39125fd79a25c5002f3b45cf4c80e3fa6b961b"
      ],
      "author": {
        "name": "Zhaolei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Mon Apr 20 14:58:26 2009 +0800"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jun 02 01:13:05 2009 +0200"
      },
      "message": "trace_workqueue: use list_for_each_entry() instead of list_for_each_entry_safe()\n\nNo need to use list_for_each_entry_safe() in iteration without deleting\nany node, we can use list_for_each_entry() instead.\n\n[ Impact: cleanup ]\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "fb39125fd79a25c5002f3b45cf4c80e3fa6b961b",
      "tree": "96a9d274896f94306bc4d4972eca2153934f4814",
      "parents": [
        "f2aebaee653a35b01c3665de2cbb1e31456b8ea8"
      ],
      "author": {
        "name": "Zhaolei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Fri Apr 17 15:15:51 2009 +0800"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jun 02 01:10:40 2009 +0200"
      },
      "message": "ftrace, workqueuetrace: make workqueue tracepoints use TRACE_EVENT macro\n\nv3: zhaolei@cn.fujitsu.com: Change TRACE_EVENT definition to new format\n    introduced by Steven Rostedt: consolidate trace and trace_event headers\nv2: kosaki@jp.fujitsu.com: print the function names instead of addr, and zap\n    the work addr\nv1: zhaolei@cn.fujitsu.com: Make workqueue tracepoints use TRACE_EVENT macro\n\nTRACE_EVENT is a more generic way to define tracepoints.\nDoing so adds these new capabilities to the tracepoints:\n\n  - zero-copy and per-cpu splice() tracing\n  - binary tracing without printf overhead\n  - structured logging records exposed under /debug/tracing/events\n  - trace events embedded in function tracer output and other plugins\n  - user-defined, per tracepoint filter expressions\n\nThen, this patch converts DEFINE_TRACE to TRACE_EVENT in workqueue related\ntracepoints.\n\n[ Impact: expand workqueue tracer to events tracing ]\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "5b6045a906f48d37591365c5dcdd6d1d146bfd4a",
      "tree": "33a7b9513c84e442eda0159ee294a02f33589f55",
      "parents": [
        "c2adae0970ca1db8adb92fb56ae3bcabd916e8bd"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Tue May 26 17:28:02 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu May 28 01:21:03 2009 +0200"
      },
      "message": "trace: disable preemption before taking raw spinlocks\n\ns390 code uses smp_processor_id() in __raw_spin_lock() code which\nreveals that a (raw) spinlock is taken without preemption disabled.\nThis can potentially deadlock.\n\nTo fix this explicitly disable and enable preemption.\n\nBUG: using smp_processor_id() in preemptible [00000000] code: cat/2278\ncaller is trace_find_cmdline+0x40/0xfc\nCPU: 0 Not tainted 2.6.30-rc7-dirty #39\nProcess cat (pid: 2278, task: 000000003faedb68, ksp: 000000003b33b988)\n000000003b33b988 000000003b33bae0 0000000000000002 0000000000000000\n       000000003b33bb80 000000003b33baf8 000000003b33baf8 00000000000175d6\n       0000000000000001 000000003b33b988 000000003f9b0000 000000000000000b\n       000000000000000c 000000003b33bb40 000000003b33bae0 0000000000000000\n       0000000000000000 00000000000175d6 000000003b33bae0 000000003b33bb28\nCall Trace:\n([\u003c00000000000174b2\u003e] show_trace+0x112/0x170)\n [\u003c0000000000017582\u003e] show_stack+0x72/0x100\n [\u003c0000000000441538\u003e] dump_stack+0xc8/0xd8\n [\u003c000000000025c350\u003e] debug_smp_processor_id+0x114/0x130\n [\u003c00000000000bf0e4\u003e] trace_find_cmdline+0x40/0xfc\n [\u003c00000000000c35d4\u003e] trace_print_context+0x58/0xac\n [\u003c00000000000bb676\u003e] print_trace_line+0x416/0x470\n [\u003c00000000000bc8fe\u003e] s_show+0x4e/0x428\n [\u003c000000000013834e\u003e] seq_read+0x36a/0x5d4\n [\u003c0000000000112a78\u003e] vfs_read+0xc8/0x174\n [\u003c0000000000112c58\u003e] SyS_read+0x74/0xc4\n [\u003c000000000002c7ae\u003e] sysc_noemu+0x10/0x16\n [\u003c000002000012436c\u003e] 0x2000012436c\n1 lock held by cat/2278:\n #0:  (\u0026p-\u003elock){+.+.+.}, at: [\u003c0000000000138056\u003e] seq_read+0x72/0x5d4\n\n[ Impact: fix preempt-unsafe raw spinlock ]\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "0f4fc29dd68dfab9c6ddd5d087d34a5b6818cb00",
      "tree": "af3d210c8db9adcf117580c949fb708badcb520b",
      "parents": [
        "62ba180e80f4194a498585ac0e4c07daa8ca08d1"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed May 20 19:21:47 2009 -0400"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue May 26 20:31:50 2009 +0200"
      },
      "message": "tracing: add __print_symbolic to trace events\n\nThis patch adds __print_symbolic which is similar to __print_flags but\nworks for an enumeration type instead. That is, there is only a one to one\nmapping between the values and the symbols. When a match is made, then\nit is printed, otherwise the hex value is outputed.\n\n[ Impact: add interface for showing symbol names in events ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "be74b73a57645cc253d881ab0c1014eb64b9cf22",
      "tree": "83f14ae9a43fe98a1363d30d20d60245e1115382",
      "parents": [
        "0e907c99391362385c8e3af2c43b904dd1fd5d73"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue May 26 20:25:22 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue May 26 20:25:22 2009 +0200"
      },
      "message": "tracing: add __print_flags for events\n\nDevelopers have been asking for the ability in the ftrace event tracer\nto display names of bits in a flags variable.\n\nInstead of printing out c2, it would be easier to read FOO|BAR|GOO,\nassuming that FOO is bit 1, BAR is bit 6 and GOO is bit 7.\n\nSome examples where this would be useful are the state flags in a context\nswitch, kmalloc flags, and even permision flags in accessing files.\n\n[\n  v2 changes include:\n\n  Frederic Weisbecker\u0027s idea of using a mask instead of bits,\n  thus we can output GFP_KERNEL instead of GPF_WAIT|GFP_IO|GFP_FS.\n\n  Li Zefan\u0027s idea of allowing the caller of __print_flags to add their\n  own delimiter (or no delimiter) where we can get for file permissions\n  rwx instead of r|w|x.\n]\n\n[\n  v3 changes:\n\n   Christoph Hellwig\u0027s idea of using an array instead of va_args.\n]\n\n[ Impact: better displaying of flags in trace output ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "0e907c99391362385c8e3af2c43b904dd1fd5d73",
      "tree": "86f1fc73644d4a7db5e1cbc96434aa89d02879cc",
      "parents": [
        "b11c53e12f94a46b50bccc7a1a953d7ca1d54a31"
      ],
      "author": {
        "name": "Zhaolei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Mon May 25 18:13:59 2009 +0800"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue May 26 03:30:31 2009 +0200"
      },
      "message": "ftrace: clean up of using ftrace_event_enable_disable()\n\nAlways use ftrace_event_enable_disable() to enable/disable an event\nso that we can factorize out the event toggling code.\n\n[ Impact: factorize and cleanup event tracing code ]\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nLKML-Reference: \u003c4A14FDFE.2080402@cn.fujitsu.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "b11c53e12f94a46b50bccc7a1a953d7ca1d54a31",
      "tree": "a0d658e31ffd7f05834c6026874cd4120a35dd29",
      "parents": [
        "29fcefba8a2f0fea11e2b721fe174a1832801284"
      ],
      "author": {
        "name": "Zhaolei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Mon May 25 18:11:59 2009 +0800"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue May 26 03:03:21 2009 +0200"
      },
      "message": "ftrace: Add task_comm support for trace_event\n\nIf we enable a trace event alone without any tracer running (such as\nfunction tracer, sched switch tracer, etc...) it can\u0027t output enough\ntask command information.\n\nWe need to use the tracing_{start/stop}_cmdline_record() helpers\nwhich are designed to keep track of cmdlines for any tasks that\nwere scheduled during the tracing.\n\nBefore this patch:\n # echo 1 \u003e debugfs/tracing/events/sched/sched_switch/enable\n # cat debugfs/tracing/trace\n # tracer: nop\n #\n #           TASK-PID    CPU#    TIMESTAMP  FUNCTION\n #              | |       |          |         |\n            \u003c...\u003e-2289  [000] 526276.724790: sched_switch: task bash:2289 [120] \u003d\u003d\u003e sshd:2287 [120]\n            \u003c...\u003e-2287  [000] 526276.725231: sched_switch: task sshd:2287 [120] \u003d\u003d\u003e bash:2289 [120]\n            \u003c...\u003e-2289  [000] 526276.725452: sched_switch: task bash:2289 [120] \u003d\u003d\u003e sshd:2287 [120]\n            \u003c...\u003e-2287  [000] 526276.727181: sched_switch: task sshd:2287 [120] \u003d\u003d\u003e swapper:0 [140]\n           \u003cidle\u003e-0     [000] 526277.032734: sched_switch: task swapper:0 [140] \u003d\u003d\u003e events/0:5 [115]\n            \u003c...\u003e-5     [000] 526277.032782: sched_switch: task events/0:5 [115] \u003d\u003d\u003e swapper:0 [140]\n ...\n\nAfter this patch:\n # tracer: nop\n #\n #           TASK-PID    CPU#    TIMESTAMP  FUNCTION\n #              | |       |          |         |\n             bash-2269  [000] 527347.989229: sched_switch: task bash:2269 [120] \u003d\u003d\u003e sshd:2267 [120]\n             sshd-2267  [000] 527347.990960: sched_switch: task sshd:2267 [120] \u003d\u003d\u003e bash:2269 [120]\n             bash-2269  [000] 527347.991143: sched_switch: task bash:2269 [120] \u003d\u003d\u003e sshd:2267 [120]\n             sshd-2267  [000] 527347.992959: sched_switch: task sshd:2267 [120] \u003d\u003d\u003e swapper:0 [140]\n           \u003cidle\u003e-0     [000] 527348.531989: sched_switch: task swapper:0 [140] \u003d\u003d\u003e events/0:5 [115]\n         events/0-5     [000] 527348.532115: sched_switch: task events/0:5 [115] \u003d\u003d\u003e swapper:0 [140]\n ...\n\nChangelog:\nv1-\u003ev2: Update Kconfig to select CONTEXT_SWITCH_TRACER in\n        ENABLE_EVENT_TRACING\nv2-\u003ev3: v2 can solve problem that was caused by config EVENT_TRACING\n        alone, but when CONFIG_FTRACE is off and CONFIG_TRACING is\n        selected by other config, compile fail happened again.\n        This version solves it.\n\n[ Impact: fix incomplete output of event tracing ]\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c4A14FDFE.2080402@cn.fujitsu.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "4f5359685af6de7dca101393dc606620adbe963f",
      "tree": "1f9dc3fb9299008daa6a5fb6f03945008ea4a4f9",
      "parents": [
        "5537937696c55530447c20aa27daccb8d0d29b33"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Mon May 18 19:35:34 2009 +0800"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon May 25 23:53:41 2009 +0200"
      },
      "message": "tracing: add trace_event_read_lock()\n\nI found that there is nothing to protect event_hash in\nftrace_find_event(). Rcu protects the event hashlist\nbut not the event itself while we use it after its extraction\nthrough ftrace_find_event().\n\nThis lack of a proper locking in this spot opens a race\nwindow between any event dereferencing and module removal.\n\nEg:\n\n--Task A--\n\nprint_trace_line(trace) {\n  event \u003d find_ftrace_event(trace)\n\n--Task B--\n\ntrace_module_remove_events(mod) {\n  list_trace_events_module(ev, mod) {\n    unregister_ftrace_event(ev-\u003eevent) {\n      hlist_del(ev-\u003eevent-\u003enode)\n        list_del(....)\n    }\n  }\n}\n|--\u003e module removed, the event has been dropped\n\n--Task A--\n\n  event-\u003eprint(trace); // Dereferencing freed memory\n\nIf the event retrieved belongs to a module and this module\nis concurrently removed, we may end up dereferencing a data\nfrom a freed module.\n\nRCU could solve this, but it would add latency to the kernel and\nforbid tracers output callbacks to call any sleepable code.\nSo this fix converts \u0027trace_event_mutex\u0027 to a read/write semaphore,\nand adds trace_event_read_lock() to protect ftrace_find_event().\n\n[ Impact: fix possible freed memory dereference in ftrace ]\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c4A114806.7090302@cn.fujitsu.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "e4b636366c00738b9609cda307014d71b1225b7f",
      "tree": "760b67b3624eda62e943e48ce93635c30a5b47bf",
      "parents": [
        "b9ed7252d219c1c663944bf03846eabb515dbe75",
        "279e677faa775ad16e75c32e1bf4a37f8158bc61"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 20:25:34 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 20:25:34 2009 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.31\n\nConflicts:\n\tdrivers/block/hd.c\n\tdrivers/block/mg_disk.c\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5537937696c55530447c20aa27daccb8d0d29b33",
      "tree": "e3207e5a491822238ed299a5e7d96dfc72b1c43a",
      "parents": [
        "fd51d251e4cdb21f68e9dbc4336514d64a105a79"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "tom.leiming@gmail.com",
        "time": "Mon May 18 23:04:46 2009 +0800"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed May 20 19:23:11 2009 +0200"
      },
      "message": "ftrace: fix check for return value of register_module_notifier in event_trace_init\n\nregister_module_notifier() returns zero in the success case.\nSo fix the inverted fail case check in trace events modules\nhandler.\n\n[ Impact: fix spurious warning on ftrace initialization]\n\nReported-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "fd51d251e4cdb21f68e9dbc4336514d64a105a79",
      "tree": "478fb26aea6b7e79532f33cc5949b4fece18cdfc",
      "parents": [
        "143c145e3a475065a4be661468d0df1bd0b25f74"
      ],
      "author": {
        "name": "Stefan Raspl",
        "email": "raspl@linux.vnet.ibm.com",
        "time": "Tue May 19 09:59:08 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue May 19 10:29:21 2009 +0200"
      },
      "message": "blktrace: remove debugfs entries on bad path\n\ndebugfs directory entries for devices are not removed on some\nof the failure pathes in do_blk_trace_setup().\nOne way to reproduce is to start blktrace on multiple devices\nwith insufficient Vmalloc space: Devices will fail with\na message like this:\n\n\tBLKTRACESETUP(2) /dev/sdu failed: 5/Input/output error\n\nIf so, the respective entries in debugfs\n(e.g. /sys/kernel/debug/block/sdu) will remain and subsequent\nattempts to start blktrace on the respective devices will not\nsucceed due to existing directories.\n\n[ Impact: fix /debug/tracing file cleanup corner case ]\n\nSigned-off-by: Stefan Raspl \u003cstefan.raspl@linux.vnet.ibm.com\u003e\nAcked-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: schwidefsky@de.ibm.com\nCc: heiko.carstens@de.ibm.com\nLKML-Reference: \u003c4A1266CC.5040801@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "24ed0c4bfc7d2d7507bb9d50f7f3bbdcd85d76dd",
      "tree": "954ff0ff7f4249ec7a2e9e9233bb4d8e0670f9ce",
      "parents": [
        "1079cac0f4eb7d968395378b1625979d4c818dd6"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "tom.leiming@gmail.com",
        "time": "Sun May 17 15:31:38 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 18 10:24:13 2009 +0200"
      },
      "message": "tracing: fix check for return value of register_module_notifier\n\nreturn zero should be correct, so fix it.\n\n[ Impact: eliminate incorrect syslog message ]\n\nSigned-off-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c1242545498-7285-1-git-send-email-tom.leiming@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "88fc86c283d9c3854e67e4155808027bc2519eb6",
      "tree": "2652b1a9d0299e1cc4d71573b2ac5e18ecae01c8",
      "parents": [
        "aa512a27e9e8ed32f31b15eec67ab1ceca33839b"
      ],
      "author": {
        "name": "GeunSik Lim",
        "email": "leemgs1@gmail.com",
        "time": "Thu May 14 17:23:38 2009 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri May 15 19:43:22 2009 +0200"
      },
      "message": "tracing: Append prompt in /debug/tracing/README file\n\nappend prompt in /debug/tracing/README file.\n\nThis is trivial issue. Fix typo Mini Howto file(README) for ftrace.\n\n[ Impact: cleanup ]\n\nSigned-off-by: GeunSik Lim \u003cgeunsik.lim@samsung.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: williams \u003cwilliams@redhat.com\u003e\nLKML-Reference: \u003c1242289418.31161.45.camel@centos51\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5872144f64b34a5942f6b4acedc90b02de72c58b",
      "tree": "65ab10576155c05d7ac319197896a31721f61499",
      "parents": [
        "8cd995b6deedf98b7694ed32a786ee7f793d1eec"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri May 15 11:07:56 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 14 23:55:12 2009 -0400"
      },
      "message": "tracing/filters: fix off-by-one bug\n\nWe should leave the last slot for the ending \u0027\\0\u0027.\n\n[ Impact: fix possible crash when the length of an operand is 128 ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A0CDC8C.30602@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8cd995b6deedf98b7694ed32a786ee7f793d1eec",
      "tree": "6c423c242027eacf07018ae9e0488ef035337c68",
      "parents": [
        "1ec7c4849c214fc78b023230264399836ea3b245"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri May 15 11:07:27 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 14 23:55:10 2009 -0400"
      },
      "message": "tracing/filters: add missing unlock in a failure path\n\n[ Impact: fix deadlock in a rare case we fail to allocate memory ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A0CDC6F.7070200@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1ec7c4849c214fc78b023230264399836ea3b245",
      "tree": "52a53fcd4d7ea0cd94b65bd8c6bf20402e3356af",
      "parents": [
        "29a679754b1a2581ee456eada6c2de7ce95068bb"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu May 14 23:40:06 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 14 23:40:06 2009 -0400"
      },
      "message": "tracing: stop stack trace on first empty entry\n\nThe stack tracer stores eight entries in the ring buffer when an event\ntraces the stack. The output outputs all eight entries regardless of\nhow many entries were recorded.\n\nThis patch breaks out of the loop when a null entry is discovered.\n\n[ Impact: only print the stack that is recorded ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "168b6b1d0594c7866caa73b12f3b8d91075695f2",
      "tree": "2dd8d0e8b6ffc87360180c878a87b3632625b3f0",
      "parents": [
        "88eb0125362f2ab272cbaf84252cf101ddc2dec9"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 11 22:11:05 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon May 11 23:33:06 2009 -0400"
      },
      "message": "ring-buffer: move code around to remove some branches\n\nThis is a bit of micro-optimizations. But since the ring buffer is used\nin tracing every function call, it is an extreme hot path. Every nanosecond\ncounts.\n\nThis change shows over 5% improvement in the ring-buffer-benchmark.\n\n[ Impact: more efficient code ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "88eb0125362f2ab272cbaf84252cf101ddc2dec9",
      "tree": "acf8bac454d61874f35bf5e20cd30b448811608a",
      "parents": [
        "0f0c85fc80adbbd2265d89867d743f929d516805"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 11 16:28:23 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon May 11 23:14:03 2009 -0400"
      },
      "message": "ring-buffer: use internal time stamp function\n\nThe ring_buffer_time_stamp that is exported adds a little more overhead\nthan is needed for using it internally. This patch adds an internal\ntimestamp function that can be inlined (a single line function)\nand used internally for the ring buffer.\n\n[ Impact: a little less overhead to the ring buffer ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0f0c85fc80adbbd2265d89867d743f929d516805",
      "tree": "0095c5a83727863eb38027c41b9a0cd74c1d283d",
      "parents": [
        "be957c447f7233a67904a1b11eb3ab61e702bf4d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 11 16:08:00 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon May 11 23:12:34 2009 -0400"
      },
      "message": "ring-buffer: small optimizations\n\nDoing some small changes in the fast path of the ring buffer recording\nsaves over 3% in the ring-buffer-benchmark test.\n\n[ Impact: a little faster ring buffer recording ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "be957c447f7233a67904a1b11eb3ab61e702bf4d",
      "tree": "fa92f4d46678c9a200ce9f92c1445da3bd71c74f",
      "parents": [
        "1cd8d7358948909ab80b254eb14bcebc555ad417"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 11 14:42:53 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon May 11 14:42:53 2009 -0400"
      },
      "message": "ring-buffer: move calculation of event length\n\nThe event length is calculated and passed in to rb_reserve_next_event\nin two different locations. Having rb_reserve_next_event do the\ncalculations directly makes only one location to do the change and\ncauses the calculation to be inlined by gcc.\n\nBefore:\n   text    data     bss     dec     hex filename\n  16538      24      12   16574    40be kernel/trace/ring_buffer.o\n\nAfter:\n   text    data     bss     dec     hex filename\n  16490      24      12   16526    408e kernel/trace/ring_buffer.o\n\n[ Impact: smaller more efficient code ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1cd8d7358948909ab80b254eb14bcebc555ad417",
      "tree": "ff7d2bcd4f7b4ea12af66771d6a204b786c134c5",
      "parents": [
        "d988ff94c1074c4c914235c8591bcceafb585ecf"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 11 14:08:09 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon May 11 14:19:00 2009 -0400"
      },
      "message": "ring-buffer: remove type parameter from rb_reserve_next_event\n\nThe rb_reserve_next_event is only called for the data type (type \u003d 0).\nThere is no reason to pass in the type to the function.\n\nBefore:\n   text    data     bss     dec     hex filename\n  16554      24      12   16590    40ce kernel/trace/ring_buffer.o\n\nAfter:\n   text    data     bss     dec     hex filename\n  16538      24      12   16574    40be kernel/trace/ring_buffer.o\n\n[ Impact: cleaner, smaller and slightly more efficient code ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "d988ff94c1074c4c914235c8591bcceafb585ecf",
      "tree": "46dc84aa84e04ae92cd66ed5cbf7a55452dcdb1c",
      "parents": [
        "5a772b2b3c68e7e0b503c5a48469113bb0634314"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 08 11:03:57 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon May 11 13:22:26 2009 -0400"
      },
      "message": "ring-buffer: check for divide by zero in ring-buffer-benchmark\n\nAlthough we check if \"missed\" is not zero, we divide by hit + missed,\nand the addition can possible overflow and become a divide by zero.\n\nThis patch checks for this case, and will report it when it happens\nthen modify \"hit\" to make the calculation be non zero.\n\n[ Impact: prevent possible divide by zero in ring-buffer-benchmark ]\n\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "5a772b2b3c68e7e0b503c5a48469113bb0634314",
      "tree": "f6c1a0c28cd9225778a4348aded45bae8b634126",
      "parents": [
        "79c5d3ce614d8fe706545c7bca2158b63db6bb5e"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 08 10:56:33 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon May 11 13:22:26 2009 -0400"
      },
      "message": "ring-buffer: replace constants with time macros in ring-buffer-benchmark\n\nThe use of numeric constants is discouraged. It is cleaner and more\ndescriptive to use macros for constant time conversions.\n\nThis patch also removes an extra new line.\n\n[ Impact: more descriptive time conversions ]\n\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "049862579333cc6cd9e6edfd6987cd0addfd8c59",
      "tree": "171ce56995657c0dd92825b733afbd88242a3887",
      "parents": [
        "4671c79408a3f8a5a6a45e39c4c164dada3a5678"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon May 11 14:33:23 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 11 12:25:50 2009 +0200"
      },
      "message": "blktrace: pdu_buf of pc events should be unsigned\n\nI got this:\n  8,0    1   305.417782332  2037  I   R 32 (ffffff9e 10 00 ...) [bash]\n\nIt should be:\n  8,0    1   305.417782332  2037  I   R 32 (9e 10 00 ...) [bash]\n\n[ Impact: fix output of pc events ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c4A07C6B3.9080802@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2e46e8b27aa57c6bd34b3102b40ee4d0144b4fab",
      "tree": "134f560f66c2af277f0f25e5b85f6c1acaddfc06",
      "parents": [
        "9780e2dd8254351f6cbe11304849126b51dbd561"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:41 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:54 2009 +0200"
      },
      "message": "block: drop request-\u003ehard_* and *nr_sectors\n\nstruct request has had a few different ways to represent some\nproperties of a request.  -\u003ehard_* represent block layer\u0027s view of the\nrequest progress (completion cursor) and the ones without the prefix\nare supposed to represent the issue cursor and allowed to be updated\nas necessary by the low level drivers.  The thing is that as block\nlayer supports partial completion, the two cursors really aren\u0027t\nnecessary and only cause confusion.  In addition, manual management of\nrequest detail from low level drivers is cumbersome and error-prone at\nthe very least.\n\nAnother interesting duplicate fields are rq-\u003e[hard_]nr_sectors and\nrq-\u003e{hard_cur|current}_nr_sectors against rq-\u003edata_len and\nrq-\u003ebio-\u003ebi_size.  This is more convoluted than the hard_ case.\n\nrq-\u003e[hard_]nr_sectors are initialized for requests with bio but\nblk_rq_bytes() uses it only for !pc requests.  rq-\u003edata_len is\ninitialized for all request but blk_rq_bytes() uses it only for pc\nrequests.  This causes good amount of confusion throughout block layer\nand its drivers and determining the request length has been a bit of\nblack magic which may or may not work depending on circumstances and\nwhat the specific LLD is actually doing.\n\nrq-\u003e{hard_cur|current}_nr_sectors represent the number of sectors in\nthe contiguous data area at the front.  This is mainly used by drivers\nwhich transfers data by walking request segment-by-segment.  This\nvalue always equals rq-\u003ebio-\u003ebi_size \u003e\u003e 9.  However, data length for\npc requests may not be multiple of 512 bytes and using this field\nbecomes a bit confusing.\n\nIn general, having multiple fields to represent the same property\nleads only to confusion and subtle bugs.  With recent block low level\ndriver cleanups, no driver is accessing or manipulating these\nduplicate fields directly.  Drop all the duplicates.  Now rq-\u003esector\nmeans the current sector, rq-\u003edata_len the current total length and\nrq-\u003ebio-\u003ebi_size the current segment length.  Everything else is\ndefined in terms of these three and available only through accessors.\n\n* blk_recalc_rq_sectors() is collapsed into blk_update_request() and\n  now handles pc and fs requests equally other than rq-\u003esector update.\n  This means that now pc requests can use partial completion too (no\n  in-kernel user yet tho).\n\n* bio_cur_sectors() is replaced with bio_cur_bytes() as block layer\n  now uses byte count as the primary data length.\n\n* blk_rq_pos() is now guranteed to be always correct.  In-block users\n  converted.\n\n* blk_rq_bytes() is now guaranteed to be always valid as is\n  blk_rq_sectors().  In-block users converted.\n\n* blk_rq_sectors() is now guaranteed to equal blk_rq_bytes() \u003e\u003e 9.\n  More convenient one is used.\n\n* blk_rq_bytes() and blk_rq_cur_bytes() are now inlined and take const\n  pointer to request.\n\n[ Impact: API cleanup, single way to represent one property of a request ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5b93629b4509c03ffa87a9316412fedf6f58cb37",
      "tree": "ad5ceda3f718361b8df3057b4f9edcc79aa4cd9d",
      "parents": [
        "c3a4d78c580de4edc9ef0f7c59812fb02ceb037f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:38 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:53 2009 +0200"
      },
      "message": "block: implement blk_rq_pos/[cur_]sectors() and convert obvious ones\n\nImplement accessors - blk_rq_pos(), blk_rq_sectors() and\nblk_rq_cur_sectors() which return rq-\u003ehard_sector, rq-\u003ehard_nr_sectors\nand rq-\u003ehard_cur_sectors respectively and convert direct references of\nthe said fields to the accessors.\n\nThis is in preparation of request data length handling cleanup.\n\nGeert\t: suggested adding const to struct request * parameter to accessors\nSergei\t: spotted error in patch description\n\n[ Impact: cleanup ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nAcked-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nTested-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAcked-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAckec-by: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Borislav Petkov \u003cpetkovbb@googlemail.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4671c79408a3f8a5a6a45e39c4c164dada3a5678",
      "tree": "c8cc041841afe9d2c1be14a2410c1f468b7477be",
      "parents": [
        "29f93943d1916d1a3faa3f10f4a06994347ac990"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 08 16:27:41 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 08 16:30:26 2009 -0400"
      },
      "message": "tracing: add trace_set_clr_event to export event enabling function\n\nOther parts of the kernel may need to be able to enable or disable\nspecific events. Especially parts that create trace events.\n\n[ Impact: allow enabling of trace events by those that create the event ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "29f93943d1916d1a3faa3f10f4a06994347ac990",
      "tree": "128c64e3e8305fb1c6785ef150b22b2412f856f2",
      "parents": [
        "c142b15dc56ee6d55cb97a062e3c8e9c61e384c0"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 08 16:06:47 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 08 16:06:47 2009 -0400"
      },
      "message": "tracing: initialize return value for __ftrace_set_clr_event\n\nCommit 8f31bfe538ebafac187d2d4465a92e1d9ee6d8c2\ntracing/events: clean up for ftrace_set_clr_event()\n\nMoved out the code for ftrace_set_clr_event into a helper funciton but\ndid not initialize the return value. As a result, we do not warn about\na typo in the echoing of events in set_event.\n\nThis patch restores the old warning:\n\n # echo foobar \u003e set_event\n-bash: echo: write error: Invalid argument\n\n[ Impact: restore warning of invalid entries to set_event ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "c142b15dc56ee6d55cb97a062e3c8e9c61e384c0",
      "tree": "d273ba8c5ce28bea224e4f48b9704e47ed68a2b4",
      "parents": [
        "8f31bfe538ebafac187d2d4465a92e1d9ee6d8c2"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri May 08 10:32:05 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri May 08 14:00:36 2009 +0200"
      },
      "message": "tracing/events: simplify system_enable_read()\n\nA smarter way to figure out the output of an enable file.\n\n[ Impact: clean up ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c4A0399A5.2080603@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8f31bfe538ebafac187d2d4465a92e1d9ee6d8c2",
      "tree": "660b7340cadca779314e04b960618d7ac1c7d425",
      "parents": [
        "74f4fd21664148b8c454cc07bfe74e4dd51cf07b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri May 08 10:31:42 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri May 08 14:00:35 2009 +0200"
      },
      "message": "tracing/events: clean up for ftrace_set_clr_event()\n\nAdd a helper function __ftrace_set_clr_event(), and replace some\nftrace_set_clr_event() calls with this helper, thus we don\u0027t need any\nkstrdup() or kmalloc().\n\nAs a side effect, this patch fixes an issue in self tests code, which is\nsimilar to the one fixed in commit d6bf81ef0f7474434c2a049e8bf3c9146a14dd96\n(\"tracing: append \":*\" to internal setting of system events\")\n\nIt\u0027s a small issue and won\u0027t cause any bug in fact, but we should do things\nright anyway.\n\n[ Impact: prevent spurious event-enabling in tracing self-tests ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c4A03998E.3020503@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "74f4fd21664148b8c454cc07bfe74e4dd51cf07b",
      "tree": "fa4074dff8913c25a9192c65c112de25cf07fbf4",
      "parents": [
        "7da3046d6ce6ea97494020081c509b642b7016af"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu May 07 19:58:55 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 07 20:01:11 2009 -0400"
      },
      "message": "ring-buffer: change WARN_ON from checking preempt_count to preemptible\n\nThere\u0027s a WARN_ON in the ring buffer code that makes sure preemption\nis disabled. It checks \"!preempt_count()\". But when CONFIG_PREEMPT is not\nenabled, preempt_count() is always zero, and this will trigger the warning.\n\n[ Impact: prevent false warning on non preemptible kernels ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7da3046d6ce6ea97494020081c509b642b7016af",
      "tree": "8bd27902977bc821980331054a6b2c5876bf2918",
      "parents": [
        "0574ea421b90e0e45a72c447dd3c2c79ffd8c153"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu May 07 19:52:20 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 07 19:52:20 2009 -0400"
      },
      "message": "ring-buffer: add total count in ring-buffer-benchmark\n\nIt is nice to see the overhead of the benchmark test when tracing is\ndisabled. That is, we turn off the ring buffer just to see what the\ncost of running the loop that calls into the ring buffer is.\n\nCurrently, if no entries wer made, we get 0. This is not informative.\nThis patch changes it to check if we had any \"missed\" (non recorded)\nevents. If so, a total count is also reported.\n\n[ Impact: evaluate the over head of the ring buffer benchmark test ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0574ea421b90e0e45a72c447dd3c2c79ffd8c153",
      "tree": "ec19f007794a8593f1c75f3f2d05c2471346298e",
      "parents": [
        "65b77242043f74bca6a0d733c0e48ef03a8c9893"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu May 07 14:20:28 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 07 14:20:28 2009 -0400"
      },
      "message": "ring-buffer: only periodically call cond_resched to ring-buffer-benchmark\n\nCalling cond_resched at every iteration of the loop adds a bit of\noverhead to the benchmark.\n\nThis patch does two things.\n\n1) only calls cond-resched when CONFIG_PREEMPT is not enabled\n2) only calls cond-resched after so many traces has been performed.\n\n[ Impact: less overhead to the ring-buffer-benchmark ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "65b77242043f74bca6a0d733c0e48ef03a8c9893",
      "tree": "f7ba92bd5633ee6389bd51191d5a736d7b4666ea",
      "parents": [
        "d6bf81ef0f7474434c2a049e8bf3c9146a14dd96"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu May 07 12:49:27 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 07 12:49:27 2009 -0400"
      },
      "message": "tracing: have menu default enabled when kernel debug is configured\n\nTracing can be very helpful to debug the kernel. When DEBUG_KERNEL is\nenabled it is nice to enable the trace menu as well.\n\nThis patch only make the tracing menu enabled by default, it does not\nmake any of the tracers enabled. And the menu is only enabled by\ndefault if DEBUG_KERNEL is enabled.\n\n[ Impact: show tracing options to those debugging the kernel ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "d6bf81ef0f7474434c2a049e8bf3c9146a14dd96",
      "tree": "b2868093d4812c628a6752b1995491131cb08bc8",
      "parents": [
        "29c8000ee7da3a6756d26143991e573eaaf2a9f6"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu May 07 11:49:35 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 07 11:49:35 2009 -0400"
      },
      "message": "tracing: append \":*\" to internal setting of system events\n\nThe system enabling of events uses the same code as the set_event file.\nIt passes in the name of the system to the parser and that will enable\nall the events that has that system as a name.\n\nThe problem is that it will also enable events with the same name as the\nsystem.\n\nIf you have system name foo, and system name bar, but within the system\nbar, there exists an event called foo. By setting the system name foo,\nyou will also be enabling the event foo in the system bar. This is not\nan expected result.\n\nThe solution is to pass in \"foo:*\", which will only enable the system\nfoo and not events called foo.\n\n[ Impact: prevent accidental enabling of events with same name as a system ]\n\nReported-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "29c8000ee7da3a6756d26143991e573eaaf2a9f6",
      "tree": "4c57a374639127ebccd6f4fca0feb02cde21e702",
      "parents": [
        "0ad5d703c6c0fcd385d956555460df95dff7eb7e"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu May 07 11:13:42 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 07 11:16:18 2009 -0400"
      },
      "message": "ring-buffer: remove complex calculations in ring-buffer-test\n\nIngo Molnar thought that the code to calculate the time in cond_resched\nis a bit too ugly and is not needed. This patch removes it and replaces\nit with a simple call to cond_resched. I kept the comment that explains\nthe reason for the cond_resched.\n\n[ Impact: remove ugly code ]\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0ad5d703c6c0fcd385d956555460df95dff7eb7e",
      "tree": "4b777100f9be4fe90ca4bd043b9f98df672b5b3b",
      "parents": [
        "44347d947f628060b92449702071bfe1d31dfb75",
        "1cb81b143fa8f0e4629f10690862e2e52ca792ff"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 11:18:34 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 13:36:22 2009 +0200"
      },
      "message": "Merge branch \u0027tracing/hw-branch-tracing\u0027 into tracing/core\n\nMerge reason: this topic is ready for upstream now. It passed\n              Oleg\u0027s review and Andrew had no further mm/*\n              objections/observations either.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "44347d947f628060b92449702071bfe1d31dfb75",
      "tree": "c6ed74610d5b3295df4296659f80f5feb94b28cc",
      "parents": [
        "d94fc523f3c35bd8013f04827e94756cbc0212f4",
        "413f81eba35d6ede9289b0c8a920c013a84fac71"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 11:17:13 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 11:17:34 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into tracing/core\n\nMerge reason: tracing/core was on a .30-rc1 base and was missing out on\n              on a handful of tracing fixes present in .30-rc5-almost.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d94fc523f3c35bd8013f04827e94756cbc0212f4",
      "tree": "aacd8c0aaa2024437b7bfba4636afcc87f4890bf",
      "parents": [
        "5928c3cc0ffcb6894bbab6be591b7ae1786b2d87"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu May 07 15:11:15 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 10:07:28 2009 +0200"
      },
      "message": "tracing/events: fix concurrent access to ftrace_events list, fix\n\nIn filter_add_subsystem_pred() we should release event_mutex before\ncalling filter_free_subsystem_preds(), since both functions hold\nevent_mutex.\n\n[ Impact: fix deadlock when writing invalid pred into subsystem filter ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: tzanussi@gmail.com\nCc: a.p.zijlstra@chello.nl\nCc: fweisbec@gmail.com\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c4A028993.7020509@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5928c3cc0ffcb6894bbab6be591b7ae1786b2d87",
      "tree": "75503a660dafe84dcd434912c5a0bdf97cad3c8a",
      "parents": [
        "e8808c1019b048a43686dbd25c188a035842c2e2"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun May 03 03:03:57 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 10:05:57 2009 +0200"
      },
      "message": "tracing/filters: support for operator reserved characters in strings\n\nWhen we set a filter for an event, such as:\n\necho \"name \u003d\u003d my_lock_name\" \u003e \\\n\t/debug/tracing/events/lockdep/lock_acquired/filter\n\nthen the following order of token type is parsed:\n\n- space\n- operator\n- parentheses\n- operand\n\nBecause the operators and parentheses have a higher precedence\nthan the operand characters, which is normal, then we can\u0027t\nuse any string containing such special characters:\n\n()\u003d\u003c\u003e!\u0026|\n\nTo get this support and also avoid ambiguous intepretation from\nthe parser or the human, we can do it using double quotes so that\nwe keep the usual languages habits.\n\nThen after this patch you can still declare string condition like\nbefore:\n\necho name \u003d\u003d myname\n\nBut if you want to compare against a string containing an operator\ncharacter, you can use double quotes:\n\necho \u0027name \u003d\u003d \"\u0026myname\"\u0027\n\nDon\u0027t forget to include the whole expression into single quotes or\nthe double ones will be eaten by echo.\n\n[ Impact: support strings with special characters for tracing filters ]\n\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Zhaolei \u003czhaolei@cn.fujitsu.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "e8808c1019b048a43686dbd25c188a035842c2e2",
      "tree": "350eefee96e540ee855a6aefc64a17af25486234",
      "parents": [
        "8ae79a138e88aceeeb07077bff2883245fb7c218"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun May 03 02:48:52 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 10:05:57 2009 +0200"
      },
      "message": "tracing/filters: support for filters of dynamic sized arrays\n\nCurrently the filtering infrastructure supports well the\nnumeric types and fixed sized array types.\n\nBut the recently added __string() field uses a specific\nindirect offset mechanism which requires a specific\npredicate. Until now it wasn\u0027t supported.\n\nThis patch adds this support and implies very few changes,\nonly a new predicate is needed, the management of this specific\nfield can be done through the usual string helpers in the\nfiltering infrastructure.\n\n[ Impact: support all kinds of strings in the tracing filters ]\n\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Zhaolei \u003czhaolei@cn.fujitsu.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "8ae79a138e88aceeeb07077bff2883245fb7c218",
      "tree": "ebb58fcf7d06af26c5855f664e769f850de4b434",
      "parents": [
        "9456f0fa6d3cb944d3b9fc31c9a244e0362c26ea"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed May 06 22:52:15 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 06 23:11:42 2009 -0400"
      },
      "message": "tracing: add hierarchical enabling of events\n\nWith the current event directory, you can only enable individual events.\nThe file debugfs/tracing/set_event is used to be able to enable or\ndisable several events at once. But that can still be awkward.\n\nThis patch adds hierarchical enabling of events. That is, each directory\nin debugfs/tracing/events has an \"enable\" file. This file can enable\nor disable all events within the directory and below.\n\n # echo 1 \u003e /debugfs/tracing/events/enable\n\nwill enable all events.\n\n # echo 1 \u003e /debugfs/tracing/events/sched/enable\n\nwill enable all events in the sched subsystem.\n\n # echo 1 \u003e /debugfs/tracing/events/enable\n # echo 0 \u003e /debugfs/tracing/events/irq/enable\n\nwill enable all events, but then disable just the irq subsystem events.\n\nWhen reading one of these enable files, there are four results:\n\n 0 - all events this file affects are disabled\n 1 - all events this file affects are enabled\n X - there is a mixture of events enabled and disabled\n ? - this file does not affect any event\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "9456f0fa6d3cb944d3b9fc31c9a244e0362c26ea",
      "tree": "9e6e97199f63c786a79966a5938873a98591e10c",
      "parents": [
        "71e1c8ac42ae4038ddb1367cce7097ab868dc532"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed May 06 21:54:09 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 06 23:11:41 2009 -0400"
      },
      "message": "tracing: reset ring buffer when removing modules with events\n\nLi Zefan found that there\u0027s a race using the event ids of events and\nmodules. When a module is loaded, an event id is incremented. We only\nhave 16 bits for event ids (65536) and there is a possible (but highly\nunlikely) race that we could load and unload a module that registers\nevents so many times that the event id counter overflows.\n\nWhen it overflows, it then restarts and goes looking for available\nids. An id is available if it was added by a module and released.\n\nThe race is if you have one module add an id, and then is removed.\nAnother module loaded can use that same event id. But if the old module\nstill had events in the ring buffer, the new module\u0027s call back would\nget bogus data.  At best (and most likely) the output would just be\ngarbage. But if the module for some reason used pointers (not recommended)\nthen this could potentially crash.\n\nThe safest thing to do is just reset the ring buffer if a module that\nregistered events is removed.\n\n[ Impact: prevent unpredictable results of event id overflows ]\n\nReported-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c49FEAFD0.30106@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "3e07a4f680adc66dfa175aa5021aedf340251b12",
      "tree": "c245b416cf3d88e4c2f1d0ff43d0021e59b20b47",
      "parents": [
        "6634ff26cce2da04e5c2a5481bcb8888e7d01786"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed May 06 18:36:59 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 06 18:36:59 2009 -0400"
      },
      "message": "ring-buffer: change test to be more latency friendly\n\nThe ring buffer benchmark/test runs a producer for 10 seconds.\nThis is done with preemption and interrupts enabled. But if the kernel\nis not compiled with CONFIG_PREEMPT, it basically stops everything\nbut interrupts for 10 seconds.\n\nAlthough this is just a test and is not for production, this attribute\ncan be quite annoying. It can also spawn badness elsewhere.\n\nThis patch solves the issues by calling \"cond_resched\" when the system\nis not compiled with CONFIG_PREEMPT. It also keeps track of the time\nspent to call cond_resched such that it does not go against the\ntime calculations. That is, if the task schedules away, the time scheduled\nout is removed from the test data. Note, this only works for non PREEMPT\nbecause we do not know when the task is scheduled out if we have PREEMPT\nenabled.\n\n[ Impact: prevent test from stopping the world for 10 seconds ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "6634ff26cce2da04e5c2a5481bcb8888e7d01786",
      "tree": "64efca734e6cb10ff7cb19086e8f83b92eb40fd1",
      "parents": [
        "00c81a58c5b4e0de14ee33bfbc3d71c90f69f9ea"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed May 06 15:30:07 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 06 15:30:07 2009 -0400"
      },
      "message": "ring-buffer: make moving the tail page a separate function\n\nIngo Molnar thought the code would be cleaner if we used a function call\ninstead of a goto for moving the tail page. After implementing this,\nit seems that gcc still inlines the result and the output is pretty much\nthe same. Since this is considered a cleaner approach, might as well\nimplement it.\n\n[ Impact: code clean up ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "00c81a58c5b4e0de14ee33bfbc3d71c90f69f9ea",
      "tree": "d34d323e0a3b67ee5ce4c0ae8a0b3dbbc9bf2562",
      "parents": [
        "8e7abf1c62941ebb7a1416cbc62392c8a0902625"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed May 06 12:40:51 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 06 12:49:20 2009 -0400"
      },
      "message": "ring-buffer: check for failed allocation in ring buffer benchmark\n\nThe result of the allocation of the ring buffer read page in the\nring buffer bench mark does not check the return to see if a page\nwas actually allocated. This patch fixes that.\n\n[ Impact: avoid NULL dereference ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8e7abf1c62941ebb7a1416cbc62392c8a0902625",
      "tree": "72b62a8ce2cecee2ed0cff586fb8bed10cf0eb2d",
      "parents": [
        "35cf723e99c0e26ddf51f037dffaa4ff2c2c9106"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed May 06 10:26:45 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 06 12:49:19 2009 -0400"
      },
      "message": "ring-buffer: remove unneeded conditional in rb_reserve_next\n\nThe code in __rb_reserve_next checks on page overflow if it is the\noriginal commiter and then resets the page back to the original\nsetting.  Although this is fine, and the code is correct, it is\na bit fragil. Some experimental work I did breaks it easily.\n\nThe better and more robust solution is to have all commiters that\noverflow the page, simply subtract what they added.\n\n[ Impact: more robust ring buffer account management ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "48dd0fed90e2b1f1ba87401439b85942181c6df3",
      "tree": "4be2982fd1697a9834d15b3ba3c70165ef0eee8a",
      "parents": [
        "22a7c31a9659deaddafbbcec6562d44141e84474"
      ],
      "author": {
        "name": "Jaswinder Singh Rajput",
        "email": "jaswinder@kernel.org",
        "time": "Wed May 06 15:45:45 2009 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed May 06 14:19:16 2009 +0200"
      },
      "message": "tracing: trace_output.c, fix false positive compiler warning\n\nThis compiler warning:\n\n  CC      kernel/trace/trace_output.o\n kernel/trace/trace_output.c: In function ‘register_ftrace_event’:\n kernel/trace/trace_output.c:544: warning: ‘list’ may be used uninitialized in this function\n\nIs wrong as \u0027list\u0027 is always initialized - but GCC (4.3.2) does not\nrecognize this relationship properly.\n\nWork around the warning by initializing the variable to NULL.\n\n[ Impact: fix false positive compiler warning ]\n\nSigned-off-by: Jaswinder Singh Rajput \u003cjaswinderrajput@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "22a7c31a9659deaddafbbcec6562d44141e84474",
      "tree": "0fe1c64e82d673597c78c6ce5f3569d9101b5281",
      "parents": [
        "a42aaa3bbce85ac487ad4fad5db99e8e91b7aac1"
      ],
      "author": {
        "name": "Alan D. Brunelle",
        "email": "Alan.Brunelle@hp.com",
        "time": "Mon May 04 16:35:08 2009 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed May 06 14:13:01 2009 +0200"
      },
      "message": "blktrace: from-sector redundant in trace_block_remap\n\nRemove redundant from-sector parameter: it\u0027s /always/ the bio\u0027s sector\npassed in.\n\n[ Impact: cleanup ]\n\nSigned-off-by: Alan D. Brunelle \u003calan.brunelle@hp.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nLKML-Reference: \u003c49FF517C.7000503@hp.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a42aaa3bbce85ac487ad4fad5db99e8e91b7aac1",
      "tree": "1f1b4ac4335774c154213e756d10247e5eac1ded",
      "parents": [
        "de1d7286060430e79a1d50ad6e5fee8fe863c5f6"
      ],
      "author": {
        "name": "Alan D. Brunelle",
        "email": "Alan.Brunelle@hp.com",
        "time": "Mon May 04 16:27:26 2009 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed May 06 14:13:00 2009 +0200"
      },
      "message": "blktrace: correct remap names\n\nThis attempts to clarify names utilized during block I/O remap\noperations (partition, volume manager). It correctly matches up the\n/from/ information for both device \u0026 sector. This takes in the concept\nfrom Kosaki Motohiro and extends it to include better naming for the\n\"device_from\" field.\n\n[ Impact: cleanup ]\n\nSigned-off-by: Alan D. Brunelle \u003calan.brunelle@hp.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nLKML-Reference: \u003c49FF4FAE.3000301@hp.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "20c8928abe70e204bd077ab6cfe23002d7788983",
      "tree": "e161656f99c814ebdd69df8b5a79dab58f80065e",
      "parents": [
        "2df75e415709ad12862028916c772c1f377f6a7c"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed May 06 10:33:45 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed May 06 10:38:19 2009 +0200"
      },
      "message": "tracing/events: fix concurrent access to ftrace_events list\n\nA module will add/remove its trace events when it gets loaded/unloaded, so\nthe ftrace_events list is not \"const\", and concurrent access needs to be\nprotected.\n\nThis patch thus fixes races between loading/unloding modules and read\n\u0027available_events\u0027 or read/write \u0027set_event\u0027, etc.\n\nBelow shows how to reproduce the race:\n\n # for ((; ;)) { cat /mnt/tracing/available_events; } \u003e /dev/null \u0026\n # for ((; ;)) { insmod trace-events-sample.ko; rmmod sample; } \u0026\n\nAfter a while:\n\nBUG: unable to handle kernel paging request at 0010011c\nIP: [\u003cc1080f27\u003e] t_next+0x1b/0x2d\n...\nCall Trace:\n [\u003cc10c90e6\u003e] ? seq_read+0x217/0x30d\n [\u003cc10c8ecf\u003e] ? seq_read+0x0/0x30d\n [\u003cc10b4c19\u003e] ? vfs_read+0x8f/0x136\n [\u003cc10b4fc3\u003e] ? sys_read+0x40/0x65\n [\u003cc1002a68\u003e] ? sysenter_do_call+0x12/0x36\n\n[ Impact: fix races when concurrent accessing ftrace_events list ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c4A00F709.3080800@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2df75e415709ad12862028916c772c1f377f6a7c",
      "tree": "3374a78cb06fe096e82d9e4d03ad03d048784967",
      "parents": [
        "96d17980fabeb757706d2d6db5a28580a6156bfc"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed May 06 10:33:04 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed May 06 10:38:19 2009 +0200"
      },
      "message": "tracing/events: fix memory leak when unloading module\n\nWhen unloading a module, memory allocated by init_preds() and\ntrace_define_field() is not freed.\n\n[ Impact: fix memory leak ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nLKML-Reference: \u003c4A00F6E0.3040503@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5092dbc96f3acdac5433b27c06860352dc6d23b9",
      "tree": "641b6b25439bf879769e20b4dc0f0bc9a6e6d702",
      "parents": [
        "aa20ae8444fc6c318272c643f856d8d8ad3e198d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue May 05 22:47:18 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 06 00:08:50 2009 -0400"
      },
      "message": "ring-buffer: add benchmark and tester\n\nThis patch adds code that can benchmark the ring buffer as well as\ntest it. This code can be compiled into the kernel (not recommended)\nor as a module.\n\nA separate ring buffer is used to not interfer with other users, like\nftrace. It creates a producer and a consumer (option to disable creation\nof the consumer) and will run for 10 seconds, then sleep for 10 seconds\nand then repeat.\n\nWhile running, the producer will write 10 byte loads into the ring\nbuffer with just putting in the current CPU number. The reader will\ncontinually try to read the buffer. The reader will alternate from reading\nthe buffer via event by event, or by full pages.\n\nThe output is a pr_info, thus it will fill up the syslogs.\n\n  Starting ring buffer hammer\n  End ring buffer hammer\n  Time:     9000349 (usecs)\n  Overruns: 12578640\n  Read:     5358440  (by events)\n  Entries:  0\n  Total:    17937080\n  Missed:   0\n  Hit:      17937080\n  Entries per millisec: 1993\n  501 ns per entry\n  Sleeping for 10 secs\n  Starting ring buffer hammer\n  End ring buffer hammer\n  Time:     9936350 (usecs)\n  Overruns: 0\n  Read:     28146644  (by pages)\n  Entries:  74\n  Total:    28146718\n  Missed:   0\n  Hit:      28146718\n  Entries per millisec: 2832\n  353 ns per entry\n  Sleeping for 10 secs\n\nTime:      is the time the test ran\nOverruns:  the number of events that were overwritten and not read\nRead:      the number of events read (either by pages or events)\nEntries:   the number of entries left in the buffer\n                 (the by pages will only read full pages)\nTotal:     Entries + Read + Overruns\nMissed:    the number of entries that failed to write\nHit:       the number of entries that were written\n\nThe above example shows that it takes ~353 nanosecs per entry when\nthere is a reader, reading by pages (and no overruns)\n\nThe event by event reader slowed the producer down to 501 nanosecs.\n\n[ Impact: see how changes to the ring buffer affect stability and performance ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "aa20ae8444fc6c318272c643f856d8d8ad3e198d",
      "tree": "662d8f33c284a43a41d5c9e9edfe13238bd3535e",
      "parents": [
        "94487d6d53af5acae10cf9fd52f74498994d46b1"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue May 05 21:16:11 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 05 21:16:11 2009 -0400"
      },
      "message": "ring-buffer: move big if statement down\n\nIn the hot path of the ring buffer \"__rb_reserve_next\" there\u0027s a big\nif statement that does not even return back to the work flow.\n\n\tcode;\n\n\tif (cross to next page) {\n\n\t\t[ lots of code ]\n\n\t\treturn;\n\t}\n\n\tmore code;\n\nThe condition is even the unlikely path, although we do not denote it\nwith an unlikely because gcc is fine with it. The condition is true when\nthe write crosses a page boundary, and we need to start at a new page.\n\nHaving this if statement makes it hard to read, but calling another\nfunction to do the work is also not appropriate, because we are using a lot\nof variables that were set before the if statement, and we do not want to\nsend them as parameters.\n\nThis patch changes it to a goto:\n\n\tcode;\n\n\tif (cross to next page)\n\t\tgoto next_page;\n\n\tmore code;\n\n\treturn;\n\nnext_page:\n\n\t[ lots of code]\n\nThis makes the code easier to understand, and a bit more obvious.\n\nThe output from gcc is practically identical. For some reason, gcc decided\nto use different registers when I switched it to a goto. But other than that,\nthe logic is the same.\n\n[ Impact: easier to read code ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "94487d6d53af5acae10cf9fd52f74498994d46b1",
      "tree": "4aac17393ab74d234d1f7da064758d6ebf047120",
      "parents": [
        "31b6e76e21b2ffd3cb2f6fe4149790a9fdadce2d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue May 05 19:22:53 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 05 19:22:53 2009 -0400"
      },
      "message": "tracing: use proper export symbol for tracing api\n\nWhen adding the EXPORT_SYMBOL to some of the tracing API, I accidently\nused EXPORT_SYMBOL instead of EXPORT_SYMBOL_GPL. This patch fixes\nthat mistake.\n\n[ Impact: export the tracing code only for GPL modules ]\n\nReported-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "41ede23eded40832c955d98d4b71bc244809abb3",
      "tree": "044d968ac2d5784a80b46ba2ea04e639ac3e501b",
      "parents": [
        "afbab76a62b69ea6197e19727d4b8a8aef8deb25"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 01 20:26:54 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 05 17:22:02 2009 -0400"
      },
      "message": "ring-buffer: disable writers when resetting buffers\n\nAs a precaution, it is best to disable writing to the ring buffers\nwhen reseting them.\n\n[ Impact: prevent weird things if write happens during reset ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "afbab76a62b69ea6197e19727d4b8a8aef8deb25",
      "tree": "cfde06582fb3dbb7f8c00c7d1a8a57b0b0e9d0d1",
      "parents": [
        "778c55d44eb4f5f658915ed631d68ed9d1ac3ad1"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 01 19:40:05 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 05 16:58:24 2009 -0400"
      },
      "message": "ring-buffer: have read page swap increment counter with page entries\n\nIn the swap page ring buffer code that is used by the ftrace splice code,\nwe scan the page to increment the counter of entries read.\n\nWith the number of entries already in the page we simply need to add it.\n\n[ Impact: speed up reading page from ring buffer ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "778c55d44eb4f5f658915ed631d68ed9d1ac3ad1",
      "tree": "fb410e06820276a499a1ff116e02f0ab8a1f20ad",
      "parents": [
        "e4906eff9e6fbd2d311abcbcc53d5a531773c982"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 01 18:44:45 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 05 14:28:08 2009 -0400"
      },
      "message": "ring-buffer: record page entries in buffer page descriptor\n\nCurrently, when the ring buffer writer overflows the buffer and must\nwrite over non consumed data, we increment the overrun counter by\nreading the entries on the page we are about to overwrite. This reads\nthe entries one by one.\n\nThis is not very effecient. This patch adds another entry counter\ninto each buffer page descriptor that keeps track of the number of\nentries on the page. Now on overwrite, the overrun counter simply\nneeds to add the number of entries that is on the page it is about\nto overwrite.\n\n[ Impact: speed up of ring buffer in overwrite mode ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e4906eff9e6fbd2d311abcbcc53d5a531773c982",
      "tree": "05dd56b9336e7059cca3b651d542cc4b8bc2220b",
      "parents": [
        "c8d771835e18c938dae8690611d65fe98ad30f58"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Apr 30 20:49:44 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 05 14:25:44 2009 -0400"
      },
      "message": "ring-buffer: convert cpu buffer entries to local_t\n\nThe entries counter in cpu buffer is not atomic. It can be updated by\nother interrupts or from another CPU (readers).\n\nBut making entries into \"atomic_t\" causes an atomic operation that can\nhurt performance. Instead we convert it to a local_t that will increment\na counter with a local CPU atomic operation (if the arch supports it).\n\nInstead of fighting with readers and overwrites that decrement the counter,\nI added a \"read\" counter. Every time a reader reads an entry it is\nincremented.\n\nWe already have a overrun counter and with that, the entries counter and\nthe read counter, we can calculate the total number of entries in the\nbuffer with:\n\n  (entries - overrun) - read\n\nAs long as the total number of entries in the ring buffer is less than\nthe word size, this will work. But since the entries counter was previously\na long, this is no different than what we had before.\n\nThanks to Andrew Morton for pointing out in the first version that\natomic_t does not replace unsigned long. I switched to atomic_long_t\neven though it is signed. A negative count is most likely a bug.\n\n[ Impact: keep accurate count of cpu buffer entries ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "c8d771835e18c938dae8690611d65fe98ad30f58",
      "tree": "6c8ba52ab340e574c21418866bd985d55ab771e9",
      "parents": [
        "f0d2c681ac0a85142fc8abe65fc33fcad35cb9b7"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Apr 29 18:03:45 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 05 13:52:02 2009 -0400"
      },
      "message": "tracing: export stats of ring buffers to userspace\n\nThis patch adds stats to the ftrace ring buffers:\n\n # cat /debugfs/tracing/per_cpu/cpu0/stats\n entries: 42360\n overrun: 30509326\n commit overrun: 0\n nmi dropped: 0\n\nWhere entries are the total number of data entries in the buffer.\n\noverrun is the number of entries not consumed and were overwritten by\nthe writer.\n\ncommit overrun is the number of entries dropped due to nested writers\nwrapping the buffer before the initial writer finished the commit.\n\nnmi dropped is the number of entries dropped due to the ring buffer\nlock being held when an nmi was going to write to the ring buffer.\nNote, this field will be meaningless and will go away when the ring\nbuffer becomes lockless.\n\n[ Impact: let userspace know what is happening in the ring buffers ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f0d2c681ac0a85142fc8abe65fc33fcad35cb9b7",
      "tree": "eafd2b655fc7ad0695fc5dbc343bcc1eb17e2e32",
      "parents": [
        "d6ce96dabe2c4409fd009ec14250a1fdbab4b133"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Apr 29 13:43:37 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 05 13:51:02 2009 -0400"
      },
      "message": "ring-buffer: add counters for commit overrun and nmi dropped entries\n\nThe WARN_ON in the ring buffer when a commit is preempted and the\nbuffer is filled by preceding writes can happen in normal operations.\nThe WARN_ON makes it look like a bug, not to mention, because\nit does not stop tracing and calls printk which can also recurse, this\nis prone to deadlock (the WARN_ON is not in a position to recurse).\n\nThis patch removes the WARN_ON and replaces it with a counter that\ncan be retrieved by a tracer. This counter is called commit_overrun.\n\nWhile at it, I added a nmi_dropped counter to count any time an NMI entry\nis dropped because the NMI could not take the spinlock.\n\n[ Impact: prevent deadlock by printing normal case warning ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "d6ce96dabe2c4409fd009ec14250a1fdbab4b133",
      "tree": "08a49382ec96651ca9adf8b28eb1566482fe3f9e",
      "parents": [
        "9ee1983c9aa18f12388ef660d0c76a23dc112959"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue May 05 01:15:24 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 05 13:46:33 2009 -0400"
      },
      "message": "ring-buffer: export symbols\n\nI\u0027m adding a module to do a series of tests on the ring buffer as well\nas benchmarks. This module needs to have more of the ring buffer API\nexported. There\u0027s nothing wrong with reading the ring buffer from a\nmodule.\n\n[ Impact: allow modules to read pages from the ring buffer ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8b3725621074040d380664964ffbc40610aef8c6",
      "tree": "3a78292a08cc9c87653be2e42d084a7d7f5989bf",
      "parents": [
        "a118e4d1402f1349fe3d953493e4168a300a752d"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Tue Apr 28 03:04:59 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 29 14:06:11 2009 +0200"
      },
      "message": "tracing/filters: a better event parser\n\nReplace the current event parser hack with a better one.  Filters are\nno longer specified predicate by predicate, but all at once and can\nuse parens and any of the following operators:\n\nnumeric fields:\n\n\u003d\u003d, !\u003d, \u003c, \u003c\u003d, \u003e, \u003e\u003d\n\nstring fields:\n\n\u003d\u003d, !\u003d\n\npredicates can be combined with the logical operators:\n\n\u0026\u0026, ||\n\nexamples:\n\n\"common_preempt_count \u003e 4\" \u003e filter\n\n\"((sig \u003e\u003d 10 \u0026\u0026 sig \u003c 15) || sig \u003d\u003d 17) \u0026\u0026 comm !\u003d bash\" \u003e filter\n\nIf there was an error, the erroneous string along with an error\nmessage can be seen by looking at the filter e.g.:\n\n((sig \u003e\u003d 10 \u0026\u0026 sig \u003c 15) || dsig \u003d\u003d 17) \u0026\u0026 comm !\u003d bash\n^\nparse_error: Field not found\n\nCurrently the caret for an error always appears at the beginning of\nthe filter; a real position should be used, but the error message\nshould be useful even without it.\n\nTo clear a filter, \u00270\u0027 can be written to the filter file.\n\nFilters can also be set or cleared for a complete subsystem by writing\nthe same filter as would be written to an individual event to the\nfilter file at the root of the subsytem.  Note however, that if any\nevent in the subsystem lacks a field specified in the filter being\nset, the set will fail and all filters in the subsytem are\nautomatically cleared.  This change from the previous version was made\nbecause using only the fields that happen to exist for a given event\nwould most likely result in a meaningless filter.\n\nBecause the logical operators are now implemented as predicates, the\nmaximum number of predicates in a filter was increased from 8 to 16.\n\n[ Impact: add new, extended trace-filter implementation ]\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: fweisbec@gmail.com\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c1240905899.6416.121.camel@tropicana\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ],
  "next": "a118e4d1402f1349fe3d953493e4168a300a752d"
}
