)]}'
{
  "log": [
    {
      "commit": "90324cc1b11a211e37eabd8cb863e1a1561d6b1d",
      "tree": "c8b79c6850420a114ca6660c1b44fc486b1ba86d",
      "parents": [
        "fb8b00675eb6462aacab56bca31ed6107bda5314",
        "169ebd90131b2ffca74bb2dbe7eeacd39fb83714"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "message": "Merge tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\nPull writeback tree from Wu Fengguang:\n \"Mainly from Jan Kara to avoid iput() in the flusher threads.\"\n\n* tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Avoid iput() from flusher thread\n  vfs: Rename end_writeback() to clear_inode()\n  vfs: Move waiting for inode writeback from end_writeback() to evict_inode()\n  writeback: Refactor writeback_single_inode()\n  writeback: Remove wb-\u003elist_lock from writeback_single_inode()\n  writeback: Separate inode requeueing after writeback\n  writeback: Move I_DIRTY_PAGES handling\n  writeback: Move requeueing when I_SYNC set to writeback_sb_inodes()\n  writeback: Move clearing of I_SYNC into inode_sync_complete()\n  writeback: initialize global_dirty_limit\n  fs: remove 8 bytes of padding from struct writeback_control on 64 bit builds\n  mm: page-writeback.c: local functions should not be exposed globally\n"
    },
    {
      "commit": "39eb7e9791866973dbb7a3a6d2061d70356c7d90",
      "tree": "bfd4e74f43031fa0ae05636c215a3a60a7f5ae23",
      "parents": [
        "896fc1f0c4c6c19b270734f274be67cb0e8a24af"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "anton.vorontsov@linaro.org",
        "time": "Thu May 17 00:15:34 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Thu May 17 08:51:59 2012 -0700"
      },
      "message": "pstore/ram: Add ECC support\n\nThis is now straightforward: just introduce a module parameter and pass\nthe needed value to persistent_ram_new().\n\nSigned-off-by: Anton Vorontsov \u003canton.vorontsov@linaro.org\u003e\nAcked-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nAcked-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "896fc1f0c4c6c19b270734f274be67cb0e8a24af",
      "tree": "dfdeccb50e7288365d1595a5e57ca21e5824abed",
      "parents": [
        "cddb8751c80348df75149f44fc3bf38d3dd1f3e6"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "anton.vorontsov@linaro.org",
        "time": "Thu May 17 00:15:18 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Thu May 17 08:51:41 2012 -0700"
      },
      "message": "pstore/ram: Switch to persistent_ram routines\n\nThe patch switches pstore RAM backend to use persistent_ram routines,\none step closer to the ECC support.\n\nSigned-off-by: Anton Vorontsov \u003canton.vorontsov@linaro.org\u003e\nAcked-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "cddb8751c80348df75149f44fc3bf38d3dd1f3e6",
      "tree": "1c4a3ccbd99179b489c53dd6a7dfd7aa72cc0bab",
      "parents": [
        "357fcff5bd8510fd7747d776d3dcedde6b801d3e"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "anton.vorontsov@linaro.org",
        "time": "Thu May 17 00:15:08 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Thu May 17 08:50:00 2012 -0700"
      },
      "message": "staging: android: persistent_ram: Move to fs/pstore/ram_core.c\n\nThis is a first step for adding ECC support for pstore RAM backend: we\nwill use the persistent_ram routines, kindly provided by Google.\n\nBasically, persistent_ram is a set of helper routines to deal with the\n[optionally] ECC-protected persistent ram regions.\n\nA bit of Makefile, Kconfig and header files adjustments were needed\nbecause of the move.\n\nSigned-off-by: Anton Vorontsov \u003canton.vorontsov@linaro.org\u003e\nAcked-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "1894a253db97059bc299b834b76f665bc6586b1d",
      "tree": "791ad2d33cc1d28c32fa340b0a8f0c2a645c4b26",
      "parents": [
        "d109a674a3685d43f16da5cc4cb8b927d07c436d"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "anton.vorontsov@linaro.org",
        "time": "Wed May 16 05:43:08 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Wed May 16 08:06:37 2012 -0700"
      },
      "message": "ramoops: Move to fs/pstore/ram.c\n\nSince ramoops was converted to pstore, it has nothing to do with character\ndevices nowadays. Instead, today it is just a RAM backend for pstore.\n\nThe patch just moves things around. There are a few changes were needed\nbecause of the move:\n\n1. Kconfig and Makefiles fixups, of course.\n\n2. In pstore/ram.c we have to play a bit with MODULE_PARAM_PREFIX, this\n   is needed to keep user experience the same as with ramoops driver\n   (i.e. so that ramoops.foo kernel command line arguments would still\n   work).\n\nSigned-off-by: Anton Vorontsov \u003canton.vorontsov@linaro.org\u003e\nAcked-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nAcked-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430",
      "tree": "42ea94ea733538f797aa745945fc43c4d1b89217",
      "parents": [
        "7994e6f7254354e03028a11f98a27bd67dace9f1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 03 14:48:02 2012 +0200"
      },
      "committer": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Sun May 06 13:43:41 2012 +0800"
      },
      "message": "vfs: Rename end_writeback() to clear_inode()\n\nAfter we moved inode_sync_wait() from end_writeback() it doesn\u0027t make sense\nto call the function end_writeback() anymore. Rename it to clear_inode()\nwhich well says what the function really does - set I_CLEAR flag.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "5d32c88f0b94061b3af2e3ade92422407282eb12",
      "tree": "2e1f81aa47b2cf59625c8fba17199617e33802e6",
      "parents": [
        "43f63c8711ce02226b7bbdafeba7b8031faf3fb4",
        "dac23b0d0513916498d40412818bd2c581b365f7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 05 15:30:34 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 05 15:30:34 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge batch of fixes from Andrew Morton:\n \"The simple_open() cleanup was held back while I wanted for laggards to\n  merge things.\n\n  I still need to send a few checkpoint/restore patches.  I\u0027ve been\n  wobbly about merging them because I\u0027m wobbly about the overall\n  prospects for success of the project.  But after speaking with Pavel\n  at the LSF conference, it sounds like they\u0027re further toward\n  completion than I feared - apparently davem is at the \"has stopped\n  complaining\" stage regarding the net changes.  So I need to go back\n  and re-review those patchs and their (lengthy) discussion.\"\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (16 patches)\n  memcg swap: use mem_cgroup_uncharge_swap fix\n  backlight: add driver for DA9052/53 PMIC v1\n  C6X: use set_current_blocked() and block_sigmask()\n  MAINTAINERS: add entry for sparse checker\n  MAINTAINERS: fix REMOTEPROC F: typo\n  alpha: use set_current_blocked() and block_sigmask()\n  simple_open: automatically convert to simple_open()\n  scripts/coccinelle/api/simple_open.cocci: semantic patch for simple_open()\n  libfs: add simple_open()\n  hugetlbfs: remove unregister_filesystem() when initializing module\n  drivers/rtc/rtc-88pm860x.c: fix rtc irq enable callback\n  fs/xattr.c:setxattr(): improve handling of allocation failures\n  fs/xattr.c:listxattr(): fall back to vmalloc() if kmalloc() failed\n  fs/xattr.c: suppress page allocation failure warnings from sys_listxattr()\n  sysrq: use SEND_SIG_FORCED instead of force_sig()\n  proc: fix mount -t proc -o AAA\n"
    },
    {
      "commit": "234e340582901211f40d8c732afc49f0630ecf05",
      "tree": "753076500dfd883b3db56d4f5410af31d8945623",
      "parents": [
        "9b3ae64be658a573b33d05a8dc73b08d3345fa44"
      ],
      "author": {
        "name": "Stephen Boyd",
        "email": "sboyd@codeaurora.org",
        "time": "Thu Apr 05 14:25:11 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 05 15:25:50 2012 -0700"
      },
      "message": "simple_open: automatically convert to simple_open()\n\nMany users of debugfs copy the implementation of default_open() when\nthey want to support a custom read/write function op.  This leads to a\nproliferation of the default_open() implementation across the entire\ntree.\n\nNow that the common implementation has been consolidated into libfs we\ncan replace all the users of this function with simple_open().\n\nThis replacement was done with the following semantic patch:\n\n\u003csmpl\u003e\n@ open @\nidentifier open_f !\u003d simple_open;\nidentifier i, f;\n@@\n-int open_f(struct inode *i, struct file *f)\n-{\n(\n-if (i-\u003ei_private)\n-f-\u003eprivate_data \u003d i-\u003ei_private;\n|\n-f-\u003eprivate_data \u003d i-\u003ei_private;\n)\n-return 0;\n-}\n\n@ has_open depends on open @\nidentifier fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...\n-.open \u003d open_f,\n+.open \u003d simple_open,\n...\n};\n\u003c/smpl\u003e\n\n[akpm@linux-foundation.org: checkpatch fixes]\nSigned-off-by: Stephen Boyd \u003csboyd@codeaurora.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Julia Lawall \u003cJulia.Lawall@lip6.fr\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "22a71c3055cfcc277b7a8422d4ff256944370c24",
      "tree": "8b0b9c4da7329866b5f006ac9e6954a90e10d098",
      "parents": [
        "a2e1859adb3b05fa99f87a67df9ef2a4b7b04a13"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 22 12:26:35 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 31 16:03:15 2012 -0400"
      },
      "message": "pstore: trim pstore_get_inode()\n\nmove mode-dependent parts to callers, kill unused arguments\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6e55f8ed814940b0b7420ed633c08e61702bb8d4",
      "tree": "6e2afd164e3079c2102770053e7cda217778f8ec",
      "parents": [
        "49d99a2f9c4d033cc3965958a1397b1fad573dd3",
        "381b872cf7942ab8c95de156ce403bd906f3915d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 09:24:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 09:24:07 2012 -0700"
      },
      "message": "Merge tag \u0027pstore-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux\n\nPull one pstore patch from Tony Luck\n\n* tag \u0027pstore-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:\n  pstore: Introduce get_reason_str() to pstore\n"
    },
    {
      "commit": "318ceed088497d1ca839b1172518ac4cc7096b82",
      "tree": "7dfd07bfb5e8c5d5dbb0ba4ea523f334c98c66bb",
      "parents": [
        "ca85c07809ca19de3391cb79ee1198f3dd91fa8d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Feb 12 22:08:01 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:37 2012 -0400"
      },
      "message": "tidy up after d_make_root() conversion\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "48fde701aff662559b38d9a609574068f22d00fe",
      "tree": "aa6b203dc671b51d58575b65eb08310ff8309b60",
      "parents": [
        "6b4231e2f92adbcf96fb2a3fa751d7ca0a61b21f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 22:15:13 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:35 2012 -0400"
      },
      "message": "switch open-coded instances of d_make_root() to new helper\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "381b872cf7942ab8c95de156ce403bd906f3915d",
      "tree": "0dcd83a7c76ed3a6324bef178e02a4ee3ea815bd",
      "parents": [
        "fde7d9049e55ab85a390be7f415d74c9f62dd0f9"
      ],
      "author": {
        "name": "Seiji Aguchi",
        "email": "seiji.aguchi@hds.com",
        "time": "Fri Mar 16 15:36:59 2012 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Mar 16 15:36:59 2012 -0700"
      },
      "message": "pstore: Introduce get_reason_str() to pstore\n\nRecently, there has been some changes in kmsg_dump() below and they have been applied to linus-tree.\n (1) kmsg_dump(KMSG_DUMP_KEXEC) was removed.\n     http://git.kernel.org/?p\u003dlinux/kernel/git/torvalds/linux.git;a\u003dcommitdiff;h\u003da3dd3323058d281abd584b15ad4c5b65064d7a61\n\n (2) The order of \"enum kmsg_dump_reason\" was modified.\n     http://git.kernel.org/?p\u003dlinux/kernel/git/torvalds/linux.git;a\u003dcommitdiff;h\u003dc22ab332902333f83766017478c1ef6607ace681\n\nReplace the fragile reason_str array with a more robust solution that\nwill not be broken by future re-arrangements of the enum values.\n\nSigned-off-by: Seiji Aguchi \u003cseiji.aguchi@hds.com\u003e\nSigned-off-by: Adrian Hunter \u003cadrian.hunter@intel.com\u003e\nAcked-by: Don Zickus \u003cdzickus@redhat.com\u003e\nLink: https://lkml.org/lkml/2012/3/16/417\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "2174f6df7891fa331800beb72634c969f017900b",
      "tree": "f9253298863844903b0ed76c7e9ae1f663b1a9d3",
      "parents": [
        "3d6d8d20ec4fd3b256632edb373a9c504724b8a9"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Fri Nov 18 13:49:00 2011 -0800"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Nov 18 13:49:00 2011 -0800"
      },
      "message": "pstore: gracefully handle NULL pstore_info functions\n\nIf a pstore backend doesn\u0027t want to support various portions of the\npstore interface, it can just leave those functions NULL instead of\ncreating no-op stubs.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "3d6d8d20ec4fd3b256632edb373a9c504724b8a9",
      "tree": "6bb1a530bb50fcdb24a2db48d095480e741ae371",
      "parents": [
        "f6f8285132907757ef84ef8dae0a1244b8cde6ac"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Thu Nov 17 13:13:29 2011 -0800"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Thu Nov 17 13:13:29 2011 -0800"
      },
      "message": "pstore: pass reason to backend write callback\n\nThis allows a backend to filter on the dmesg reason as well as the pstore\nreason. When ramoops is switched to pstore, this is needed since it has\nno interest in storing non-crash dmesg details.\n\nDrop pstore_write() as it has no users, and handling the \"reason\" here\nhas no obviously correct value.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "f6f8285132907757ef84ef8dae0a1244b8cde6ac",
      "tree": "f3d3b37349e79251cfe16ef0f39e0b4af1a266b1",
      "parents": [
        "cfcfc9eca2bcbd26a8e206baeb005b055dbf8e37"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Thu Nov 17 12:58:07 2011 -0800"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Thu Nov 17 12:58:07 2011 -0800"
      },
      "message": "pstore: pass allocated memory region back to caller\n\nThe buf_lock cannot be held while populating the inodes, so make the backend\npass forward an allocated and filled buffer instead. This solves the following\nbacktrace. The effect is that \"buf\" is only ever used to notify the backends\nthat something was written to it, and shouldn\u0027t be used in the read path.\n\nTo replace the buf_lock during the read path, isolate the open/read/close\nloop with a separate mutex to maintain serialized access to the backend.\n\nNote that is is up to the pstore backend to cope if the (*write)() path is\ncalled in the middle of the read path.\n\n[   59.691019] BUG: sleeping function called from invalid context at .../mm/slub.c:847\n[   59.691019] in_atomic(): 0, irqs_disabled(): 1, pid: 1819, name: mount\n[   59.691019] Pid: 1819, comm: mount Not tainted 3.0.8 #1\n[   59.691019] Call Trace:\n[   59.691019]  [\u003c810252d5\u003e] __might_sleep+0xc3/0xca\n[   59.691019]  [\u003c810a26e6\u003e] kmem_cache_alloc+0x32/0xf3\n[   59.691019]  [\u003c810b53ac\u003e] ? __d_lookup_rcu+0x6f/0xf4\n[   59.691019]  [\u003c810b68b1\u003e] alloc_inode+0x2a/0x64\n[   59.691019]  [\u003c810b6903\u003e] new_inode+0x18/0x43\n[   59.691019]  [\u003c81142447\u003e] pstore_get_inode.isra.1+0x11/0x98\n[   59.691019]  [\u003c81142623\u003e] pstore_mkfile+0xae/0x26f\n[   59.691019]  [\u003c810a2a66\u003e] ? kmem_cache_free+0x19/0xb1\n[   59.691019]  [\u003c8116c821\u003e] ? ida_get_new_above+0x140/0x158\n[   59.691019]  [\u003c811708ea\u003e] ? __init_rwsem+0x1e/0x2c\n[   59.691019]  [\u003c810b67e8\u003e] ? inode_init_always+0x111/0x1b0\n[   59.691019]  [\u003c8102127e\u003e] ? should_resched+0xd/0x27\n[   59.691019]  [\u003c8137977f\u003e] ? _cond_resched+0xd/0x21\n[   59.691019]  [\u003c81142abf\u003e] pstore_get_records+0x52/0xa7\n[   59.691019]  [\u003c8114254b\u003e] pstore_fill_super+0x7d/0x91\n[   59.691019]  [\u003c810a7ff5\u003e] mount_single+0x46/0x82\n[   59.691019]  [\u003c8114231a\u003e] pstore_mount+0x15/0x17\n[   59.691019]  [\u003c811424ce\u003e] ? pstore_get_inode.isra.1+0x98/0x98\n[   59.691019]  [\u003c810a8199\u003e] mount_fs+0x5a/0x12d\n[   59.691019]  [\u003c810b9174\u003e] ? alloc_vfsmnt+0xa4/0x14a\n[   59.691019]  [\u003c810b9474\u003e] vfs_kern_mount+0x4f/0x7d\n[   59.691019]  [\u003c810b9d7e\u003e] do_kern_mount+0x34/0xb2\n[   59.691019]  [\u003c810bb15f\u003e] do_mount+0x5fc/0x64a\n[   59.691019]  [\u003c810912fb\u003e] ? strndup_user+0x2e/0x3f\n[   59.691019]  [\u003c810bb3cb\u003e] sys_mount+0x66/0x99\n[   59.691019]  [\u003c8137b537\u003e] sysenter_do_call+0x12/0x26\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "b238b8fa93353ab50c9a2b1e2fa47a0ab01c37cd",
      "tree": "a46a6ce7567d9826ae48c2f3dc5aa0167de1f26c",
      "parents": [
        "abd4d5587be911f63592537284dad78766d97d62"
      ],
      "author": {
        "name": "Chen Gong",
        "email": "gong.chen@linux.intel.com",
        "time": "Wed Oct 12 09:17:24 2011 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Wed Oct 12 09:17:24 2011 -0700"
      },
      "message": "pstore: make pstore write function return normal success/fail value\n\nCurrently pstore write interface employs record id as return\nvalue, but it is not enough because it can\u0027t tell caller if\nthe write operation is successful. Pass the record id back via\nan argument pointer and return zero for success, non-zero for\nfailure.\n\nSigned-off-by: Chen Gong \u003cgong.chen@linux.intel.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "abd4d5587be911f63592537284dad78766d97d62",
      "tree": "50d88b64ded1189d6c816a1f90124a05354914ba",
      "parents": [
        "6dda9266913ad57e09afc1a10d6473f10c806a63"
      ],
      "author": {
        "name": "Don Zickus",
        "email": "dzickus@redhat.com",
        "time": "Fri Aug 12 10:54:51 2011 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Aug 16 11:55:58 2011 -0700"
      },
      "message": "pstore: change mutex locking to spin_locks\n\npstore was using mutex locking to protect read/write access to the\nbackend plug-ins.  This causes problems when pstore is executed in\nan NMI context through panic() -\u003e kmsg_dump().\n\nThis patch changes the mutex to a spin_lock_irqsave then also checks to\nsee if we are in an NMI context.  If we are in an NMI and can\u0027t get the\nlock, just print a message stating that and blow by the locking.\n\nAll this is probably a hack around the bigger locking problem but it\nsolves my current situation of trying to sleep in an NMI context.\n\nTested by loading the lkdtm module and executing a HARDLOCKUP which\nwill cause the machine to panic inside the nmi handler.\n\nSigned-off-by: Don Zickus \u003cdzickus@redhat.com\u003e\nAcked-by: Matthew Garrett \u003cmjg@redhat.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "6dda9266913ad57e09afc1a10d6473f10c806a63",
      "tree": "c29258f6b3fd8a9bb080b395157f013f32c0f313",
      "parents": [
        "93ee7a9340d64f20295aacc3fb6a22b759323280"
      ],
      "author": {
        "name": "Luck, Tony",
        "email": "tony.luck@intel.com",
        "time": "Thu Aug 11 15:14:39 2011 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Aug 16 11:53:01 2011 -0700"
      },
      "message": "pstore: defer inserting OOPS entries into pstore\n\nLife is simple for all the kernel terminating types of kmsg_dump\ncall backs - pstore just saves the tail end of the console log. But\nfor \"oops\" the situation is more complex - the kernel may carry on\nrunning (possibly for ever).  So we\u0027d like to make the logged copy\nof the oops appear in the pstore filesystem - so that the user has\na handle to clear the entry from the persistent backing store (if\nwe don\u0027t, the store may fill with \"oops\" entries (that are also\nsafely stashed in /var/log/messages) leaving no space for real\nerrors.\n\nCurrent code calls pstore_mkfile() immediately. But this may\nnot be safe. The oops could have happened with arbitrary locks\nheld, or in interrupt or NMI context. So allocating memory and\ncalling into generic filesystem code seems unwise.\n\nThis patch defers making the entry appear. At the time\nof the oops, we merely set a flag \"pstore_new_entry\" noting that\na new entry has been added. A periodic timer checks once a minute\nto see if the flag is set - if so, it schedules a work queue to\nrescan the backing store and make all new entries appear in the\npstore filesystem.\n\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "dee28e72b619b48ec80a9e5509db458dbe66f71f",
      "tree": "781ef74fc42193f05877af53fe0787d175181bd7",
      "parents": [
        "b94fdd077eef5e6cab56836bf62695b497946716"
      ],
      "author": {
        "name": "Matthew Garrett",
        "email": "mjg@redhat.com",
        "time": "Thu Jul 21 16:57:55 2011 -0400"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 22 16:14:39 2011 -0700"
      },
      "message": "pstore: Allow the user to explicitly choose a backend\n\npstore only allows one backend to be registered at present, but the\nsystem may provide several. Add a parameter to allow the user to choose\nwhich backend will be used rather than just relying on load order.\n\nSigned-off-by: Matthew Garrett \u003cmjg@redhat.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "b94fdd077eef5e6cab56836bf62695b497946716",
      "tree": "f1278f560084e6689a88a4e47f81484ffdb113df",
      "parents": [
        "56280682ceeef74b692b3e21d1872049eea7c887"
      ],
      "author": {
        "name": "Matthew Garrett",
        "email": "mjg@redhat.com",
        "time": "Thu Jul 21 16:57:54 2011 -0400"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 22 16:14:29 2011 -0700"
      },
      "message": "pstore: Make \"part\" unsigned\n\nWe\u0027ll never have a negative part, so just make this an unsigned int.\n\nSigned-off-by: Matthew Garrett \u003cmjg@redhat.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "56280682ceeef74b692b3e21d1872049eea7c887",
      "tree": "6d00729db23dff065ad60bf2f7be3f96b6fd4008",
      "parents": [
        "638c1fd3033c76778e6d9975ad8a4a9cdd5b96d9"
      ],
      "author": {
        "name": "Matthew Garrett",
        "email": "mjg@redhat.com",
        "time": "Thu Jul 21 16:57:53 2011 -0400"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 22 16:14:20 2011 -0700"
      },
      "message": "pstore: Add extra context for writes and erases\n\nEFI only provides small amounts of individual storage, and conventionally\nputs metadata in the storage variable name. Rather than add a metadata\nheader to the (already limited) variable storage, it\u0027s easier for us to\nmodify pstore to pass all the information we need to construct a unique\nvariable name to the appropriate functions.\n\nSigned-off-by: Matthew Garrett \u003cmjg@redhat.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "638c1fd3033c76778e6d9975ad8a4a9cdd5b96d9",
      "tree": "de8b772157162b8a7a0901f4df5fb25faef6b21d",
      "parents": [
        "02f8c6aee8df3cdc935e9bdd4f2d020306035dbe"
      ],
      "author": {
        "name": "Matthew Garrett",
        "email": "mjg@redhat.com",
        "time": "Thu Jul 21 16:57:52 2011 -0400"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Jul 22 16:14:06 2011 -0700"
      },
      "message": "pstore: Extend API for more flexibility in new backends\n\nSome pstore implementations may not have a static context, so extend the\nAPI to pass the pstore_info struct to all calls and allow for a context\npointer.\n\nSigned-off-by: Matthew Garrett \u003cmjg@redhat.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "06cf91b4b4aafa50ee0a94c81d2c6922a18af242",
      "tree": "f45fe916103b323a714c8958048b8adab1f944b1",
      "parents": [
        "8d38d74b648513dd8ed8bd2b67d899208ef4e09e"
      ],
      "author": {
        "name": "Chen Gong",
        "email": "gong.chen@linux.intel.com",
        "time": "Mon May 16 11:00:27 2011 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Mon May 16 11:05:00 2011 -0700"
      },
      "message": "pstore: fix pstore filesystem mount/remount issue\n\nCurrently after mount/remount operation on pstore filesystem,\nthe content on pstore will be lost. It is because current ERST\nimplementation doesn\u0027t support multi-user usage, which moves\ninternal pointer to the end after accessing it. Adding\nmulti-user support for pstore usage.\n\nSigned-off-by: Chen Gong \u003cgong.chen@linux.intel.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "8d38d74b648513dd8ed8bd2b67d899208ef4e09e",
      "tree": "9746a4273b2ffb68a298ce038eb196f0f65452bb",
      "parents": [
        "693d92a1bbc9e42681c42ed190bd42b636ca876f"
      ],
      "author": {
        "name": "Chen Gong",
        "email": "gong.chen@linux.intel.com",
        "time": "Mon May 16 10:58:57 2011 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Mon May 16 11:04:51 2011 -0700"
      },
      "message": "pstore: fix one type of return value in pstore\n\nthe return type of function _read_ in pstore is size_t,\nbut in the callback function of _read_, the logic doesn\u0027t\nconsider it too much, which means if negative value (assuming\nerror here) is returned, it will be converted to positive because\nof type casting. ssize_t is enough for this function.\n\nSigned-off-by: Chen Gong \u003cgong.chen@linux.intel.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "9f6af27fb693c633cc46d36fc1d85efe6d6fbc17",
      "tree": "d5474b26be0995dbe650dcd0be79a9f046335315",
      "parents": [
        "eddecbb601c9ea3fab7e67d7892010fc9426d1e6"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Mar 22 16:01:49 2011 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Mar 22 16:01:49 2011 -0700"
      },
      "message": "pstore: cleanups to pstore_dump()\n\npstore_dump() can be called with many different \"reason\" codes. Save\nthe name of the code in the persistent store record.\n\nAlso - only worthwhile calling pstore_mkfile for KMSG_DUMP_OOPS - that\nis the only one where the kernel will continue running.\n\nReviewed-by: Seiji Aguchi \u003cseiji.aguchi@hds.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "366f7e7a79b19bd8c4e8f55fdf12b81538d1a7a4",
      "tree": "0c43335ab9e91ca895fdec82d1327cec16dcb645",
      "parents": [
        "10effcb548c170d59ea1d2152f2ee0ad45ce4c9d"
      ],
      "author": {
        "name": "Luck, Tony",
        "email": "tony.luck@intel.com",
        "time": "Fri Mar 18 15:33:43 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 21 13:50:05 2011 -0700"
      },
      "message": "pstore: use mount option instead sysfs to tweak kmsg_bytes\n\n/sys/fs is a somewhat strange way to tweak what could more\nobviously be tuned with a mount option.\n\nSuggested-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a872d5101008b091035d579897bccefdeff70def",
      "tree": "bd67c94ab043022f3ab0e9cf8954e5c69a10f37b",
      "parents": [
        "b7ed78f56575074f29ec99d8984f347f6c99c914"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Mar 18 11:44:48 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 21 00:45:38 2011 -0400"
      },
      "message": "pstore: fix leaking -\u003ei_private\n\nMove kfree() of i_private out of -\u003eunlink() and into -\u003eevict_inode()\n\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fbe0aa1f3d16fac5b641c0c1697371dcbe45b569",
      "tree": "fc4dc844d89ea78ec134fbe1bbcad3af00bad344",
      "parents": [
        "474a00ee1306eb7e82329fdc28b6471a99facba1"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@gmail.com",
        "time": "Thu Mar 17 16:29:15 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 17 22:08:13 2011 -0400"
      },
      "message": "Some fixes for pstore\n\n1) Change from -\u003eget_sb() to -\u003emount()\n2) Use mount_single() instead of mount_nodev()\n3) Pulled in ramfs_get_inode() \u0026 trimmed to what I need for pstore\n4) Drop the ugly pstore_writefile() Just save data using kmalloc() and\n   provide a pstore_file_read() that uses simple_read_from_buffer().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "168f2e14319aba3125946649604e858cbae85be6",
      "tree": "16a811b09a607ccb4e8de13da744b7167346ab8e",
      "parents": [
        "0bb77c465f02e8281e24b9f02e7dc8a7e2b81ee2"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Thu Jan 06 16:58:58 2011 -0800"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Thu Jan 06 16:58:58 2011 -0800"
      },
      "message": "pstore: fix build warning for unused return value from sysfs_create_file\n\nfs/pstore/inode.c: In function \u0027init_pstore_fs\u0027:\nfs/pstore/inode.c:266: warning: ignoring return value of \u0027sysfs_create_file\u0027, declared with attribute warn_unused_result\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "ca01d6dd2d7a2652000307520777538740efc286",
      "tree": "f419325637badb0ef7a3bfa29d520be2f5282220",
      "parents": [
        "90a8a73c06cc32b609a880d48449d7083327e11a"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Dec 28 14:25:21 2010 -0800"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Dec 28 14:25:21 2010 -0800"
      },
      "message": "pstore: new filesystem interface to platform persistent storage\n\nSome platforms have a small amount of non-volatile storage that\ncan be used to store information useful to diagnose the cause of\na system crash.  This is the generic part of a file system interface\nthat presents information from the crash as a series of files in\n/dev/pstore.  Once the information has been seen, the underlying\nstorage is freed by deleting the files.\n\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    }
  ]
}
