)]}'
{
  "log": [
    {
      "commit": "85f7f6c0edb8414053d788229c97d5ecff21efab",
      "tree": "214ed1f1ed2d026280ca46728948f59c0cb5f528",
      "parents": [
        "574b3725e327531c70361d1a10b8dc8dd2b93590"
      ],
      "author": {
        "name": "Jim Cromie",
        "email": "jim.cromie@gmail.com",
        "time": "Mon Dec 19 17:13:21 2011 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Jan 24 12:50:36 2012 -0800"
      },
      "message": "dynamic_debug: process multiple debug-queries on a line\n\nInsert ddebug_exec_queries() in place of ddebug_exec_query().  It\nsplits the query string on [;\\n], and calls ddebug_exec_query() on\neach.  All queries are processed independent of errors, allowing a\nquery to fail, for example when a module is not installed.  Empty\nlines and comments are skipped.  Errors are counted, and the last\nerror seen (negative) or the number of callsites found (0 or positive)\nis returned.  Return code checks are altered accordingly.\n\nWith this, multiple queries can be given in ddebug_query, allowing\nmore selective enabling of callsites.  As a side effect, a set of\ncommands can be batched in:\n\n\tcat cmd-file \u003e $DBGMT/dynamic_debug/control\n\nWe dont want a ddebug_query syntax error to kill the dynamic debug\nfacility, so dynamic_debug_init() zeros ddebug_exec_queries()\u0027s return\ncode after logging the appropriate message, so that ddebug tables are\npreserved and $DBGMT/dynamic_debug/control file is created.  This\nwould be appropriate even without accepting multiple queries.\n\nThis patch also alters ddebug_change() to return number of callsites\nmatched (which typically is the same as number of callsites changed).\nddebug_exec_query() also returns the number found, or a negative value\nif theres a parse error on the query.\n\nSplitting on [;\\n] prevents their use in format-specs, but selecting\ncallsites on punctuation is brittle anyway, meaningful and selective\nsubstrings are more typical.\n\nNote: splitting queries on \u0027;\u0027 before handling trailing #comments\nmeans that a \u0027;\u0027 also terminates a comment, and text after the \u0027;\u0027 is\ntreated as another query.  This trailing query will almost certainly\nresult in a parse error and thus have no effect other than the error\nmessage.  The double corner case with unexpected results is:\n\n     ddebug_query\u003d\"func foo +p # enable foo ; +p\"\n\nSigned-off-by: Jim Cromie \u003cjim.cromie@gmail.com\u003e\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "2b6783191da7211c88f98eb1a2bd2027bff36e30",
      "tree": "3227bbc5c9c187b6dbaa133a6f7e2e4364942594",
      "parents": [
        "7281491c594e7b8501eb5dfcf6cd3724f8a1b5b0"
      ],
      "author": {
        "name": "Jim Cromie",
        "email": "jim.cromie@gmail.com",
        "time": "Mon Dec 19 17:13:12 2011 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Jan 24 12:48:55 2012 -0800"
      },
      "message": "dynamic_debug: add trim_prefix() to provide source-root relative paths\n\ntrim_prefix(path) skips past the absolute source path root, and\nreturns the pointer to the relative path from there.  It is used to\nshorten the displayed path in $DBGMT/dynamic_debug/control via\nddebug_proc_show(), and in ddebug_change() to allow relative filenames\nto be used in applied queries.  For example:\n\n  ~# echo file kernel/freezer.c +p \u003e $DBGMT/dynamic_debug/control\n\n  kernel/freezer.c:128 [freezer]cancel_freezing p \"  clean up: %s\\012\"\n\ntrim_prefix(path) insures common prefix before trimming it, so\nout-of-tree module paths are shown as full absolute paths.\n\nSigned-off-by: Jim Cromie \u003cjim.cromie@gmail.com\u003e\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "93567c43eb2a4771b9c590435928f9b3a428e568",
      "tree": "67879e1e1b597d5557a8a7798d22a1dab6b92d01",
      "parents": [
        "1680a013b4ef5c5a6aea239d08042652ea65e759",
        "5c050fb96380a87a85aad9084b68fdcd2b84c193"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 27 19:46:59 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 27 19:46:59 2011 -0700"
      },
      "message": "Merge branch \u0027docs-next\u0027 of git://git.lwn.net/linux-2.6\n\n* \u0027docs-next\u0027 of git://git.lwn.net/linux-2.6:\n  docs: update the development process document\n  docs: fix dev_debug() braino in dynamic-debug-howto.txt\n"
    },
    {
      "commit": "9cad7962704d617ab1e4ae304baaaa22d727932b",
      "tree": "90e9c7018c1f64e204f6d6c920339e223d631c87",
      "parents": [
        "521cb40b0c44418a4fd36dc633f575813d59a43d"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Fri Mar 25 10:42:17 2011 -0600"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Fri Mar 25 10:42:17 2011 -0600"
      },
      "message": "docs: fix dev_debug() braino in dynamic-debug-howto.txt\n\nWhile looking at dynamic-debug-howto.txt, I noticed that it references\ndev_debug() (which doesn\u0027t exist) instead of dev_dbg() (which does\nexist).  I\u0027m lazy, so I choose to fix the document rather than changing\nevery dev_dbg() call.\n\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\n"
    },
    {
      "commit": "8ba6ebf583f12da32036fc0f003ab4043e54692e",
      "tree": "8fdd980d30fea50722b28fb5d782236174b2d188",
      "parents": [
        "9b99b7f84ea520d2ecaf816bde247a1ad07e454e"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Sun Jan 23 17:17:24 2011 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Feb 03 15:39:16 2011 -0800"
      },
      "message": "Dynamic debug: Add more flags\n\nAdd flags that allow the user to specify via debugfs whether or not the\nmodule name, function name, line number and/or thread ID have to be\nincluded in the printed message.\n\nSigned-off-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nCc: Greg Banks \u003cgnb@fmeh.org\u003e\nCc: Konrad Rzeszutek Wilk \u003ckonrad@darnok.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "a648ec05bb950fae2f35d0490ddd6cf15010af72",
      "tree": "cde3ca36db486e51d85c31619bf67f8d60215179",
      "parents": [
        "fd89cfb8718753459fcea3fe6103d19de5e86c9b"
      ],
      "author": {
        "name": "Thomas Renninger",
        "email": "trenn@suse.de",
        "time": "Fri Aug 06 16:11:02 2010 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 22 10:16:42 2010 -0700"
      },
      "message": "Dynamic Debug: Introduce ddebug_query\u003d boot parameter\n\nDynamic debug lacks the ability to enable debug messages at boot time.\nOne could patch initramfs or service startup scripts to write to\n/sys/../dynamic_debug/control, but this sucks.\n\nThis patch makes it possible to pass a query in the same format one can\nwrite to /sys/../dynamic_debug/control via boot param.\nWhen dynamic debug gets initialized, this query will automatically be\napplied.\n\n\nSigned-off-by: Thomas Renninger \u003ctrenn@suse.de\u003e\nAcked-by: jbaron@redhat.com\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "9898abb3d23311fa227a7f46bf4e40fd2954057f",
      "tree": "f32e6f1b0422e491bf3db276f6f62467e4a21928",
      "parents": [
        "86151fdf38b3795f292b39defbff39d2684b9c8c"
      ],
      "author": {
        "name": "Greg Banks",
        "email": "gnb@melbourne.sgi.com",
        "time": "Fri Feb 06 12:54:26 2009 +1100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Mar 24 16:38:27 2009 -0700"
      },
      "message": "Dynamic debug: allow simple quoting of words\n\nAllow simple quoting of words in the dynamic debug control language.\n\nThis allows more natural specification when using the control language\nto match against printk formats, e.g\n\n#echo -n \u0027format \"Setting node for non-present cpu\" +p\u0027 \u003e\n\t/mnt/debugfs/dynamic_debug/control\n\ninstead of\n\n#echo -n \u0027format Setting\\040node\\040for\\040non-present\\040cpu +p\u0027 \u003e\n\t/mnt/debugfs/dynamic_debug/control\n\nAdjust the dynamic debug documention to describe that and provide a\nnew example.  Adjust the existing examples in the documentation to\nreflect the current whitespace escaping behaviour when reading the\ncontrol file.  Fix some minor documentation trailing whitespace.\n\nSigned-off-by: Greg Banks \u003cgnb@melbourne.sgi.com\u003e\nAcked-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "86151fdf38b3795f292b39defbff39d2684b9c8c",
      "tree": "7b6e21f27d6321216c5dd7bf2123ee8656ed2dc3",
      "parents": [
        "e9d376f0fa66bd630fe27403669c6ae6c22a868f"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Thu Feb 05 11:53:15 2009 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Mar 24 16:38:27 2009 -0700"
      },
      "message": "dynamic debug: update docs\n\nupdates the documentation for \u0027dynamic debug\u0027 feature.\n\nSigned-off-by: Greg Banks \u003cgnb@sgi.com\u003e\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n\n"
    }
  ]
}
