)]}'
{
  "log": [
    {
      "commit": "c05c2ec96bb8b7310da1055c7b9d786a3ec6dc0c",
      "tree": "462696ac1f6dda50a8f49d5d5ac2a93f8a16adec",
      "parents": [
        "e9dcfaff0105045d6bbacb7620ee13f1976ecf07",
        "910cd32e552ea09caa89cdbe328e468979b030dd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 31 07:55:14 2016 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 31 07:55:14 2016 -0500"
      },
      "message": "Merge branch \u0027parisc-4.6-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux\n\nPull parisc fixes from Helge Deller:\n \"Fix seccomp filter support and SIGSYS signals on compat kernel.\n\n  Both patches are tagged for v4.5 stable kernel\"\n\n* \u0027parisc-4.6-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:\n  parisc: Fix and enable seccomp filter support\n  parisc: Fix SIGSYS signals in compat case\n"
    },
    {
      "commit": "e9dcfaff0105045d6bbacb7620ee13f1976ecf07",
      "tree": "226df86064dc8dd5b51ca03ce1ade33cfec682ea",
      "parents": [
        "ca4572042e41a1aed2139ef66b0427c1f8d10179",
        "7500c38ac3258815f86f41744a538850c3221b23"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 31 07:19:39 2016 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 31 07:19:39 2016 -0500"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs fix from Al Viro.\n\nAutomount handling was broken by commit e3c13928086f (\"namei: massage\nlookup_slow() to be usable by lookup_one_len_unlocked()\") moving the\ntest for negative dentry too early.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:\n  fix the braino in \"namei: massage lookup_slow() to be usable by lookup_one_len_unlocked()\"\n"
    },
    {
      "commit": "ca4572042e41a1aed2139ef66b0427c1f8d10179",
      "tree": "dbf87f04d11ebdee114ba8d210f193766fa5ecb7",
      "parents": [
        "c5bce408e4b53e4498ac75c3c39eaf7ca9b7f296",
        "8d8ee18cc707f498b6dad18915576f23b00bcff8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 31 07:13:56 2016 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 31 07:13:56 2016 -0500"
      },
      "message": "Merge tag \u0027gpio-v4.6-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio\n\nPull GPIO fixes from Linus Walleij:\n \"Here are two GPIO fixes for the v4.6 series, both in drivers:\n\n   - Prevent NULL dereference in the Xgene driver\n   - Fix an uninitialized spinlock in the menz127 driver\"\n\n* tag \u0027gpio-v4.6-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:\n  gpio: xgene: Prevent NULL pointer dereference\n  gpio: menz127: Drop lock field from struct men_z127_gpio\n"
    },
    {
      "commit": "c5bce408e4b53e4498ac75c3c39eaf7ca9b7f296",
      "tree": "018b4fc5db6c0e9d69bcfdd1852853f112ef79ce",
      "parents": [
        "1e6d88ccf41c7ef2d6c99aa5e7fb9215aa0e5423",
        "fc0c2028135c7f75fce36b90e44efb8003a9173b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 31 06:56:50 2016 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 31 06:56:50 2016 -0500"
      },
      "message": "Merge branch \u0027libnvdimm-for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm\n\nPull nvdimm mcsafe_memcpy use from Dan Williams:\n \"Now that mcsafe_memcpy() has landed, and the return value was been\n  clarified in commit cbf8b5a2b649 (\"x86/mm, x86/mce: Fix return\n  type/value for memcpy_mcsafe()\"), let\u0027s hook up its primary usage in\n  the pmem driver.\n\n  The compilation problems from the initial posting have been fixed,\n  this has appeared in a -next release with no reported issues, and it\n  picked up an ack from Ingo.  There is no pressing need to merge this\n  in 4.6- rc2.  However, if we wait until 4.7 the new memcpy_mcsafe()\n  capability will ship without a user in 4.6-final\"\n\n* \u0027libnvdimm-for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:\n  x86, pmem: use memcpy_mcsafe() for memcpy_from_pmem()\n"
    },
    {
      "commit": "910cd32e552ea09caa89cdbe328e468979b030dd",
      "tree": "02cc8c1d9d0202d76f988ae242ccbc328a8e43cd",
      "parents": [
        "4f4acc9472e54ce702f1d85fc9e6d57767dec91f"
      ],
      "author": {
        "name": "Helge Deller",
        "email": "deller@gmx.de",
        "time": "Wed Mar 30 14:14:31 2016 +0200"
      },
      "committer": {
        "name": "Helge Deller",
        "email": "deller@gmx.de",
        "time": "Thu Mar 31 12:28:38 2016 +0200"
      },
      "message": "parisc: Fix and enable seccomp filter support\n\nThe seccomp filter support requires careful handling of task registers.  This\nincludes reloading of the return value (%r28) and proper syscall exit if\nsecure_computing() returned -1.\n\nAdditionally we need to sign-extend the syscall number from signed 32bit to\nsigned 64bit in do_syscall_trace_enter() since the ptrace interface only allows\nstoring 32bit values in compat mode.\n\nSigned-off-by: Helge Deller \u003cdeller@gmx.de\u003e\nCc: stable@vger.kernel.org # v4.5\n"
    },
    {
      "commit": "4f4acc9472e54ce702f1d85fc9e6d57767dec91f",
      "tree": "dc5c6676e98ccef6f256fae3e24b2560f935191f",
      "parents": [
        "b562e44f507e863c6792946e4e1b1449fbbac85d"
      ],
      "author": {
        "name": "Helge Deller",
        "email": "deller@gmx.de",
        "time": "Wed Mar 30 14:11:50 2016 +0200"
      },
      "committer": {
        "name": "Helge Deller",
        "email": "deller@gmx.de",
        "time": "Thu Mar 31 12:28:37 2016 +0200"
      },
      "message": "parisc: Fix SIGSYS signals in compat case\n\nSigned-off-by: Helge Deller \u003cdeller@gmx.de\u003e\nCc: stable@vger.kernel.org # v4.5\n"
    },
    {
      "commit": "7500c38ac3258815f86f41744a538850c3221b23",
      "tree": "5de89379a1d4923d9746d0d0747944edd06710d7",
      "parents": [
        "f55532a0c0b8bb6148f4e07853b876ef73bc69ca"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 31 00:23:05 2016 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 31 00:23:05 2016 -0400"
      },
      "message": "fix the braino in \"namei: massage lookup_slow() to be usable by lookup_one_len_unlocked()\"\n\nWe should try to trigger automount *before* bailing out on negative dentry.\n\nReported-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nReported-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nReported-by: Arend van Spriel \u003carend@broadcom.com\u003e\nTested-by: Arend van Spriel \u003carend@broadcom.com\u003e\nTested-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1e6d88ccf41c7ef2d6c99aa5e7fb9215aa0e5423",
      "tree": "62f5250921c403703c7050f44d33fd2dafce899e",
      "parents": [
        "62f444e0548eb503b42c8447675b468f5cf40c69",
        "8fe889274c7a4d95c3e2d06f87ead499ea6faa2d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 20:40:42 2016 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 20:40:42 2016 -0500"
      },
      "message": "Merge tag \u0027nios2-v4.6-rc2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lftan/nios2\n\nPull nios2 fix from Ley Foon Tan:\n \"Replace fdt_translate_address with of_flat_dt_translate_address\"\n\nFixes a build failure.\n\n* tag \u0027nios2-v4.6-rc2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lftan/nios2:\n  nios2: Replace fdt_translate_address with of_flat_dt_translate_address\n"
    },
    {
      "commit": "8fe889274c7a4d95c3e2d06f87ead499ea6faa2d",
      "tree": "2d13b100c85be4fae7c6c3930b974e1410f050f6",
      "parents": [
        "f55532a0c0b8bb6148f4e07853b876ef73bc69ca"
      ],
      "author": {
        "name": "Guenter Roeck",
        "email": "linux@roeck-us.net",
        "time": "Tue Mar 29 17:02:13 2016 +0800"
      },
      "committer": {
        "name": "Ley Foon Tan",
        "email": "lftan@altera.com",
        "time": "Thu Mar 31 08:15:45 2016 +0800"
      },
      "message": "nios2: Replace fdt_translate_address with of_flat_dt_translate_address\n\nnios2 builds fail with the following build error.\n\narch/nios2/kernel/prom.c: In function \u0027early_init_dt_scan_serial\u0027:\narch/nios2/kernel/prom.c:100:2: error:\n\timplicit declaration of function \u0027fdt_translate_address\u0027\n\nCommit c90fe9c0394b (\"of: earlycon: Move address translation to\nof_setup_earlycon()\") replaced fdt_translate_address() with\nof_flat_dt_translate_address() but missed updating the nios2 code.\n\nFixes: c90fe9c0394b (\"of: earlycon: Move address translation to of_setup_earlycon()\")\nCc: Peter Hurley \u003cpeter@hurleysoftware.com\u003e\nCc: Rob Herring \u003crobh@kernel.org\u003e\nSigned-off-by: Guenter Roeck \u003clinux@roeck-us.net\u003e\nAcked-by: Ley Foon Tan \u003clftan@altera.com\u003e\n"
    },
    {
      "commit": "62f444e0548eb503b42c8447675b468f5cf40c69",
      "tree": "cc2b169aa9f9d5f0bbe8a77b95ee5eba20c3033e",
      "parents": [
        "07c0db771dffe5856c8456e40e2d3066a351e270",
        "e54358915d0a00399c11c2c23ae1be674cba188a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 13:28:34 2016 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 13:28:34 2016 -0500"
      },
      "message": "Merge branch \u0027linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6\n\nPull crypto fix from Herbert Xu:\n \"This fixes a bug in pkcs7_validate_trust and its users where the\n  output value may in fact be taken from uninitialised memory\"\n\n* \u0027linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:\n  PKCS#7: pkcs7_validate_trust(): initialize the _trusted output argument\n"
    },
    {
      "commit": "07c0db771dffe5856c8456e40e2d3066a351e270",
      "tree": "a8f1d778efe51ae60a230d1d908baedebf0f1bde",
      "parents": [
        "8b8c877febd2610050758f1b7b97050a7d2dc794",
        "82c7d823cc31cf56d964eebe1f91aaf1691cddce"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 13:24:28 2016 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 13:24:28 2016 -0500"
      },
      "message": "Merge tag \u0027dlm-4.6-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm\n\nPull dlm fix from David Teigland:\n \"This fixes a bug from the configfs cleanup\"\n\n* tag \u0027dlm-4.6-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm:\n  dlm: config: Fix ENOMEM failures in make_cluster()\n"
    },
    {
      "commit": "8b8c877febd2610050758f1b7b97050a7d2dc794",
      "tree": "8c47cb2bbc0ede9c9616eed76042e052eb828131",
      "parents": [
        "1993b176a8224e371e0732ffada7ab9eb3b0912b",
        "3c2e2266a5bd2d1cef258e6e54dca1d99946379f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 13:22:47 2016 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 13:22:47 2016 -0500"
      },
      "message": "Merge tag \u0027hwmon-for-linus-v4.6-rc2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging\n\nPull hwmon fix from Guenter Roeck:\n \"Fix crash due to NULL pointer access in max1111 driver\"\n\n* tag \u0027hwmon-for-linus-v4.6-rc2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:\n  hwmon: (max1111) Return -ENODEV from max1111_read_channel if not instantiated\n"
    },
    {
      "commit": "8d8ee18cc707f498b6dad18915576f23b00bcff8",
      "tree": "bb2862066c6a7494e3e1b22d56961db3cf740f0b",
      "parents": [
        "fd975a7b180c9a8f6e02d2251eaabe9b0dcfeed6"
      ],
      "author": {
        "name": "Axel Lin",
        "email": "axel.lin@ingics.com",
        "time": "Mon Mar 21 20:03:50 2016 +0800"
      },
      "committer": {
        "name": "Linus Walleij",
        "email": "linus.walleij@linaro.org",
        "time": "Wed Mar 30 10:39:39 2016 +0200"
      },
      "message": "gpio: xgene: Prevent NULL pointer dereference\n\nplatform_get_resource() can return NULL, thus add NULL test to prevent NULL\npointer dereference.\n\nSigned-off-by: Axel Lin \u003caxel.lin@ingics.com\u003e\nSigned-off-by: Linus Walleij \u003clinus.walleij@linaro.org\u003e\n"
    },
    {
      "commit": "fd975a7b180c9a8f6e02d2251eaabe9b0dcfeed6",
      "tree": "8e0446439d1467ea8ca1e37301fa037363630f72",
      "parents": [
        "f55532a0c0b8bb6148f4e07853b876ef73bc69ca"
      ],
      "author": {
        "name": "Axel Lin",
        "email": "axel.lin@ingics.com",
        "time": "Wed Mar 09 20:38:55 2016 +0800"
      },
      "committer": {
        "name": "Linus Walleij",
        "email": "linus.walleij@linaro.org",
        "time": "Wed Mar 30 10:39:39 2016 +0200"
      },
      "message": "gpio: menz127: Drop lock field from struct men_z127_gpio\n\nCurrent code uses a uninitialized spin lock.\nbgpio_init() already initialized a spin lock, so let\u0027s switch to use\n\u0026gc-\u003ebgpio_lock instead and remove the lock from struct men_z127_gpio.\n\nFixes: f436bc2726c6 \"gpio: add driver for MEN 16Z127 GPIO controller\"\nSigned-off-by: Axel Lin \u003caxel.lin@ingics.com\u003e\nSigned-off-by: Linus Walleij \u003clinus.walleij@linaro.org\u003e\n"
    },
    {
      "commit": "82c7d823cc31cf56d964eebe1f91aaf1691cddce",
      "tree": "fb7acd90ac82b9e7714d797ddccdca7550f9bd8d",
      "parents": [
        "f55532a0c0b8bb6148f4e07853b876ef73bc69ca"
      ],
      "author": {
        "name": "Andrew Price",
        "email": "anprice@redhat.com",
        "time": "Tue Mar 22 17:36:34 2016 +0000"
      },
      "committer": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Tue Mar 29 10:28:08 2016 -0500"
      },
      "message": "dlm: config: Fix ENOMEM failures in make_cluster()\n\nCommit 1ae1602de0 \"configfs: switch -\u003edefault groups to a linked list\"\nleft the NULL gps pointer behind after removing the kcalloc() call which\nmade it non-NULL. It also left the !gps check in place so make_cluster()\nnow fails with ENOMEM. Remove the remaining uses of the gps variable to\nfix that.\n\nReviewed-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nReviewed-by: Andreas Gruenbacher \u003cagruenba@redhat.com\u003e\nSigned-off-by: Andrew Price \u003canprice@redhat.com\u003e\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\n"
    },
    {
      "commit": "fc0c2028135c7f75fce36b90e44efb8003a9173b",
      "tree": "8fdb218033326310e36d0de2fa89293a0d72d0b3",
      "parents": [
        "f55532a0c0b8bb6148f4e07853b876ef73bc69ca"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 08 10:30:19 2016 -0800"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Mar 28 17:19:31 2016 -0700"
      },
      "message": "x86, pmem: use memcpy_mcsafe() for memcpy_from_pmem()\n\nUpdate the definition of memcpy_from_pmem() to return 0 or a negative\nerror code.  Implement x86/arch_memcpy_from_pmem() with memcpy_mcsafe().\n\nCc: Borislav Petkov \u003cbp@alien8.de\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Andy Lutomirski \u003cluto@amacapital.net\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nReviewed-by: Ross Zwisler \u003cross.zwisler@linux.intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "1993b176a8224e371e0732ffada7ab9eb3b0912b",
      "tree": "f437ed0a2f21386edee1886e8e6fd2f8f230c094",
      "parents": [
        "d4dc3b24427f91f112b18562dac73f7af60b7a21",
        "0d7ef45cdeebcc95d581703f45f6de7b2ee89b8d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:17:02 2016 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:17:02 2016 -0500"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide\n\nPull IDE fixes from David Miller:\n \"Just two small changes:\n\n  1) Remove bogus init annotation in icside, from Arnd Bergmann.\n\n  2) Don\u0027t use zero clock rates in palm_bk3710 driver, from Wolfram\n     Sang\"\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide:\n  ide: palm_bk3710: test clock rate to avoid division by 0\n  ide: icside: remove incorrect initconst annotation\n"
    },
    {
      "commit": "d4dc3b24427f91f112b18562dac73f7af60b7a21",
      "tree": "18a2ff25d7f2b0d5fc5e5cef6b671e8c6a08033c",
      "parents": [
        "ec3c07377bd87e24a9a17a352fa4771173d4638a",
        "9ef595d83aea6b4d93c9a120df3c5db2e226929f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:14:11 2016 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:14:11 2016 -0500"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc\n\nPull sparc fixes from David Miller:\n \"Minor typing cleanup from Joe Perches, and some comment typo fixes\n  from Adam Buchbinder\"\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:\n  sparc: Convert naked unsigned uses to unsigned int\n  sparc: Fix misspellings in comments.\n"
    },
    {
      "commit": "ec3c07377bd87e24a9a17a352fa4771173d4638a",
      "tree": "b6ab626f5c82e13df5d83080e0eef919bd296ba1",
      "parents": [
        "f55532a0c0b8bb6148f4e07853b876ef73bc69ca",
        "35b90a2939a563df4b1f57f18dd925d6aa7cb38a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:04:55 2016 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:04:55 2016 -0500"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile\n\nPull arch/tile bugfixes from Chris Metcalf:\n \"These include updates to MAINTAINERS, some comment spelling fixes, and\n  a bugfix to the tile kgdb.c support\"\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:\n  tile: Fix misspellings in comments.\n  MAINTAINERS: update web link for tile architecture\n  MAINTAINERS: update arch/tile maintainer email domain\n  tile kgdb: fix bug in copy to gdb regs, and optimize memset\n"
    },
    {
      "commit": "3c2e2266a5bd2d1cef258e6e54dca1d99946379f",
      "tree": "b5fea39f361072ec8e6c99fc4ba447a02e9124ed",
      "parents": [
        "f55532a0c0b8bb6148f4e07853b876ef73bc69ca"
      ],
      "author": {
        "name": "Guenter Roeck",
        "email": "linux@roeck-us.net",
        "time": "Sat Mar 26 12:28:05 2016 -0700"
      },
      "committer": {
        "name": "Guenter Roeck",
        "email": "linux@roeck-us.net",
        "time": "Sun Mar 27 10:37:48 2016 -0700"
      },
      "message": "hwmon: (max1111) Return -ENODEV from max1111_read_channel if not instantiated\n\narm:pxa_defconfig can result in the following crash if the max1111 driver\nis not instantiated.\n\nUnhandled fault: page domain fault (0x01b) at 0x00000000\npgd \u003d c0004000\n[00000000] *pgd\u003d00000000\nInternal error: : 1b [#1] PREEMPT ARM\nModules linked in:\nCPU: 0 PID: 300 Comm: kworker/0:1 Not tainted 4.5.0-01301-g1701f680407c #10\nHardware name: SHARP Akita\nWorkqueue: events sharpsl_charge_toggle\ntask: c390a000 ti: c391e000 task.ti: c391e000\nPC is at max1111_read_channel+0x20/0x30\nLR is at sharpsl_pm_pxa_read_max1111+0x2c/0x3c\npc : [\u003cc03aaab0\u003e]    lr : [\u003cc0024b50\u003e]    psr: 20000013\n...\n[\u003cc03aaab0\u003e] (max1111_read_channel) from [\u003cc0024b50\u003e]\n\t\t\t\t\t(sharpsl_pm_pxa_read_max1111+0x2c/0x3c)\n[\u003cc0024b50\u003e] (sharpsl_pm_pxa_read_max1111) from [\u003cc00262e0\u003e]\n\t\t\t\t\t(spitzpm_read_devdata+0x5c/0xc4)\n[\u003cc00262e0\u003e] (spitzpm_read_devdata) from [\u003cc0024094\u003e]\n\t\t\t\t\t(sharpsl_check_battery_temp+0x78/0x110)\n[\u003cc0024094\u003e] (sharpsl_check_battery_temp) from [\u003cc0024f9c\u003e]\n\t\t\t\t\t(sharpsl_charge_toggle+0x48/0x110)\n[\u003cc0024f9c\u003e] (sharpsl_charge_toggle) from [\u003cc004429c\u003e]\n\t\t\t\t\t(process_one_work+0x14c/0x48c)\n[\u003cc004429c\u003e] (process_one_work) from [\u003cc0044618\u003e] (worker_thread+0x3c/0x5d4)\n[\u003cc0044618\u003e] (worker_thread) from [\u003cc004a238\u003e] (kthread+0xd0/0xec)\n[\u003cc004a238\u003e] (kthread) from [\u003cc000a670\u003e] (ret_from_fork+0x14/0x24)\n\nThis can occur because the SPI controller driver (SPI_PXA2XX) is built as\nmodule and thus not necessarily loaded. While building SPI_PXA2XX into the\nkernel would make the problem disappear, it appears prudent to ensure that\nthe driver is instantiated before accessing its data structures.\n\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Guenter Roeck \u003clinux@roeck-us.net\u003e\n"
    },
    {
      "commit": "f55532a0c0b8bb6148f4e07853b876ef73bc69ca",
      "tree": "6d3e0b7629210b56f8d6cfa39184c878d8a15367",
      "parents": [
        "d5a38f6e4668b3110a66cd96ce2096184bf66def"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 26 16:03:24 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 26 16:03:24 2016 -0700"
      },
      "message": "Linux 4.6-rc1\n"
    },
    {
      "commit": "d5a38f6e4668b3110a66cd96ce2096184bf66def",
      "tree": "bd2209de25a343e7b01d143abce7bf774122227f",
      "parents": [
        "698f415cf5756e320623bdb015a600945743377c",
        "5ee61e95b6b33c82f6fa1382585faed66aa01245"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 26 15:53:16 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 26 15:53:16 2016 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\nPull Ceph updates from Sage Weil:\n \"There is quite a bit here, including some overdue refactoring and\n  cleanup on the mon_client and osd_client code from Ilya, scattered\n  writeback support for CephFS and a pile of bug fixes from Zheng, and a\n  few random cleanups and fixes from others\"\n\n[ I already decided not to pull this because of it having been rebased\n  recently, but ended up changing my mind after all.  Next time I\u0027ll\n  really hold people to it.  Oh well.   - Linus ]\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (34 commits)\n  libceph: use KMEM_CACHE macro\n  ceph: use kmem_cache_zalloc\n  rbd: use KMEM_CACHE macro\n  ceph: use lookup request to revalidate dentry\n  ceph: kill ceph_get_dentry_parent_inode()\n  ceph: fix security xattr deadlock\n  ceph: don\u0027t request vxattrs from MDS\n  ceph: fix mounting same fs multiple times\n  ceph: remove unnecessary NULL check\n  ceph: avoid updating directory inode\u0027s i_size accidentally\n  ceph: fix race during filling readdir cache\n  libceph: use sizeof_footer() more\n  ceph: kill ceph_empty_snapc\n  ceph: fix a wrong comparison\n  ceph: replace CURRENT_TIME by current_fs_time()\n  ceph: scattered page writeback\n  libceph: add helper that duplicates last extent operation\n  libceph: enable large, variable-sized OSD requests\n  libceph: osdc-\u003ereq_mempool should be backed by a slab pool\n  libceph: make r_request msg_size calculation clearer\n  ...\n"
    },
    {
      "commit": "698f415cf5756e320623bdb015a600945743377c",
      "tree": "cf39b9233a9aea178156e876843fb742fa5ed070",
      "parents": [
        "b4cec5f66849872d2e9573bc95c2016cb8e530ec",
        "45996492e5c85aa0ac93a95d1b2d1ed56851c865"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 26 12:59:04 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 26 12:59:04 2016 -0700"
      },
      "message": "Merge tag \u0027ofs-pull-tag-1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux\n\nPull orangefs filesystem from Mike Marshall.\n\nThis finally merges the long-pending orangefs filesystem, which has been\nmuch cleaned up with input from Al Viro over the last six months.  From\nthe documentation file:\n\n \"OrangeFS is an LGPL userspace scale-out parallel storage system.  It\n  is ideal for large storage problems faced by HPC, BigData, Streaming\n  Video, Genomics, Bioinformatics.\n\n  Orangefs, originally called PVFS, was first developed in 1993 by Walt\n  Ligon and Eric Blumer as a parallel file system for Parallel Virtual\n  Machine (PVM) as part of a NASA grant to study the I/O patterns of\n  parallel programs.\n\n  Orangefs features include:\n\n    - Distributes file data among multiple file servers\n    - Supports simultaneous access by multiple clients\n    - Stores file data and metadata on servers using local file system\n      and access methods\n    - Userspace implementation is easy to install and maintain\n    - Direct MPI support\n    - Stateless\"\n\nsee Documentation/filesystems/orangefs.txt for more in-depth details.\n\n* tag \u0027ofs-pull-tag-1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux: (174 commits)\n  orangefs: fix orangefs_superblock locking\n  orangefs: fix do_readv_writev() handling of error halfway through\n  orangefs: have -\u003ekill_sb() evict the VFS side of things first\n  orangefs: sanitize -\u003ellseek()\n  orangefs-bufmap.h: trim unused junk\n  orangefs: saner calling conventions for getting a slot\n  orangefs_copy_{to,from}_bufmap(): don\u0027t pass bufmap pointer\n  orangefs: get rid of readdir_handle_s\n  ornagefs: ensure that truncate has an up to date inode size\n  orangefs: move code which sets i_link to orangefs_inode_getattr\n  orangefs: remove needless wrapper around GFP_KERNEL\n  orangefs: remove wrapper around mutex_lock(\u0026inode-\u003ei_mutex)\n  orangefs: refactor inode type or link_target change detection\n  orangefs: use new getattr for revalidate and remove old getattr\n  orangefs: use new getattr in inode getattr and permission\n  orangefs: use new orangefs_inode_getattr to get size in write and llseek\n  orangefs: use new orangefs_inode_getattr to create new inodes\n  orangefs: rename orangefs_inode_getattr to orangefs_inode_old_getattr\n  orangefs: remove inode-\u003ei_lock wrapper\n  orangefs: put register_chrdev immediately before register_filesystem\n  ...\n"
    },
    {
      "commit": "b4cec5f66849872d2e9573bc95c2016cb8e530ec",
      "tree": "4510723798490e1eb1926d7c9ce1b5fce0c3d984",
      "parents": [
        "895a1067d5b83065afbad3bb02c3c464b71f1b3f",
        "4f1b50c3e3082b31c94cee2b897bd9f5d0f3e7c8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 26 11:37:42 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 26 11:37:42 2016 -0700"
      },
      "message": "Merge tag \u0027ntb-4.6\u0027 of git://github.com/jonmason/ntb\n\nPull NTB bug fixes from Jon Mason:\n \"NTB bug fixes for tasklet from spinning forever, link errors,\n  translation window setup, NULL ptr dereference, and ntb-perf errors.\n\n  Also, a modification to the driver API that makes _addr functions\n  optional\"\n\n* tag \u0027ntb-4.6\u0027 of git://github.com/jonmason/ntb:\n  NTB: Remove _addr functions from ntb_hw_amd\n  NTB: Make _addr functions optional in the API\n  NTB: Fix incorrect clean up routine in ntb_perf\n  NTB: Fix incorrect return check in ntb_perf\n  ntb: fix possible NULL dereference\n  ntb: add missing setup of translation window\n  ntb: stop link work when we do not have memory\n  ntb: stop tasklet from spinning forever during shutdown.\n  ntb: perf test: fix address space confusion\n"
    },
    {
      "commit": "895a1067d5b83065afbad3bb02c3c464b71f1b3f",
      "tree": "c284651fe4958bcd7fc589dc4a60c798b79baa2a",
      "parents": [
        "02fc59a0d28fcc839266d56fbfc4ca34d8dbb2ae",
        "c6986be4f9e9c02e63619efd7049ea0cdcf862f6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 26 11:31:01 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 26 11:31:01 2016 -0700"
      },
      "message": "Merge tag \u0027scsi-misc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi\n\nPull more SCSI updates from James Bottomley:\n \"The only new stuff which missed the first pull request is an update to\n  the UFS driver.\n\n  The rest is an assortment of bug fixes and minor tweaks which appeared\n  recently (some are fixes for recent code and some are stuff spotted\n  recently by the checkers or the new gcc-6 compiler [most of Arnd\u0027s\n  stuff])\"\n\n* tag \u0027scsi-misc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (32 commits)\n  scsi_common: do not clobber fixed sense information\n  scsi: ufs: select CONFIG_NLS\n  scsi: fc: use get/put_unaligned64 for wwn access\n  fnic: move printk()s outside of the critical code section.\n  qla2xxx: avoid maybe_uninitialized warning\n  megaraid_sas: add missing curly braces in ioctl handler\n  lpfc: fix misleading indentation\n  scsi_transport_sas: add \u0027scsi_target_id\u0027 sysfs attribute\n  scsi_dh_alua: uninitialized variable in alua_check_vpd()\n  scsi: ufs-qcom: add printouts of testbus debug registers\n  scsi: ufs-qcom: enable/disable the device ref clock\n  scsi: ufs-qcom: set PA_Local_TX_LCC_Enable before link startup\n  scsi: ufs: add device quirk delay before putting UFS rails in LPM\n  scsi: ufs: fix leakage during link off state\n  scsi: ufs: tune UniPro parameters to optimize hibern8 exit time\n  scsi: ufs: handle non spec compliant bkops behaviour by device\n  scsi: ufs: add retry for query descriptors\n  scsi: ufs: add error recovery after DL NAC error\n  scsi: ufs: make error handling bit faster\n  scsi: ufs: disable vccq if it\u0027s not needed by UFS device\n  ...\n"
    },
    {
      "commit": "02fc59a0d28fcc839266d56fbfc4ca34d8dbb2ae",
      "tree": "46b3f557af716ff70113af73c8b826b0ee8fb10e",
      "parents": [
        "606c61a0579669c292dc5f5e1cf898edecfc0d53"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 26 10:13:05 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 26 10:13:05 2016 -0700"
      },
      "message": "f2fs/crypto: fix xts_tweak initialization\n\nCommit 0b81d07790726 (\"fs crypto: move per-file encryption from f2fs\ntree to fs/crypto\") moved the f2fs crypto files to fs/crypto/ and\nrenamed the symbol prefixes from \"f2fs_\" to \"fscrypt_\" (and from \"F2FS_\"\nto just \"FS\" for preprocessor symbols).\n\nBecause of the symbol renaming, it\u0027s a bit hard to see it as a file\nmove: use\n\n    git show -M30 0b81d07790726\n\nto lower the rename detection to just 30% similarity and make git show\nthe files as renamed (the header file won\u0027t be shown as a rename even\nthen - since all it contains is symbol definitions, it looks almost\ncompletely different).\n\nEven with the renames showing as renames, the diffs are not all that\neasy to read, since so much is just the renames.  But Eric Biggers\nnoticed that it\u0027s not just all renames: the initialization of the\nxts_tweak had been broken too, using the inode number rather than the\npage offset.\n\nThat\u0027s not right - it makes the xfs_tweak the same for all pages of each\ninode.  It _might_ make sense to make the xfs_tweak contain both the\noffset _and_ the inode number, but not just the inode number.\n\nReported-by: Eric Biggers \u003cebiggers3@gmail.com\u003e\nCc: Jaegeuk Kim \u003cjaegeuk@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f1b50c3e3082b31c94cee2b897bd9f5d0f3e7c8",
      "tree": "5dcb8b81088f918e74bc58a2a92e80564be6d227",
      "parents": [
        "afc54992296a5e7f7d2e41456ed90789b01a4e7b"
      ],
      "author": {
        "name": "Allen Hubbe",
        "email": "Allen.Hubbe@emc.com",
        "time": "Mon Mar 21 04:53:14 2016 -0400"
      },
      "committer": {
        "name": "Jon Mason",
        "email": "jdmason@kudzu.us",
        "time": "Sat Mar 26 11:44:33 2016 -0400"
      },
      "message": "NTB: Remove _addr functions from ntb_hw_amd\n\nKernel zero day testing warned about address space confusion.  A virtual\niomem address was used where a physical address is expected.  The\noffending functions implement an optional part of the api, so they are\nremoved.  They can be added later, after testing.\n\nFixes: a1b3695820aa490e58915d720a1438069813008b\n\nSigned-off-by: Allen Hubbe \u003cAllen.Hubbe@emc.com\u003e\nAcked-by: Xiangliang Yu \u003cXiangliang.Yu@amd.com\u003e\nSigned-off-by: Jon Mason \u003cjdmason@kudzu.us\u003e\n"
    },
    {
      "commit": "45996492e5c85aa0ac93a95d1b2d1ed56851c865",
      "tree": "3ee74b07ce43cdb0b637c3747fadbb1f2ba59eb6",
      "parents": [
        "6d4c1a30b32a377083900f39c42bcacb633f99a1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 25 19:56:34 2016 -0400"
      },
      "committer": {
        "name": "Mike Marshall",
        "email": "hubcap@omnibond.com",
        "time": "Sat Mar 26 07:22:00 2016 -0400"
      },
      "message": "orangefs: fix orangefs_superblock locking\n\n* switch orangefs_remount() to taking ORANGEFS_SB(sb) instead of sb\n* remove from the list _before_ orangefs_unmount() - request_mutex\nin the latter will make sure that nothing observed in the loop in\nORANGEFS_DEV_REMOUNT_ALL handling will get freed until the end\nof loop\n* on removal, keep the forward pointer and zero the back one.  That\nway we can drop and regain the spinlock in the loop body (again,\nORANGEFS_DEV_REMOUNT_ALL one) and still be able to get to the\nrest of the list.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Mike Marshall \u003chubcap@omnibond.com\u003e\n"
    },
    {
      "commit": "6d4c1a30b32a377083900f39c42bcacb633f99a1",
      "tree": "0ee0925a24065a72acd9213b1a2f98ce67897e2f",
      "parents": [
        "524b1d3095159adeee0305508eefc836a197b681"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 16 20:15:43 2016 -0500"
      },
      "committer": {
        "name": "Mike Marshall",
        "email": "hubcap@omnibond.com",
        "time": "Fri Mar 25 22:30:54 2016 -0400"
      },
      "message": "orangefs: fix do_readv_writev() handling of error halfway through\n\nError should only be returned if nothing had been read/written.\nOtherwise we need to report a short read/write instead.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Mike Marshall \u003chubcap@omnibond.com\u003e\n"
    },
    {
      "commit": "524b1d3095159adeee0305508eefc836a197b681",
      "tree": "8f7edccb39303bac4b771965126f20f078ec5676",
      "parents": [
        "177f8fc491e230c2e7a3ac7d5626dd6f3d94e9f2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 16 21:08:29 2016 -0500"
      },
      "committer": {
        "name": "Mike Marshall",
        "email": "hubcap@omnibond.com",
        "time": "Fri Mar 25 22:30:54 2016 -0400"
      },
      "message": "orangefs: have -\u003ekill_sb() evict the VFS side of things first\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Mike Marshall \u003chubcap@omnibond.com\u003e\n"
    },
    {
      "commit": "177f8fc491e230c2e7a3ac7d5626dd6f3d94e9f2",
      "tree": "459a9dbb6a8a61ab18fd522d701eb6ad27f5b09d",
      "parents": [
        "7df240d771862c31f869d6b9024c1942c1f01521"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 16 20:25:19 2016 -0500"
      },
      "committer": {
        "name": "Mike Marshall",
        "email": "hubcap@omnibond.com",
        "time": "Fri Mar 25 22:30:54 2016 -0400"
      },
      "message": "orangefs: sanitize -\u003ellseek()\n\na) open files can\u0027t have NULL inodes\nb) it\u0027s SEEK_END, not ORANGEFS_SEEK_END; no need to get cute.\nc) make_bad_inode() on lseek()?\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Mike Marshall \u003chubcap@omnibond.com\u003e\n"
    },
    {
      "commit": "7df240d771862c31f869d6b9024c1942c1f01521",
      "tree": "8077075bcdf9b00788767abb48e450e3d87542eb",
      "parents": [
        "b8a99a8f9f0aebf2a75bb0d9280bff7e7ac9b57e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 16 20:12:04 2016 -0500"
      },
      "committer": {
        "name": "Mike Marshall",
        "email": "hubcap@omnibond.com",
        "time": "Fri Mar 25 22:30:54 2016 -0400"
      },
      "message": "orangefs-bufmap.h: trim unused junk\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Mike Marshall \u003chubcap@omnibond.com\u003e\n"
    },
    {
      "commit": "b8a99a8f9f0aebf2a75bb0d9280bff7e7ac9b57e",
      "tree": "d987f21f5f1c7ea83b62fcf7d0bda6f10971d285",
      "parents": [
        "bf6bf606e545cb31c29499b354c13b2621acd649"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 16 20:10:26 2016 -0500"
      },
      "committer": {
        "name": "Mike Marshall",
        "email": "hubcap@omnibond.com",
        "time": "Fri Mar 25 22:30:54 2016 -0400"
      },
      "message": "orangefs: saner calling conventions for getting a slot\n\njust have it return the slot number or -E... - the caller checks\nthe sign anyway\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Mike Marshall \u003chubcap@omnibond.com\u003e\n"
    },
    {
      "commit": "bf6bf606e545cb31c29499b354c13b2621acd649",
      "tree": "237329d42ac5e126d273a31606f9258b04155348",
      "parents": [
        "9f5e2f7f1b4bf7d0b19d88edd9425510fadbb9e4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 16 20:06:19 2016 -0500"
      },
      "committer": {
        "name": "Mike Marshall",
        "email": "hubcap@omnibond.com",
        "time": "Fri Mar 25 22:30:54 2016 -0400"
      },
      "message": "orangefs_copy_{to,from}_bufmap(): don\u0027t pass bufmap pointer\n\nit\u0027s always __orangefs_bufmap\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Mike Marshall \u003chubcap@omnibond.com\u003e\n"
    },
    {
      "commit": "9f5e2f7f1b4bf7d0b19d88edd9425510fadbb9e4",
      "tree": "7c0ac500aa53497534eed471e7889c149876f2c5",
      "parents": [
        "fecd86aac5a7621635b61e7491f0ed73610d76fa"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 16 19:54:13 2016 -0500"
      },
      "committer": {
        "name": "Mike Marshall",
        "email": "hubcap@omnibond.com",
        "time": "Fri Mar 25 22:30:54 2016 -0400"
      },
      "message": "orangefs: get rid of readdir_handle_s\n\nno point, really - we couldn\u0027t keep those across the calls of\ngetdents(); it would be too easy to DoS, having all slots exhausted.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Mike Marshall \u003chubcap@omnibond.com\u003e\n"
    },
    {
      "commit": "606c61a0579669c292dc5f5e1cf898edecfc0d53",
      "tree": "569aa7e9b99571890bfccd7278bbc303cfa0a919",
      "parents": [
        "15dbc136dff62ebefb03353cfb7d308d49b275f3",
        "0fda2788b03c1868e2f20b3b7995b8cc2adf4715"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:59:11 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:59:11 2016 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (patches from Andrew)\n\nMerge fourth patch-bomb from Andrew Morton:\n \"A lot more stuff than expected, sorry.  A bunch of ocfs2 reviewing was\n  finished off.\n\n   - mhocko\u0027s oom-reaper out-of-memory-handler changes\n\n   - ocfs2 fixes and features\n\n   - KASAN feature work\n\n   - various fixes\"\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (42 commits)\n  thp: fix typo in khugepaged_scan_pmd()\n  MAINTAINERS: fill entries for KASAN\n  mm/filemap: generic_file_read_iter(): check for zero reads unconditionally\n  kasan: test fix: warn if the UAF could not be detected in kmalloc_uaf2\n  mm, kasan: stackdepot implementation. Enable stackdepot for SLAB\n  arch, ftrace: for KASAN put hard/soft IRQ entries into separate sections\n  mm, kasan: add GFP flags to KASAN API\n  mm, kasan: SLAB support\n  kasan: modify kmalloc_large_oob_right(), add kmalloc_pagealloc_oob_right()\n  include/linux/oom.h: remove undefined oom_kills_count()/note_oom_kill()\n  mm/page_alloc: prevent merging between isolated and other pageblocks\n  drivers/memstick/host/r592.c: avoid gcc-6 warning\n  ocfs2: extend enough credits for freeing one truncate record while replaying truncate records\n  ocfs2: extend transaction for ocfs2_remove_rightmost_path() and ocfs2_update_edge_lengths() before to avoid inconsistency between inode and et\n  ocfs2/dlm: move lock to the tail of grant queue while doing in-place convert\n  ocfs2: solve a problem of crossing the boundary in updating backups\n  ocfs2: fix occurring deadlock by changing ocfs2_wq from global to local\n  ocfs2/dlm: fix BUG in dlm_move_lockres_to_recovery_list\n  ocfs2/dlm: fix race between convert and recovery\n  ocfs2: fix a deadlock issue in ocfs2_dio_end_io_write()\n  ...\n"
    },
    {
      "commit": "15dbc136dff62ebefb03353cfb7d308d49b275f3",
      "tree": "9a475869d8249268213cd7874c111111611045df",
      "parents": [
        "dad44decc242a7ad185f1001541b0b7d49e2f58e",
        "8e653b654497350f9cb3d6c2088207bc503f2c7c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:55:37 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:55:37 2016 -0700"
      },
      "message": "Merge tag \u0027pm+acpi-4.6-rc1-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm\n\nPull power management fixlet from Rafael Wysocki:\n \"One of commits in my previous pull request changed the permissions of\n  drivers/power/avs/rockchip-io-domain.c to executable by mistake\"\n\n* tag \u0027pm+acpi-4.6-rc1-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:\n  Fix permissions of drivers/power/avs/rockchip-io-domain.c\n"
    },
    {
      "commit": "dad44decc242a7ad185f1001541b0b7d49e2f58e",
      "tree": "def666a53c058ca372ba64be4cb5f57f04352ff8",
      "parents": [
        "c155c7492c9ab81f3d358a10eb4f29376ae53d85",
        "2d5ae5c2c7025b3bac264545f88b4d958fbdccc8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:48:45 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:48:45 2016 -0700"
      },
      "message": "Merge tag \u0027please-pull-preadv2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux\n\nPull ia64 update from Tony Luck:\n \"Wire up new system calls p{read,write}v2 for ia64\"\n\n* tag \u0027please-pull-preadv2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:\n  [IA64] Enable preadv2 and pwritev2 syscalls for ia64\n"
    },
    {
      "commit": "c155c7492c9ab81f3d358a10eb4f29376ae53d85",
      "tree": "9aaebea333934de37ea4d0aa1b5e2e937ebe8a66",
      "parents": [
        "1701f680407c6cc05121566cef5293d33881fe71",
        "d314e9e80c5ea561b73584b73806c2ae9e30f503"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:39:05 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:39:05 2016 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input\n\nPull more input updates from Dmitry Torokhov:\n \"Second round of updates for the input subsystem.\n\n  The BYD PS/2 protocol driver now uses absolute reporting mode and\n  should behave more like other touchpads; Synaptics driver needed to\n  extend one of its quirks to a newer firmware version, and a few USB\n  drivers got tightened up checks for the contents of their descriptors\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:\n  Input: sur40 - fix DMA on stack\n  Input: ati_remote2 - fix crashes on detecting device with invalid descriptor\n  Input: synaptics - handle spurious release of trackstick buttons, again\n  Input: synaptics-rmi4 - remove check of Non-NULL array\n  Input: byd - enable absolute mode\n  Input: ims-pcu - sanity check against missing interfaces\n  Input: melfas_mip4 - add hw_version sysfs attribute\n"
    },
    {
      "commit": "0fda2788b03c1868e2f20b3b7995b8cc2adf4715",
      "tree": "3993e1854919a9741d7aa793af8ac4e258c3c2d6",
      "parents": [
        "0ba1d91df93b33ea2c29390881f0ba13574f1a01"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill.shutemov@linux.intel.com",
        "time": "Fri Mar 25 14:22:20 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "thp: fix typo in khugepaged_scan_pmd()\n\n!PageLRU should lead to SCAN_PAGE_LRU, not SCAN_SCAN_ABORT result.\n\nSigned-off-by: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Ebru Akagunduz \u003cebru.akagunduz@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0ba1d91df93b33ea2c29390881f0ba13574f1a01",
      "tree": "171c310fb3bd3bf21865551617664ec1705eaaa9",
      "parents": [
        "e7080a439a6f507abbc860847c33efc39b5c1c6d"
      ],
      "author": {
        "name": "Andrey Ryabinin",
        "email": "aryabinin@virtuozzo.com",
        "time": "Fri Mar 25 14:22:17 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "MAINTAINERS: fill entries for KASAN\n\nSigned-off-by: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Alexander Potapenko \u003cglider@google.com\u003e\nAcked-by: Dmitry Vyukov \u003cdvyukov@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e7080a439a6f507abbc860847c33efc39b5c1c6d",
      "tree": "e51e1983dcb74fddefe1300598eb2e8b107b41ec",
      "parents": [
        "9dcadd381b1d199074937019d612346c061de415"
      ],
      "author": {
        "name": "Nicolai Stange",
        "email": "nicstange@gmail.com",
        "time": "Fri Mar 25 14:22:14 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "mm/filemap: generic_file_read_iter(): check for zero reads unconditionally\n\nIf\n - generic_file_read_iter() gets called with a zero read length,\n - the read offset is at a page boundary,\n - IOCB_DIRECT is not set\n-  and the page in question hasn\u0027t made it into the page cache yet,\nthen do_generic_file_read() will trigger a readahead with a req_size hint\nof zero.\n\nSince roundup_pow_of_two(0) is undefined, UBSAN reports\n\n  UBSAN: Undefined behaviour in include/linux/log2.h:63:13\n  shift exponent 64 is too large for 64-bit type \u0027long unsigned int\u0027\n  CPU: 3 PID: 1017 Comm: sa1 Tainted: G L 4.5.0-next-20160318+ #14\n  [...]\n  Call Trace:\n   [...]\n   [\u003cffffffff813ef61a\u003e] ondemand_readahead+0x3aa/0x3d0\n   [\u003cffffffff813ef61a\u003e] ? ondemand_readahead+0x3aa/0x3d0\n   [\u003cffffffff813c73bd\u003e] ? find_get_entry+0x2d/0x210\n   [\u003cffffffff813ef9c3\u003e] page_cache_sync_readahead+0x63/0xa0\n   [\u003cffffffff813cc04d\u003e] do_generic_file_read+0x80d/0xf90\n   [\u003cffffffff813cc955\u003e] generic_file_read_iter+0x185/0x420\n   [...]\n   [\u003cffffffff81510b06\u003e] __vfs_read+0x256/0x3d0\n   [...]\n\nwhen get_init_ra_size() gets called from ondemand_readahead().\n\nThe net effect is that the initial readahead size is arch dependent for\nrequested read lengths of zero: for example, since\n\n  1UL \u003c\u003c (sizeof(unsigned long) * 8)\n\nevaluates to 1 on x86 while its result is 0 on ARMv7, the initial readahead\nsize becomes 4 on the former and 0 on the latter.\n\nWhat\u0027s more, whether or not the file access timestamp is updated for zero\nlength reads is decided differently for the two cases of IOCB_DIRECT\nbeing set or cleared: in the first case, generic_file_read_iter()\nexplicitly skips updating that timestamp while in the latter case, it is\nalways updated through the call to do_generic_file_read().\n\nAccording to POSIX, zero length reads \"do not modify the last data access\ntimestamp\" and thus, the IOCB_DIRECT behaviour is POSIXly correct.\n\nLet generic_file_read_iter() unconditionally check the requested read\nlength at its entry and return immediately with success if it is zero.\n\nSigned-off-by: Nicolai Stange \u003cnicstange@gmail.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9dcadd381b1d199074937019d612346c061de415",
      "tree": "dc1f5da028014392088d534d019e3ee3ba788565",
      "parents": [
        "cd11016e5f5212c13c0cec7384a525edc93b4921"
      ],
      "author": {
        "name": "Alexander Potapenko",
        "email": "glider@google.com",
        "time": "Fri Mar 25 14:22:11 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "kasan: test fix: warn if the UAF could not be detected in kmalloc_uaf2\n\nSigned-off-by: Alexander Potapenko \u003cglider@google.com\u003e\nAcked-by: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Joonsoo Kim \u003ciamjoonsoo.kim@lge.com\u003e\nCc: Andrey Konovalov \u003cadech.fo@gmail.com\u003e\nCc: Dmitry Vyukov \u003cdvyukov@google.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Konstantin Serebryany \u003ckcc@google.com\u003e\nCc: Dmitry Chernenkov \u003cdmitryc@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cd11016e5f5212c13c0cec7384a525edc93b4921",
      "tree": "31e2efd8d8eb6be398ccd0789bb9e865b299dc68",
      "parents": [
        "be7635e7287e0e8013af3c89a6354a9e0182594c"
      ],
      "author": {
        "name": "Alexander Potapenko",
        "email": "glider@google.com",
        "time": "Fri Mar 25 14:22:08 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "mm, kasan: stackdepot implementation. Enable stackdepot for SLAB\n\nImplement the stack depot and provide CONFIG_STACKDEPOT.  Stack depot\nwill allow KASAN store allocation/deallocation stack traces for memory\nchunks.  The stack traces are stored in a hash table and referenced by\nhandles which reside in the kasan_alloc_meta and kasan_free_meta\nstructures in the allocated memory chunks.\n\nIRQ stack traces are cut below the IRQ entry point to avoid unnecessary\nduplication.\n\nRight now stackdepot support is only enabled in SLAB allocator.  Once\nKASAN features in SLAB are on par with those in SLUB we can switch SLUB\nto stackdepot as well, thus removing the dependency on SLUB stack\nbookkeeping, which wastes a lot of memory.\n\nThis patch is based on the \"mm: kasan: stack depots\" patch originally\nprepared by Dmitry Chernenkov.\n\nJoonsoo has said that he plans to reuse the stackdepot code for the\nmm/page_owner.c debugging facility.\n\n[akpm@linux-foundation.org: s/depot_stack_handle/depot_stack_handle_t]\n[aryabinin@virtuozzo.com: comment style fixes]\nSigned-off-by: Alexander Potapenko \u003cglider@google.com\u003e\nSigned-off-by: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Joonsoo Kim \u003ciamjoonsoo.kim@lge.com\u003e\nCc: Andrey Konovalov \u003cadech.fo@gmail.com\u003e\nCc: Dmitry Vyukov \u003cdvyukov@google.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Konstantin Serebryany \u003ckcc@google.com\u003e\nCc: Dmitry Chernenkov \u003cdmitryc@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "be7635e7287e0e8013af3c89a6354a9e0182594c",
      "tree": "2c88dacfaa9d9b6a0479264c871142cf80e480de",
      "parents": [
        "505f5dcb1c419e55a9621a01f83eb5745d8d7398"
      ],
      "author": {
        "name": "Alexander Potapenko",
        "email": "glider@google.com",
        "time": "Fri Mar 25 14:22:05 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "arch, ftrace: for KASAN put hard/soft IRQ entries into separate sections\n\nKASAN needs to know whether the allocation happens in an IRQ handler.\nThis lets us strip everything below the IRQ entry point to reduce the\nnumber of unique stack traces needed to be stored.\n\nMove the definition of __irq_entry to \u003clinux/interrupt.h\u003e so that the\nusers don\u0027t need to pull in \u003clinux/ftrace.h\u003e.  Also introduce the\n__softirq_entry macro which is similar to __irq_entry, but puts the\ncorresponding functions to the .softirqentry.text section.\n\nSigned-off-by: Alexander Potapenko \u003cglider@google.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Joonsoo Kim \u003ciamjoonsoo.kim@lge.com\u003e\nCc: Andrey Konovalov \u003cadech.fo@gmail.com\u003e\nCc: Dmitry Vyukov \u003cdvyukov@google.com\u003e\nCc: Andrey Ryabinin \u003cryabinin.a.a@gmail.com\u003e\nCc: Konstantin Serebryany \u003ckcc@google.com\u003e\nCc: Dmitry Chernenkov \u003cdmitryc@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "505f5dcb1c419e55a9621a01f83eb5745d8d7398",
      "tree": "4d608fdad5254972f8bba02f437060764e30bc6f",
      "parents": [
        "7ed2f9e663854db313f177a511145630e398b402"
      ],
      "author": {
        "name": "Alexander Potapenko",
        "email": "glider@google.com",
        "time": "Fri Mar 25 14:22:02 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "mm, kasan: add GFP flags to KASAN API\n\nAdd GFP flags to KASAN hooks for future patches to use.\n\nThis patch is based on the \"mm: kasan: unified support for SLUB and SLAB\nallocators\" patch originally prepared by Dmitry Chernenkov.\n\nSigned-off-by: Alexander Potapenko \u003cglider@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Joonsoo Kim \u003ciamjoonsoo.kim@lge.com\u003e\nCc: Andrey Konovalov \u003cadech.fo@gmail.com\u003e\nCc: Dmitry Vyukov \u003cdvyukov@google.com\u003e\nCc: Andrey Ryabinin \u003cryabinin.a.a@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Konstantin Serebryany \u003ckcc@google.com\u003e\nCc: Dmitry Chernenkov \u003cdmitryc@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ed2f9e663854db313f177a511145630e398b402",
      "tree": "f9dfba81a688864a4d78689470f624b0a482f545",
      "parents": [
        "e6e8379c876de16c6b78f83b15d5ac32c79cb440"
      ],
      "author": {
        "name": "Alexander Potapenko",
        "email": "glider@google.com",
        "time": "Fri Mar 25 14:21:59 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "mm, kasan: SLAB support\n\nAdd KASAN hooks to SLAB allocator.\n\nThis patch is based on the \"mm: kasan: unified support for SLUB and SLAB\nallocators\" patch originally prepared by Dmitry Chernenkov.\n\nSigned-off-by: Alexander Potapenko \u003cglider@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Joonsoo Kim \u003ciamjoonsoo.kim@lge.com\u003e\nCc: Andrey Konovalov \u003cadech.fo@gmail.com\u003e\nCc: Dmitry Vyukov \u003cdvyukov@google.com\u003e\nCc: Andrey Ryabinin \u003cryabinin.a.a@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Konstantin Serebryany \u003ckcc@google.com\u003e\nCc: Dmitry Chernenkov \u003cdmitryc@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e6e8379c876de16c6b78f83b15d5ac32c79cb440",
      "tree": "9ee9ebd98fbd1c61acc8b863b5bf1d4b36c5f51e",
      "parents": [
        "aaf4fb712b8311d8b950e89937479d61e9c25ba8"
      ],
      "author": {
        "name": "Alexander Potapenko",
        "email": "glider@google.com",
        "time": "Fri Mar 25 14:21:56 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "kasan: modify kmalloc_large_oob_right(), add kmalloc_pagealloc_oob_right()\n\nThis patchset implements SLAB support for KASAN\n\nUnlike SLUB, SLAB doesn\u0027t store allocation/deallocation stacks for heap\nobjects, therefore we reimplement this feature in mm/kasan/stackdepot.c.\nThe intention is to ultimately switch SLUB to use this implementation as\nwell, which will save a lot of memory (right now SLUB bloats each object\nby 256 bytes to store the allocation/deallocation stacks).\n\nAlso neither SLUB nor SLAB delay the reuse of freed memory chunks, which\nis necessary for better detection of use-after-free errors.  We\nintroduce memory quarantine (mm/kasan/quarantine.c), which allows\ndelayed reuse of deallocated memory.\n\nThis patch (of 7):\n\nRename kmalloc_large_oob_right() to kmalloc_pagealloc_oob_right(), as\nthe test only checks the page allocator functionality.  Also reimplement\nkmalloc_large_oob_right() so that the test allocates a large enough\nchunk of memory that still does not trigger the page allocator fallback.\n\nSigned-off-by: Alexander Potapenko \u003cglider@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Joonsoo Kim \u003ciamjoonsoo.kim@lge.com\u003e\nCc: Andrey Konovalov \u003cadech.fo@gmail.com\u003e\nCc: Dmitry Vyukov \u003cdvyukov@google.com\u003e\nCc: Andrey Ryabinin \u003cryabinin.a.a@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Konstantin Serebryany \u003ckcc@google.com\u003e\nCc: Dmitry Chernenkov \u003cdmitryc@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aaf4fb712b8311d8b950e89937479d61e9c25ba8",
      "tree": "0c06964c05a2b66cbb97ba0755a2136bee3c04e7",
      "parents": [
        "d9dddbf556674bf125ecd925b24e43a5cf2a568a"
      ],
      "author": {
        "name": "Tetsuo Handa",
        "email": "penguin-kernel@I-love.SAKURA.ne.jp",
        "time": "Fri Mar 25 14:21:53 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "include/linux/oom.h: remove undefined oom_kills_count()/note_oom_kill()\n\nA leftover from commit c32b3cbe0d06 (\"oom, PM: make OOM detection in the\nfreezer path raceless\").\n\nSigned-off-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d9dddbf556674bf125ecd925b24e43a5cf2a568a",
      "tree": "c56f3631764b4629abca28ac90874281c960e3c2",
      "parents": [
        "f419a08fb329e235df0cb8e329cff770e02d171a"
      ],
      "author": {
        "name": "Vlastimil Babka",
        "email": "vbabka@suse.cz",
        "time": "Fri Mar 25 14:21:50 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "mm/page_alloc: prevent merging between isolated and other pageblocks\n\nHanjun Guo has reported that a CMA stress test causes broken accounting of\nCMA and free pages:\n\n\u003e Before the test, I got:\n\u003e -bash-4.3# cat /proc/meminfo | grep Cma\n\u003e CmaTotal:         204800 kB\n\u003e CmaFree:          195044 kB\n\u003e\n\u003e\n\u003e After running the test:\n\u003e -bash-4.3# cat /proc/meminfo | grep Cma\n\u003e CmaTotal:         204800 kB\n\u003e CmaFree:         6602584 kB\n\u003e\n\u003e So the freed CMA memory is more than total..\n\u003e\n\u003e Also the the MemFree is more than mem total:\n\u003e\n\u003e -bash-4.3# cat /proc/meminfo\n\u003e MemTotal:       16342016 kB\n\u003e MemFree:        22367268 kB\n\u003e MemAvailable:   22370528 kB\n\nLaura Abbott has confirmed the issue and suspected the freepage accounting\nrewrite around 3.18/4.0 by Joonsoo Kim.  Joonsoo had a theory that this is\ncaused by unexpected merging between MIGRATE_ISOLATE and MIGRATE_CMA\npageblocks:\n\n\u003e CMA isolates MAX_ORDER aligned blocks, but, during the process,\n\u003e partialy isolated block exists. If MAX_ORDER is 11 and\n\u003e pageblock_order is 9, two pageblocks make up MAX_ORDER\n\u003e aligned block and I can think following scenario because pageblock\n\u003e (un)isolation would be done one by one.\n\u003e\n\u003e (each character means one pageblock. \u0027C\u0027, \u0027I\u0027 means MIGRATE_CMA,\n\u003e MIGRATE_ISOLATE, respectively.\n\u003e\n\u003e CC -\u003e IC -\u003e II (Isolation)\n\u003e II -\u003e CI -\u003e CC (Un-isolation)\n\u003e\n\u003e If some pages are freed at this intermediate state such as IC or CI,\n\u003e that page could be merged to the other page that is resident on\n\u003e different type of pageblock and it will cause wrong freepage count.\n\nThis was supposed to be prevented by CMA operating on MAX_ORDER blocks,\nbut since it doesn\u0027t hold the zone-\u003elock between pageblocks, a race\nwindow does exist.\n\nIt\u0027s also likely that unexpected merging can occur between\nMIGRATE_ISOLATE and non-CMA pageblocks.  This should be prevented in\n__free_one_page() since commit 3c605096d315 (\"mm/page_alloc: restrict\nmax order of merging on isolated pageblock\").  However, we only check\nthe migratetype of the pageblock where buddy merging has been initiated,\nnot the migratetype of the buddy pageblock (or group of pageblocks)\nwhich can be MIGRATE_ISOLATE.\n\nJoonsoo has suggested checking for buddy migratetype as part of\npage_is_buddy(), but that would add extra checks in allocator hotpath\nand bloat-o-meter has shown significant code bloat (the function is\ninline).\n\nThis patch reduces the bloat at some expense of more complicated code.\nThe buddy-merging while-loop in __free_one_page() is initially bounded\nto pageblock_border and without any migratetype checks.  The checks are\nplaced outside, bumping the max_order if merging is allowed, and\nreturning to the while-loop with a statement which can\u0027t be possibly\nconsidered harmful.\n\nThis fixes the accounting bug and also removes the arguably weird state\nin the original commit 3c605096d315 where buddies could be left\nunmerged.\n\nFixes: 3c605096d315 (\"mm/page_alloc: restrict max order of merging on isolated pageblock\")\nLink: https://lkml.org/lkml/2016/3/2/280\nSigned-off-by: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nReported-by: Hanjun Guo \u003cguohanjun@huawei.com\u003e\nTested-by: Hanjun Guo \u003cguohanjun@huawei.com\u003e\nAcked-by: Joonsoo Kim \u003ciamjoonsoo.kim@lge.com\u003e\nDebugged-by: Laura Abbott \u003clabbott@redhat.com\u003e\nDebugged-by: Joonsoo Kim \u003ciamjoonsoo.kim@lge.com\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill@shutemov.name\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nCc: Zhang Yanfei \u003czhangyanfei@cn.fujitsu.com\u003e\nCc: Michal Nazarewicz \u003cmina86@mina86.com\u003e\nCc: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\t[3.18+]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f419a08fb329e235df0cb8e329cff770e02d171a",
      "tree": "63947643cc8dae7f61f375478af28cb8dc960b3a",
      "parents": [
        "102c2595aa193f598c0f4b1bf2037d168c80e551"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Mar 25 14:21:47 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "drivers/memstick/host/r592.c: avoid gcc-6 warning\n\nThe r592 driver relies on behavior of the DMA mapping API that is\nnormally observed but not guaranteed by the API.  Instead it uses a\nruntime check to fail transfers if the API ever behaves\n\nWhen CONFIG_NEED_SG_DMA_LENGTH is not set, one of the checks turns into a\ncomparison of a variable with itself, which gcc-6.0 now warns about:\n\ndrivers/memstick/host/r592.c: In function \u0027r592_transfer_fifo_dma\u0027:\ndrivers/memstick/host/r592.c:302:31: error: self-comparison always evaluates to false [-Werror\u003dtautological-compare]\n    (sg_dma_len(\u0026dev-\u003ereq-\u003esg) \u003c dev-\u003ereq-\u003esg.length)) {\n                               ^\n\nThe check itself is not a problem, so this patch just rephrases the\ncondition in a way that gcc does not consider an indication of a mistake.\nWe already know that dev-\u003ereq-\u003esg.length was initially R592_LFIFO_SIZE, so\nwe can compare it to that constant again.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Maxim Levitsky \u003cmaximlevitsky@gmail.com\u003e\nCc: Quentin Lambert \u003clambert.quentin@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "102c2595aa193f598c0f4b1bf2037d168c80e551",
      "tree": "6b7f875c3fac9198d1888c294e445f95b7445c83",
      "parents": [
        "1721598985dc3b92bc3ff45ad0c287bd1814417a"
      ],
      "author": {
        "name": "Xue jiufei",
        "email": "xuejiufei@huawei.com",
        "time": "Fri Mar 25 14:21:44 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: extend enough credits for freeing one truncate record while replaying truncate records\n\nNow function ocfs2_replay_truncate_records() first modifies tl_used,\nthen calls ocfs2_extend_trans() to extend transactions for gd and alloc\ninode used for freeing clusters.  jbd2_journal_restart() may be called\nand it may happen that tl_used in truncate log is decreased but the\nclusters are not freed, which means these clusters are lost.  So we\nshould avoid extending transactions in these two operations.\n\nSigned-off-by: joyce.xue \u003cxuejiufei@huawei.com\u003e\nReviewed-by: Mark Fasheh \u003cmfasheh@suse.de\u003e\nAcked-by: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1721598985dc3b92bc3ff45ad0c287bd1814417a",
      "tree": "1cc79c836fd7e52b863e619c4d6b989998f82147",
      "parents": [
        "e5054c9aefd26ac2401f4b17eda82fab71796dca"
      ],
      "author": {
        "name": "Xue jiufei",
        "email": "xuejiufei@huawei.com",
        "time": "Fri Mar 25 14:21:41 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: extend transaction for ocfs2_remove_rightmost_path() and ocfs2_update_edge_lengths() before to avoid inconsistency between inode and et\n\nI found that jbd2_journal_restart() is called in some places without\nkeeping things consistently before.  However, jbd2_journal_restart() may\ncommit the handle\u0027s transaction and restart another one.  If the first\ntransaction is committed successfully while another not, it may cause\nfilesystem inconsistency or read only.  This is an effort to fix this\nkind of problems.\n\nThis patch (of 3):\n\nThe following functions will be called while truncating an extent:\nocfs2_remove_btree_range\n  -\u003e ocfs2_start_trans\n  -\u003e ocfs2_remove_extent\n     -\u003e ocfs2_truncate_rec\n       -\u003e ocfs2_extend_rotate_transaction\n         -\u003e jbd2_journal_restart if jbd2_journal_extend fail\n       -\u003e ocfs2_rotate_tree_left\n         -\u003e ocfs2_remove_rightmost_path\n             -\u003e ocfs2_extend_rotate_transaction\n               -\u003e ocfs2_unlink_subtree\n                -\u003e ocfs2_update_edge_lengths\n                  -\u003e ocfs2_extend_trans\n                    -\u003e jbd2_journal_restart if jbd2_journal_extend fail\n  -\u003e ocfs2_et_update_clusters\n  -\u003e ocfs2_commit_trans\n\njbd2_journal_restart() may be called and it may happened that the buffers\ndirtied in ocfs2_truncate_rec() are committed while buffers dirtied in\nocfs2_et_update_clusters() are not, the total clusters on extent tree and\ni_clusters in ocfs2_dinode is inconsistency.  So the clusters got from\nocfs2_dinode is incorrect, and it also cause read-only problem when call\nocfs2_commit_truncate() with the error message: \"Inode %llu has empty\nextent block at %llu\".\n\nWe should extend enough credits for function ocfs2_remove_rightmost_path\nand ocfs2_update_edge_lengths to avoid this inconsistency.\n\nSigned-off-by: joyce.xue \u003cxuejiufei@huawei.com\u003e\nAcked-by: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e5054c9aefd26ac2401f4b17eda82fab71796dca",
      "tree": "0c2144747a0e63c075d9960823720dd7e523612f",
      "parents": [
        "584dca3440732afa84fbca07567bb66e1453936a"
      ],
      "author": {
        "name": "xuejiufei",
        "email": "xuejiufei@huawei.com",
        "time": "Fri Mar 25 14:21:38 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2/dlm: move lock to the tail of grant queue while doing in-place convert\n\nWe have found a bug when two nodes doing umount one after another.\n\n1) Node 1 migrate a lockres that has 3 locks in grant queue such as\n   N2(PR)\u003c-\u003eN3(NL)\u003c-\u003eN4(PR) to N2.  After migration, lvb of the lock\n   N3(NL) and N4(PR) are empty on node 2 because migration target do not\n   copy lvb to these two lock.\n\n2) Node 3 want to convert to PR, it can be granted in\n   __dlmconvert_master(), and the order of these locks is unchanged.  The\n   lvb of the lock N3(PR) on node 2 is copyed from lockres in function\n   dlm_update_lvb() while the lvb of lock N4(PR) is still empty.\n\n3) Node 2 want to leave domain, it will migrate this lockres to node 3.\n   Then node 2 will trigger the BUG in dlm_prepare_lvb_for_migration()\n   when adding the lock N4(PR) to mres with the following message because\n   the lvb of mres is already copied from lock N3(PR), but the lvb of lock\n   N4(PR) is empty.\n\n\"Mismatched lvb in lock cookie\u003d%u:%llu, name\u003d%.*s, node\u003d%u\"\n\n[akpm@linux-foundation.org: tweak comment]\nSigned-off-by: xuejiufei \u003cxuejiufei@huawei.com\u003e\nAcked-by: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "584dca3440732afa84fbca07567bb66e1453936a",
      "tree": "117884518952d01319850ded054e86ff2e6eb12c",
      "parents": [
        "35ddf78e41852cbbd216948425a091ab9815678f"
      ],
      "author": {
        "name": "jiangyiwen",
        "email": "jiangyiwen@huawei.com",
        "time": "Fri Mar 25 14:21:35 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: solve a problem of crossing the boundary in updating backups\n\nIn update_backups() there exists a problem of crossing the boundary as\nfollows:\n\nwe assume that lun will be resized to 1TB(cluster_size is 32kb), it will\ninclude 0~33554431 cluster, in update_backups func, it will backup super\nblock in location of 1TB which is the 33554432th cluster, so the\nphenomenon of crossing the boundary happens.\n\nSigned-off-by: Yiwen Jiang \u003cjiangyiwen@huawei.com\u003e\nReviewed-by: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Xue jiufei \u003cxuejiufei@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "35ddf78e41852cbbd216948425a091ab9815678f",
      "tree": "34d4ccd01c6a3bee717c545ecc0199d8c4213fd3",
      "parents": [
        "be12b299a83fc807bbaccd2bcb8ec50cbb0cb55c"
      ],
      "author": {
        "name": "jiangyiwen",
        "email": "jiangyiwen@huawei.com",
        "time": "Fri Mar 25 14:21:32 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: fix occurring deadlock by changing ocfs2_wq from global to local\n\nThis patch fixes a deadlock, as follows:\n\n  Node 1                Node 2                  Node 3\n1)volume a and b are    only mount vol a        only mount vol b\n  mounted\n\n2)                      start to mount b        start to mount a\n\n3)                      check hb of Node 3      check hb of Node 2\n                        in vol a, qs_holds++    in vol b, qs_holds++\n\n4) -------------------- all nodes\u0027 network down --------------------\n\n5)                      progress of mount b     the same situation as\n                        failed, and then call   Node 2\n                        ocfs2_dismount_volume.\n                        but the process is hung,\n                        since there is a work\n                        in ocfs2_wq cannot beo\n                        completed. This work is\n                        about vol a, because\n                        ocfs2_wq is global wq.\n                        BTW, this work which is\n                        scheduled in ocfs2_wq is\n                        ocfs2_orphan_scan_work,\n                        and the context in this work\n                        needs to take inode lock\n                        of orphan_dir, because\n                        lockres owner are Node 1 and\n                        all nodes\u0027 nework has been down\n                        at the same time, so it can\u0027t\n                        get the inode lock.\n\n6)                      Why can\u0027t this node be fenced\n                        when network disconnected?\n                        Because the process of\n                        mount is hung what caused qs_holds\n                        is not equal 0.\n\nBecause all works in the ocfs2_wq are relative to the super block.\n\nThe solution is to change the ocfs2_wq from global to local.  In other\nwords, move it into struct ocfs2_super.\n\nSigned-off-by: Yiwen Jiang \u003cjiangyiwen@huawei.com\u003e\nReviewed-by: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Xue jiufei \u003cxuejiufei@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: Cc: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "be12b299a83fc807bbaccd2bcb8ec50cbb0cb55c",
      "tree": "97fc5800380144f0b49ed99efac94586bd8ac704",
      "parents": [
        "ac7cf246dfdbec3d8fed296c7bf30e16f5099dac"
      ],
      "author": {
        "name": "Joseph Qi",
        "email": "joseph.qi@huawei.com",
        "time": "Fri Mar 25 14:21:29 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2/dlm: fix BUG in dlm_move_lockres_to_recovery_list\n\nWhen master handles convert request, it queues ast first and then\nreturns status.  This may happen that the ast is sent before the request\nstatus because the above two messages are sent by two threads.  And\nright after the ast is sent, if master down, it may trigger BUG in\ndlm_move_lockres_to_recovery_list in the requested node because ast\nhandler moves it to grant list without clear lock-\u003econvert_pending.  So\nremove BUG_ON statement and check if the ast is processed in\ndlmconvert_remote.\n\nSigned-off-by: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nReported-by: Yiwen Jiang \u003cjiangyiwen@huawei.com\u003e\nCc: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: Tariq Saeed \u003ctariq.x.saeed@oracle.com\u003e\nCc: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac7cf246dfdbec3d8fed296c7bf30e16f5099dac",
      "tree": "685e1bf6903a2fbf67911fc6f349e3c3e81ce773",
      "parents": [
        "28888681b4f641ce9a96478ce4683577cd3abbff"
      ],
      "author": {
        "name": "Joseph Qi",
        "email": "joseph.qi@huawei.com",
        "time": "Fri Mar 25 14:21:26 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2/dlm: fix race between convert and recovery\n\nThere is a race window between dlmconvert_remote and\ndlm_move_lockres_to_recovery_list, which will cause a lock with\nOCFS2_LOCK_BUSY in grant list, thus system hangs.\n\ndlmconvert_remote\n{\n        spin_lock(\u0026res-\u003espinlock);\n        list_move_tail(\u0026lock-\u003elist, \u0026res-\u003econverting);\n        lock-\u003econvert_pending \u003d 1;\n        spin_unlock(\u0026res-\u003espinlock);\n\n        status \u003d dlm_send_remote_convert_request();\n        \u003e\u003e\u003e\u003e\u003e\u003e race window, master has queued ast and return DLM_NORMAL,\n               and then down before sending ast.\n               this node detects master down and calls\n               dlm_move_lockres_to_recovery_list, which will revert the\n               lock to grant list.\n               Then OCFS2_LOCK_BUSY won\u0027t be cleared as new master won\u0027t\n               send ast any more because it thinks already be authorized.\n\n        spin_lock(\u0026res-\u003espinlock);\n        lock-\u003econvert_pending \u003d 0;\n        if (status !\u003d DLM_NORMAL)\n                dlm_revert_pending_convert(res, lock);\n        spin_unlock(\u0026res-\u003espinlock);\n}\n\nIn this case, check if res-\u003estate has DLM_LOCK_RES_RECOVERING bit set\n(res is still in recovering) or res master changed (new master has\nfinished recovery), reset the status to DLM_RECOVERING, then it will\nretry convert.\n\nSigned-off-by: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nReported-by: Yiwen Jiang \u003cjiangyiwen@huawei.com\u003e\nReviewed-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: Tariq Saeed \u003ctariq.x.saeed@oracle.com\u003e\nCc: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28888681b4f641ce9a96478ce4683577cd3abbff",
      "tree": "48f10b475c7f9b9fc96957e88928f163ee6012f8",
      "parents": [
        "ce170828e24959c69e7a40364731edc0535c550f"
      ],
      "author": {
        "name": "Ryan Ding",
        "email": "ryan.ding@oracle.com",
        "time": "Fri Mar 25 14:21:23 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: fix a deadlock issue in ocfs2_dio_end_io_write()\n\nThe code should call ocfs2_free_alloc_context() to free meta_ac \u0026\ndata_ac before calling ocfs2_run_deallocs().  Because\nocfs2_run_deallocs() will acquire the system inode\u0027s i_mutex hold by\nmeta_ac.  So try to release the lock before ocfs2_run_deallocs().\n\nFixes: af1310367f41 (\"ocfs2: fix sparse file \u0026 data ordering issue in direct io.\")\nSigned-off-by: Ryan Ding \u003cryan.ding@oracle.com\u003e\nAcked-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ce170828e24959c69e7a40364731edc0535c550f",
      "tree": "2b05b56f6aae6888099a358422c8308d3ac94fc9",
      "parents": [
        "a86a72a4a4e0ec109a98e2737948864ed6794bf7"
      ],
      "author": {
        "name": "Ryan Ding",
        "email": "ryan.ding@oracle.com",
        "time": "Fri Mar 25 14:21:20 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: fix disk file size and memory file size mismatch\n\nWhen doing append direct write in an already allocated cluster, and fast\npath in ocfs2_dio_get_block() is triggered, function\nocfs2_dio_end_io_write() will be skipped as there is no context\nallocated.\n\nAs a result, the disk file size will not be changed as it should be.\nThe solution is to skip fast path when we are about to change file size.\n\nFixes: af1310367f41 (\"ocfs2: fix sparse file \u0026 data ordering issue in direct io.\")\nSigned-off-by: Ryan Ding \u003cryan.ding@oracle.com\u003e\nAcked-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a86a72a4a4e0ec109a98e2737948864ed6794bf7",
      "tree": "8fcefc0392041d5406f8bf88300dd53fc23c82f8",
      "parents": [
        "e63890f38ade9497b5609ddeb7f52df0fe55ea15"
      ],
      "author": {
        "name": "Ryan Ding",
        "email": "ryan.ding@oracle.com",
        "time": "Fri Mar 25 14:21:18 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: take ip_alloc_sem in ocfs2_dio_get_block \u0026 ocfs2_dio_end_io_write\n\nTake ip_alloc_sem to prevent concurrent access to extent tree, which may\ncause the extent tree in an unstable state.\n\nSigned-off-by: Ryan Ding \u003cryan.ding@oracle.com\u003e\nReviewed-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e63890f38ade9497b5609ddeb7f52df0fe55ea15",
      "tree": "6374b96dfa45477fc53cb6033cddc5621d5936c7",
      "parents": [
        "f1f973ffce96a47c2b3f142e91eccef5bf22f699"
      ],
      "author": {
        "name": "Ryan Ding",
        "email": "ryan.ding@oracle.com",
        "time": "Fri Mar 25 14:21:15 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: fix ip_unaligned_aio deadlock with dio work queue\n\nIn the current implementation of unaligned aio+dio, lock order behave as\nfollow:\n\nin user process context:\n  -\u003e call io_submit()\n    -\u003e get i_mutex\n\t\t\u003c\u003d\u003d window1\n      -\u003e get ip_unaligned_aio\n        -\u003e submit direct io to block device\n    -\u003e release i_mutex\n  -\u003e io_submit() return\n\nin dio work queue context(the work queue is created in __blockdev_direct_IO):\n  -\u003e release ip_unaligned_aio\n\t\t\u003c\u003d\u003d window2\n    -\u003e get i_mutex\n      -\u003e clear unwritten flag \u0026 change i_size\n    -\u003e release i_mutex\n\nThere is a limitation to the thread number of dio work queue.  256 at\ndefault.  If all 256 thread are in the above \u0027window2\u0027 stage, and there\nis a user process in the \u0027window1\u0027 stage, the system will became\ndeadlock.  Since the user process hold i_mutex to wait ip_unaligned_aio\nlock, while there is a direct bio hold ip_unaligned_aio mutex who is\nwaiting for a dio work queue thread to be schedule.  But all the dio\nwork queue thread is waiting for i_mutex lock in \u0027window2\u0027.\n\nThis case only happened in a test which send a large number(more than\n256) of aio at one io_submit() call.\n\nMy design is to remove ip_unaligned_aio lock.  Change it to a sync io\ninstead.  Just like ip_unaligned_aio lock, serialize the unaligned aio\ndio.\n\n[akpm@linux-foundation.org: remove OCFS2_IOCB_UNALIGNED_IO, per Junxiao Bi]\nSigned-off-by: Ryan Ding \u003cryan.ding@oracle.com\u003e\nReviewed-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f1f973ffce96a47c2b3f142e91eccef5bf22f699",
      "tree": "3c2563b6165ca21918186e176c95921e28979f65",
      "parents": [
        "c15471f79506830f80eca0e7fe09b8213953ab5f"
      ],
      "author": {
        "name": "Ryan Ding",
        "email": "ryan.ding@oracle.com",
        "time": "Fri Mar 25 14:21:12 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: code clean up for direct io\n\nClean up ocfs2_file_write_iter \u0026 ocfs2_prepare_inode_for_write:\n * remove append dio check: it will be checked in ocfs2_direct_IO()\n * remove file hole check: file hole is supported for now\n * remove inline data check: it will be checked in ocfs2_direct_IO()\n * remove the full_coherence check when append dio: we will get the\n   inode_lock in ocfs2_dio_get_block, there is no need to fall back to\n   buffer io to ensure the coherence semantics.\n\nNow the drop dio procedure is gone.  :)\n\n[akpm@linux-foundation.org: remove unused label]\nSigned-off-by: Ryan Ding \u003cryan.ding@oracle.com\u003e\nReviewed-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c15471f79506830f80eca0e7fe09b8213953ab5f",
      "tree": "968b2231d8e9a5536b4ce2a69660e16461446574",
      "parents": [
        "4506cfb6f8cad594ac73e0df2b2961ca10dbd25e"
      ],
      "author": {
        "name": "Ryan Ding",
        "email": "ryan.ding@oracle.com",
        "time": "Fri Mar 25 14:21:09 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: fix sparse file \u0026 data ordering issue in direct io\n\nThere are mainly three issues in the direct io code path after commit\n24c40b329e03 (\"ocfs2: implement ocfs2_direct_IO_write\"):\n\n  * Does not support sparse file.\n  * Does not support data ordering.  eg: when write to a file hole, it\n    will alloc extent first.  If system crashed before io finished, data\n    will corrupt.\n  * Potential risk when doing aio+dio.  The -EIOCBQUEUED return value is\n    likely to be ignored by ocfs2_direct_IO_write().\n\nTo resolve above problems, re-design direct io code with following ideas:\n  * Use buffer io to fill in holes.  And this will make better\n    performance also.\n  * Clear unwritten after direct write finished.  So we can make sure\n    meta data changes after data write to disk.  (Unwritten extent is\n    invisible to user, from user\u0027s view, meta data is not changed when\n    allocate an unwritten extent.)\n  * Clear ocfs2_direct_IO_write().  Do all ending work in end_io.\n\nThis patch has passed fs,dio,ltp-aiodio.part1,ltp-aiodio.part2,ltp-aiodio.part4\ntest cases of ltp.\n\nFor performance improvement, see following test result:\nocfs2 cluster size 1MB, ocfs2 volume is mounted on /mnt/.\nThe original way:\n  + rm /mnt/test.img -f\n  + dd if\u003d/dev/zero of\u003d/mnt/test.img bs\u003d4K count\u003d1048576 oflag\u003ddirect\n  1048576+0 records in\n  1048576+0 records out\n  4294967296 bytes (4.3 GB) copied, 1707.83 s, 2.5 MB/s\n  + rm /mnt/test.img -f\n  + dd if\u003d/dev/zero of\u003d/mnt/test.img bs\u003d256K count\u003d16384 oflag\u003ddirect\n  16384+0 records in\n  16384+0 records out\n  4294967296 bytes (4.3 GB) copied, 582.705 s, 7.4 MB/s\n\nAfter this patch:\n  + rm /mnt/test.img -f\n  + dd if\u003d/dev/zero of\u003d/mnt/test.img bs\u003d4K count\u003d1048576 oflag\u003ddirect\n  1048576+0 records in\n  1048576+0 records out\n  4294967296 bytes (4.3 GB) copied, 64.6412 s, 66.4 MB/s\n  + rm /mnt/test.img -f\n  + dd if\u003d/dev/zero of\u003d/mnt/test.img bs\u003d256K count\u003d16384 oflag\u003ddirect\n  16384+0 records in\n  16384+0 records out\n  4294967296 bytes (4.3 GB) copied, 34.7611 s, 124 MB/s\n\nSigned-off-by: Ryan Ding \u003cryan.ding@oracle.com\u003e\nReviewed-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4506cfb6f8cad594ac73e0df2b2961ca10dbd25e",
      "tree": "2dff95967b493d1629ad384ec593895564c64c03",
      "parents": [
        "2de6a3c73180ef4071b45185756be51a6c767924"
      ],
      "author": {
        "name": "Ryan Ding",
        "email": "ryan.ding@oracle.com",
        "time": "Fri Mar 25 14:21:06 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: record UNWRITTEN extents when populate write desc\n\nTo support direct io in ocfs2_write_begin_nolock \u0026 ocfs2_write_end_nolock.\n\nThere is still one issue in the direct write procedure.\n\nphase 1: alloc extent with UNWRITTEN flag\nphase 2: submit direct data to disk, add zero page to page cache\nphase 3: clear UNWRITTEN flag when data has been written to disk\n\nWhen there are 2 direct write A(0~3KB),B(4~7KB) writing to the same\ncluster 0~7KB (cluster size 8KB).  Write request A arrive phase 2 first,\nit will zero the region (4~7KB).  Before request A enter to phase 3,\nrequest B arrive phase 2, it will zero region (0~3KB).  This is just like\nrequest B steps request A.\n\nTo resolve this issue, we should let request B knows this cluster is already\nunder zero, to prevent it from steps the previous write request.\n\nThis patch will add function ocfs2_unwritten_check() to do this job.  It\nwill record all clusters that are under direct write(it will be recorded\nin the \u0027ip_unwritten_list\u0027 member of inode info), and prevent the later\ndirect write writing to the same cluster to do the zero work again.\n\nSigned-off-by: Ryan Ding \u003cryan.ding@oracle.com\u003e\nReviewed-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2de6a3c73180ef4071b45185756be51a6c767924",
      "tree": "294db5dbeeb4984016becae93432ea57e0fefc56",
      "parents": [
        "46e625565950c5f31a193c4bbcfdef3fdc7235bf"
      ],
      "author": {
        "name": "Ryan Ding",
        "email": "ryan.ding@oracle.com",
        "time": "Fri Mar 25 14:21:03 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: return the physical address in ocfs2_write_cluster\n\nTo support direct io in ocfs2_write_begin_nolock \u0026 ocfs2_write_end_nolock.\n\nDirect io needs to get the physical address from write_begin, to map the\nuser page.  This patch is to change the arg \u0027phys\u0027 of\nocfs2_write_cluster to a pointer, so it can be retrieved to write_begin.\nAnd we can retrieve it to the direct io procedure.\n\nSigned-off-by: Ryan Ding \u003cryan.ding@oracle.com\u003e\nReviewed-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "46e625565950c5f31a193c4bbcfdef3fdc7235bf",
      "tree": "6c3c4004327a03b0df445a602d2ca55c86c00568",
      "parents": [
        "65c4db8c8282cd239f0ba3226cfe59cc9768193c"
      ],
      "author": {
        "name": "Ryan Ding",
        "email": "ryan.ding@oracle.com",
        "time": "Fri Mar 25 14:21:01 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: do not change i_size in write_end for direct io\n\nTo support direct io in ocfs2_write_begin_nolock \u0026 ocfs2_write_end_nolock.\n\nAppend direct io do not change i_size in get block phase.  It only move\nto orphan when starting write.  After data is written to disk, it will\ndelete itself from orphan and update i_size.  So skip i_size change\nsection in write_begin for direct io.\n\nAnd when there is no extents alloc, no meta data changes needed for\ndirect io (since write_begin start trans for 2 reason: alloc extents \u0026\nchange i_size.  Now none of them needed).  So we can skip start trans\nprocedure.\n\nSigned-off-by: Ryan Ding \u003cryan.ding@oracle.com\u003e\nReviewed-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "65c4db8c8282cd239f0ba3226cfe59cc9768193c",
      "tree": "382f13a751f8d82adc6b3a39951e8948d33365e3",
      "parents": [
        "b46637d59f1160dee5d8e03498e667ab36c2be04"
      ],
      "author": {
        "name": "Ryan Ding",
        "email": "ryan.ding@oracle.com",
        "time": "Fri Mar 25 14:20:58 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: test target page before change it\n\nTo support direct io in ocfs2_write_begin_nolock \u0026 ocfs2_write_end_nolock.\n\nDirect io data will not appear in buffer.  The w_target_page member will\nnot be filled by direct io.  So avoid to use it when it\u0027s NULL.  Unlinke\nbuffer io and mmap, direct io will call write_begin with more than 1\npage a time.  So the target_index is not sufficient to describe the\nactual data.  change it to a range start at target_index, end in\nend_index.\n\nSigned-off-by: Ryan Ding \u003cryan.ding@oracle.com\u003e\nReviewed-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b46637d59f1160dee5d8e03498e667ab36c2be04",
      "tree": "e01bf53fa84428fa3b86e24245e3640be5dce8ee",
      "parents": [
        "c1ad1e3ca3064b1f0ab5a5185b4732ab9ad8fa24"
      ],
      "author": {
        "name": "Ryan Ding",
        "email": "ryan.ding@oracle.com",
        "time": "Fri Mar 25 14:20:55 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: use c_new to indicate newly allocated extents\n\nTo support direct io in ocfs2_write_begin_nolock \u0026 ocfs2_write_end_nolock.\n\nThere is a problem in ocfs2\u0027s direct io implement: if system crashed\nafter extents allocated, and before data return, we will get a extent\nwith dirty data on disk.  This problem violate the journal\u003dorder\nsemantics, which means meta changes take effect after data written to\ndisk.  To resolve this issue, direct write can use the UNWRITTEN flag to\ndescribe a extent during direct data writeback.  The direct write\nprocedure should act in the following order:\n\nphase 1: alloc extent with UNWRITTEN flag\nphase 2: submit direct data to disk, add zero page to page cache\nphase 3: clear UNWRITTEN flag when data has been written to disk\n\nThis patch is to change the \u0027c_unwritten\u0027 member of\nocfs2_write_cluster_desc to \u0027c_clear_unwritten\u0027.  Means whether to clear\nthe unwritten flag.  It do not care if a extent is allocated or not.\nAnd use \u0027c_new\u0027 to specify a newly allocated extent.  So the direct io\nprocedure can use c_clear_unwritten to control the UNWRITTEN bit on\nextent.\n\nSigned-off-by: Ryan Ding \u003cryan.ding@oracle.com\u003e\nReviewed-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c1ad1e3ca3064b1f0ab5a5185b4732ab9ad8fa24",
      "tree": "6a990a5b3dc149e31db9e385dd53f2546a39b8ff",
      "parents": [
        "9e13f1f9de1cb143fbae6f1170f26c8544b64cff"
      ],
      "author": {
        "name": "Ryan Ding",
        "email": "ryan.ding@oracle.com",
        "time": "Fri Mar 25 14:20:52 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: add ocfs2_write_type_t type to identify the caller of write\n\nPatchset: fix ocfs2 direct io code patch to support sparse file and data\nordering semantics\n\nThe idea is to use buffer io(more precisely use the interface\nocfs2_write_begin_nolock \u0026 ocfs2_write_end_nolock) to do the zero work\nbeyond block size.  And clear UNWRITTEN flag until direct io data has\nbeen written to disk, which can prevent data corruption when system\ncrashed during direct write.\n\nAnd we will also archive a better performance: eg.  dd direct write new\nfile with block size 4KB: before this patchset:\n  2.5 MB/s\nafter this patchset:\n  66.4 MB/s\n\nThis patch (of 8):\n\nTo support direct io in ocfs2_write_begin_nolock \u0026\nocfs2_write_end_nolock.\n\nRemove unused args filp \u0026 flags.  Add new arg type.  The type is one of\nbuffer/direct/mmap.  Indicate 3 way to perform write.  buffer/mmap type\nhas implemented.  direct type will be implemented later.\n\nSigned-off-by: Ryan Ding \u003cryan.ding@oracle.com\u003e\nReviewed-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nCc: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e13f1f9de1cb143fbae6f1170f26c8544b64cff",
      "tree": "6d4e5c770945c9d02e894873c7a13c97c2d3ae58",
      "parents": [
        "b8b4ead11e9d258ccc9a8aea28cc0ac747b044ef"
      ],
      "author": {
        "name": "Junxiao Bi",
        "email": "junxiao.bi@oracle.com",
        "time": "Fri Mar 25 14:20:50 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "ocfs2: o2hb: fix double free bug\n\nThis is a regression issue and caused the following kernel panic when do\nocfs2 multiple test.\n\n  BUG: unable to handle kernel paging request at 00000002000800c0\n  IP: [\u003cffffffff81192978\u003e] kmem_cache_alloc+0x78/0x160\n  PGD 7bbe5067 PUD 0\n  Oops: 0000 [#1] SMP\n  Modules linked in: ocfs2_dlmfs ocfs2_stack_o2cb ocfs2_dlm ocfs2_nodemanager ocfs2_stackglue iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi xen_kbdfront xen_netfront xen_fbfront xen_blkfront\n  CPU: 2 PID: 4044 Comm: mpirun Not tainted 4.5.0-rc5-next-20160225 #1\n  Hardware name: Xen HVM domU, BIOS 4.3.1OVM 05/14/2014\n  task: ffff88007a521a80 ti: ffff88007aed0000 task.ti: ffff88007aed0000\n  RIP: 0010:[\u003cffffffff81192978\u003e]  [\u003cffffffff81192978\u003e] kmem_cache_alloc+0x78/0x160\n  RSP: 0018:ffff88007aed3a48  EFLAGS: 00010282\n  RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000001991\n  RDX: 0000000000001990 RSI: 00000000024000c0 RDI: 000000000001b330\n  RBP: ffff88007aed3a98 R08: ffff88007d29b330 R09: 00000002000800c0\n  R10: 0000000c51376d87 R11: ffff8800792cac38 R12: ffff88007cc30f00\n  R13: 00000000024000c0 R14: ffffffff811b053f R15: ffff88007aed3ce7\n  FS:  0000000000000000(0000) GS:ffff88007d280000(0000) knlGS:0000000000000000\n  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n  CR2: 00000002000800c0 CR3: 000000007aeb2000 CR4: 00000000000406e0\n  Call Trace:\n    __d_alloc+0x2f/0x1a0\n    d_alloc+0x17/0x80\n    lookup_dcache+0x8a/0xc0\n    path_openat+0x3c3/0x1210\n    do_filp_open+0x80/0xe0\n    do_sys_open+0x110/0x200\n    SyS_open+0x19/0x20\n    do_syscall_64+0x72/0x230\n    entry_SYSCALL64_slow_path+0x25/0x25\n  Code: 05 e6 77 e7 7e 4d 8b 08 49 8b 40 10 4d 85 c9 0f 84 dd 00 00 00 48 85 c0 0f 84 d4 00 00 00 49 63 44 24 20 49 8b 3c 24 48 8d 4a 01 \u003c49\u003e 8b 1c 01 4c 89 c8 65 48 0f c7 0f 0f 94 c0 3c 01 75 b6 49 63\n  RIP   kmem_cache_alloc+0x78/0x160\n  CR2: 00000002000800c0\n  ---[ end trace 823969e602e4aaac ]---\n\nFixes: a4a1dfa4bb8b(\"ocfs2/cluster: fix memory leak in o2hb_region_release\")\nSigned-off-by: Junxiao Bi \u003cjunxiao.bi@oracle.com\u003e\nReviewed-by: Joseph Qi \u003cjoseph.qi@huawei.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b8b4ead11e9d258ccc9a8aea28cc0ac747b044ef",
      "tree": "44938deabf08a6d5c75ca671b154e558d3448740",
      "parents": [
        "bb29902a7515208846114b3b36a4281a9bbf766a"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Mar 25 14:20:47 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "drivers/input: eliminate INPUT_COMPAT_TEST macro\n\nINPUT_COMPAT_TEST became much simpler after commit f4056b52845283\n(\"input: redefine INPUT_COMPAT_TEST as in_compat_syscall()\") so we can\ncleanly eliminate it altogether.\n\nAcked-by: Dmitry Torokhov \u003cdmitry.torokhov@gmail.com\u003e\nCc: Andy Lutomirski \u003cluto@amacapital.net\u003e\nCc: Andy Lutomirski \u003cluto@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bb29902a7515208846114b3b36a4281a9bbf766a",
      "tree": "95eafdcebc4f9c100db32ddb8c7ac0099a252555",
      "parents": [
        "e26796066fdf929cbba22dabb801808f986acdb9"
      ],
      "author": {
        "name": "Tetsuo Handa",
        "email": "penguin-kernel@I-love.SAKURA.ne.jp",
        "time": "Fri Mar 25 14:20:44 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "oom, oom_reaper: protect oom_reaper_list using simpler way\n\n\"oom, oom_reaper: disable oom_reaper for oom_kill_allocating_task\" tried\nto protect oom_reaper_list using MMF_OOM_KILLED flag.  But we can do it\nby simply checking tsk-\u003eoom_reaper_list !\u003d NULL.\n\nSigned-off-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nSigned-off-by: Michal Hocko \u003cmhocko@suse.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e26796066fdf929cbba22dabb801808f986acdb9",
      "tree": "ef8564918c72f9c8e79269077e723ac76a69dc73",
      "parents": [
        "29c696e1c6eceb5db6b21f0c89495fcfcd40c0eb"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.com",
        "time": "Fri Mar 25 14:20:41 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "oom: make oom_reaper freezable\n\nAfter \"oom: clear TIF_MEMDIE after oom_reaper managed to unmap the\naddress space\" oom_reaper will call exit_oom_victim on the target task\nafter it is done.  This might however race with the PM freezer:\n\nCPU0\t\t\t\tCPU1\t\t\t\tCPU2\nfreeze_processes\n  try_to_freeze_tasks\n  \t\t\t\t# Allocation request\n\t\t\t\tout_of_memory\n  oom_killer_disable\n\t\t\t\t  wake_oom_reaper(P1)\n\t\t\t\t  \t\t\t\t__oom_reap_task\n\t\t\t\t\t\t\t\t  exit_oom_victim(P1)\n    wait_event(oom_victims\u003d\u003d0)\n[...]\n    \t\t\t\tdo_exit(P1)\n\t\t\t\t  perform IO/interfere with the freezer\n\nwhich breaks the oom_killer_disable semantic.  We no longer have a\nguarantee that the oom victim won\u0027t interfere with the freezer because\nit might be anywhere on the way to do_exit while the freezer thinks the\ntask has already terminated.  It might trigger IO or touch devices which\nare frozen already.\n\nIn order to close this race, make the oom_reaper thread freezable.  This\nwill work because\n\ta) already running oom_reaper will block freezer to enter the\n\t   quiescent state\n\tb) wake_oom_reaper will not wake up the reaper after it has been\n\t   frozen\n\tc) the only way to call exit_oom_victim after try_to_freeze_tasks\n\t   is from the oom victim\u0027s context when we know the further\n\t   interference shouldn\u0027t be possible\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29c696e1c6eceb5db6b21f0c89495fcfcd40c0eb",
      "tree": "fe5a096de3c34d3fef0fcc40dd3fbc03a99599a1",
      "parents": [
        "855b018325737f7691f9b7d86339df40aa4e47c3"
      ],
      "author": {
        "name": "Vladimir Davydov",
        "email": "vdavydov@virtuozzo.com",
        "time": "Fri Mar 25 14:20:39 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "oom: make oom_reaper_list single linked\n\nEntries are only added/removed from oom_reaper_list at head so we can\nuse a single linked list and hence save a word in task_struct.\n\nSigned-off-by: Vladimir Davydov \u003cvdavydov@virtuozzo.com\u003e\nSigned-off-by: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "855b018325737f7691f9b7d86339df40aa4e47c3",
      "tree": "53593c573d50f6ae6f46d05a8339528f44b99b5b",
      "parents": [
        "03049269de433cb5fe2859be9ae4469ceb1163ed"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.com",
        "time": "Fri Mar 25 14:20:36 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "oom, oom_reaper: disable oom_reaper for oom_kill_allocating_task\n\nTetsuo has reported that oom_kill_allocating_task\u003d1 will cause\noom_reaper_list corruption because oom_kill_process doesn\u0027t follow\nstandard OOM exclusion (aka ignores TIF_MEMDIE) and allows to enqueue\nthe same task multiple times - e.g.  by sacrificing the same child\nmultiple times.\n\nThis patch fixes the issue by introducing a new MMF_OOM_KILLED mm flag\nwhich is set in oom_kill_process atomically and oom reaper is disabled\nif the flag was already set.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.com\u003e\nReported-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "03049269de433cb5fe2859be9ae4469ceb1163ed",
      "tree": "29b36a160a7c4686b1e03cbc6c80908e0fbf08ed",
      "parents": [
        "bc448e897b6d24aae32701763b8a1fe15d29fa26"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.com",
        "time": "Fri Mar 25 14:20:33 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "mm, oom_reaper: implement OOM victims queuing\n\nwake_oom_reaper has allowed only 1 oom victim to be queued.  The main\nreason for that was the simplicity as other solutions would require some\nway of queuing.  The current approach is racy and that was deemed\nsufficient as the oom_reaper is considered a best effort approach to\nhelp with oom handling when the OOM victim cannot terminate in a\nreasonable time.  The race could lead to missing an oom victim which can\nget stuck\n\nout_of_memory\n  wake_oom_reaper\n    cmpxchg // OK\n    \t\t\toom_reaper\n\t\t\t  oom_reap_task\n\t\t\t    __oom_reap_task\noom_victim terminates\n\t\t\t      atomic_inc_not_zero // fail\nout_of_memory\n  wake_oom_reaper\n    cmpxchg // fails\n\t\t\t  task_to_reap \u003d NULL\n\nThis race requires 2 OOM invocations in a short time period which is not\nvery likely but certainly not impossible.  E.g.  the original victim\nmight have not released a lot of memory for some reason.\n\nThe situation would improve considerably if wake_oom_reaper used a more\nrobust queuing.  This is what this patch implements.  This means adding\noom_reaper_list list_head into task_struct (eat a hole before embeded\nthread_struct for that purpose) and a oom_reaper_lock spinlock for\nqueuing synchronization.  wake_oom_reaper will then add the task on the\nqueue and oom_reaper will dequeue it.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Vladimir Davydov \u003cvdavydov@virtuozzo.com\u003e\nCc: Andrea Argangeli \u003candrea@kernel.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bc448e897b6d24aae32701763b8a1fe15d29fa26",
      "tree": "3c91d6fe4fc3b35671b0356c6bdc39d8b3793f71",
      "parents": [
        "36324a990cf578b57828c04cd85ac62cd25cf5a4"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.com",
        "time": "Fri Mar 25 14:20:30 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "mm, oom_reaper: report success/failure\n\nInform about the successful/failed oom_reaper attempts and dump all the\nheld locks to tell us more who is blocking the progress.\n\n[akpm@linux-foundation.org: fix CONFIG_MMU\u003dn build]\nSigned-off-by: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Andrea Argangeli \u003candrea@kernel.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "36324a990cf578b57828c04cd85ac62cd25cf5a4",
      "tree": "69480f4bf3a00a32ddf2d4a9a7fd67bbe45a3c0b",
      "parents": [
        "aac453635549699c13a84ea1456d5b0e574ef855"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.com",
        "time": "Fri Mar 25 14:20:27 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "oom: clear TIF_MEMDIE after oom_reaper managed to unmap the address space\n\nWhen oom_reaper manages to unmap all the eligible vmas there shouldn\u0027t\nbe much of the freable memory held by the oom victim left anymore so it\nmakes sense to clear the TIF_MEMDIE flag for the victim and allow the\nOOM killer to select another task.\n\nThe lack of TIF_MEMDIE also means that the victim cannot access memory\nreserves anymore but that shouldn\u0027t be a problem because it would get\nthe access again if it needs to allocate and hits the OOM killer again\ndue to the fatal_signal_pending resp.  PF_EXITING check.  We can safely\nhide the task from the OOM killer because it is clearly not a good\ncandidate anymore as everyhing reclaimable has been torn down already.\n\nThis patch will allow to cap the time an OOM victim can keep TIF_MEMDIE\nand thus hold off further global OOM killer actions granted the oom\nreaper is able to take mmap_sem for the associated mm struct.  This is\nnot guaranteed now but further steps should make sure that mmap_sem for\nwrite should be blocked killable which will help to reduce such a lock\ncontention.  This is not done by this patch.\n\nNote that exit_oom_victim might be called on a remote task from\n__oom_reap_task now so we have to check and clear the flag atomically\notherwise we might race and underflow oom_victims or wake up waiters too\nearly.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.com\u003e\nSuggested-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSuggested-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Andrea Argangeli \u003candrea@kernel.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aac453635549699c13a84ea1456d5b0e574ef855",
      "tree": "3aa93064cd6b1ae5bc922b061b9b9b6e482a41ba",
      "parents": [
        "69b27baf00fa9b7b14b3263c105390d1683425b2"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.com",
        "time": "Fri Mar 25 14:20:24 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "mm, oom: introduce oom reaper\n\nThis patch (of 5):\n\nThis is based on the idea from Mel Gorman discussed during LSFMM 2015\nand independently brought up by Oleg Nesterov.\n\nThe OOM killer currently allows to kill only a single task in a good\nhope that the task will terminate in a reasonable time and frees up its\nmemory.  Such a task (oom victim) will get an access to memory reserves\nvia mark_oom_victim to allow a forward progress should there be a need\nfor additional memory during exit path.\n\nIt has been shown (e.g.  by Tetsuo Handa) that it is not that hard to\nconstruct workloads which break the core assumption mentioned above and\nthe OOM victim might take unbounded amount of time to exit because it\nmight be blocked in the uninterruptible state waiting for an event (e.g.\nlock) which is blocked by another task looping in the page allocator.\n\nThis patch reduces the probability of such a lockup by introducing a\nspecialized kernel thread (oom_reaper) which tries to reclaim additional\nmemory by preemptively reaping the anonymous or swapped out memory owned\nby the oom victim under an assumption that such a memory won\u0027t be needed\nwhen its owner is killed and kicked from the userspace anyway.  There is\none notable exception to this, though, if the OOM victim was in the\nprocess of coredumping the result would be incomplete.  This is\nconsidered a reasonable constrain because the overall system health is\nmore important than debugability of a particular application.\n\nA kernel thread has been chosen because we need a reliable way of\ninvocation so workqueue context is not appropriate because all the\nworkers might be busy (e.g.  allocating memory).  Kswapd which sounds\nlike another good fit is not appropriate as well because it might get\nblocked on locks during reclaim as well.\n\noom_reaper has to take mmap_sem on the target task for reading so the\nsolution is not 100% because the semaphore might be held or blocked for\nwrite but the probability is reduced considerably wrt.  basically any\nlock blocking forward progress as described above.  In order to prevent\nfrom blocking on the lock without any forward progress we are using only\na trylock and retry 10 times with a short sleep in between.  Users of\nmmap_sem which need it for write should be carefully reviewed to use\n_killable waiting as much as possible and reduce allocations requests\ndone with the lock held to absolute minimum to reduce the risk even\nfurther.\n\nThe API between oom killer and oom reaper is quite trivial.\nwake_oom_reaper updates mm_to_reap with cmpxchg to guarantee only\nNULL-\u003emm transition and oom_reaper clear this atomically once it is done\nwith the work.  This means that only a single mm_struct can be reaped at\nthe time.  As the operation is potentially disruptive we are trying to\nlimit it to the ncessary minimum and the reaper blocks any updates while\nit operates on an mm.  mm_struct is pinned by mm_count to allow parallel\nexit_mmap and a race is detected by atomic_inc_not_zero(mm_users).\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.com\u003e\nSuggested-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSuggested-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Andrea Argangeli \u003candrea@kernel.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "69b27baf00fa9b7b14b3263c105390d1683425b2",
      "tree": "6590848e3ff8d0ee4e0624a3f93082c6953906e7",
      "parents": [
        "1701f680407c6cc05121566cef5293d33881fe71"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Mar 25 14:20:21 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 16:37:42 2016 -0700"
      },
      "message": "sched: add schedule_timeout_idle()\n\nThis will be needed in the patch \"mm, oom: introduce oom reaper\".\n\nAcked-by: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2d5ae5c2c7025b3bac264545f88b4d958fbdccc8",
      "tree": "b61714e9b62b03c30d74c2530e55714037bf0cf4",
      "parents": [
        "1701f680407c6cc05121566cef5293d33881fe71"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Mar 25 14:37:32 2016 -0700"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Fri Mar 25 14:37:32 2016 -0700"
      },
      "message": "[IA64] Enable preadv2 and pwritev2 syscalls for ia64\n\nNew system calls added in:\n      f17d8b35452cab31a70d224964cd583fb2845449\n      vfs: vfs: Define new syscalls preadv2,pwritev2\n\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "8e653b654497350f9cb3d6c2088207bc503f2c7c",
      "tree": "a50be8f3c775cef67021c68205a271836299d9f7",
      "parents": [
        "f447671b9e4fa4b0c9faf39455269d62d94218ae"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rafael.j.wysocki@intel.com",
        "time": "Fri Mar 25 22:33:10 2016 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rafael.j.wysocki@intel.com",
        "time": "Fri Mar 25 22:36:17 2016 +0100"
      },
      "message": "Fix permissions of drivers/power/avs/rockchip-io-domain.c\n\nThe permissions of this file were modified by commit (f447671b9e4f PM /\nAVS: rockchip-io: add io selectors and supplies for rk3399) by mistake,\nso fix them.\n\nSigned-off-by: Rafael J. Wysocki \u003crafael.j.wysocki@intel.com\u003e\n"
    },
    {
      "commit": "5ee61e95b6b33c82f6fa1382585faed66aa01245",
      "tree": "9bb4d4290f54c2796019a58bc7c1a517af1f31e8",
      "parents": [
        "99ec269779f1fde25356e14299419551cdb54443"
      ],
      "author": {
        "name": "Geliang Tang",
        "email": "geliangtang@163.com",
        "time": "Sun Mar 13 15:18:39 2016 +0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:57 2016 +0100"
      },
      "message": "libceph: use KMEM_CACHE macro\n\nUse KMEM_CACHE() instead of kmem_cache_create() to simplify the code.\n\nSigned-off-by: Geliang Tang \u003cgeliangtang@163.com\u003e\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "99ec269779f1fde25356e14299419551cdb54443",
      "tree": "7c440ee9ddd489d406174875a2aad9c8f4452cb1",
      "parents": [
        "03d9440676163e965cb77d03c102b461d8ccb482"
      ],
      "author": {
        "name": "Geliang Tang",
        "email": "geliangtang@163.com",
        "time": "Sun Mar 13 15:26:29 2016 +0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:56 2016 +0100"
      },
      "message": "ceph: use kmem_cache_zalloc\n\nUse kmem_cache_zalloc() instead of kmem_cache_alloc() with flag GFP_ZERO.\n\nSigned-off-by: Geliang Tang \u003cgeliangtang@163.com\u003e\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "03d9440676163e965cb77d03c102b461d8ccb482",
      "tree": "c88ddbc3309aa5f6b24e82f709715ce7fe8c9baa",
      "parents": [
        "200fd27c8fa2ba8bb4529033967b69a7cbfa2c2e"
      ],
      "author": {
        "name": "Geliang Tang",
        "email": "geliangtang@163.com",
        "time": "Sun Mar 13 15:17:32 2016 +0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:56 2016 +0100"
      },
      "message": "rbd: use KMEM_CACHE macro\n\nUse KMEM_CACHE() instead of kmem_cache_create() to simplify the code.\n\nSigned-off-by: Geliang Tang \u003cgeliangtang@163.com\u003e\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "200fd27c8fa2ba8bb4529033967b69a7cbfa2c2e",
      "tree": "613283f7552b64be05bd46e525f285f323a1bdeb",
      "parents": [
        "641235d8f823574961d225bdbfaef299842aa38c"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zyan@redhat.com",
        "time": "Thu Mar 17 14:41:59 2016 +0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:56 2016 +0100"
      },
      "message": "ceph: use lookup request to revalidate dentry\n\nIf dentry has no lease, ceph_d_revalidate() previously return 0.\nThis causes VFS to invalidate the dentry and create a new dentry\nfor later lookup. Invalidating a dentry also detach any underneath\nmount points. So mount point inside cephfs can disapear mystically\n(even the mount point is not modified by other hosts).\n\nThe fix is using lookup request to revalidate dentry without lease.\nThis can partly solve the mount points disapear issue (as long as\nthe mount point is not modified by other hosts)\n\nSigned-off-by: Yan, Zheng \u003czyan@redhat.com\u003e\n"
    },
    {
      "commit": "641235d8f823574961d225bdbfaef299842aa38c",
      "tree": "7db9892014522eda2f8c9e08239899929edbcd59",
      "parents": [
        "315f24088048a51eed341c53be66ea477a3c7d16"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zyan@redhat.com",
        "time": "Wed Mar 16 16:40:23 2016 +0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:55 2016 +0100"
      },
      "message": "ceph: kill ceph_get_dentry_parent_inode()\n\nuse vfs helper dget_parent() instead\n\nSigned-off-by: Yan, Zheng \u003czyan@redhat.com\u003e\n"
    },
    {
      "commit": "315f24088048a51eed341c53be66ea477a3c7d16",
      "tree": "b0947756198ee556f500e2b5dd001104fec003b8",
      "parents": [
        "29dccfa5af388916e48a3edc5ac9dc8cc996d9b4"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zyan@redhat.com",
        "time": "Mon Mar 07 10:34:50 2016 +0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:55 2016 +0100"
      },
      "message": "ceph: fix security xattr deadlock\n\nWhen security is enabled, security module can call filesystem\u0027s\ngetxattr/setxattr callbacks during d_instantiate(). For cephfs,\nd_instantiate() is usually called by MDS\u0027 dispatch thread, while\nhandling MDS reply. If the MDS reply does not include xattrs and\ncorresponding caps, getxattr/setxattr need to send a new request\nto MDS and waits for the reply. This makes MDS\u0027 dispatch sleep,\nnobody handles later MDS replies.\n\nThe fix is make sure lookup/atomic_open reply include xattrs and\ncorresponding caps. So getxattr can be handled by cached xattrs.\nThis requires some modification to both MDS and request message.\n(Client tells MDS what caps it wants; MDS encodes proper caps in\nthe reply)\n\nSmack security module may call setxattr during d_instantiate().\nUnlike getxattr, we can\u0027t force MDS to issue CEPH_CAP_XATTR_EXCL\nto us. So just make setxattr return error when called by MDS\u0027\ndispatch thread.\n\nSigned-off-by: Yan, Zheng \u003czyan@redhat.com\u003e\n"
    },
    {
      "commit": "29dccfa5af388916e48a3edc5ac9dc8cc996d9b4",
      "tree": "3a3dee305bf58df79a59898da0f0f9c4a85b26ab",
      "parents": [
        "132ca7e1de1e3217af06bce2beb3aa13c3edc7f6"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zyan@redhat.com",
        "time": "Sat Mar 12 13:32:16 2016 +0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:55 2016 +0100"
      },
      "message": "ceph: don\u0027t request vxattrs from MDS\n\nIt\u0027s uselese because MDS reply does not carry any vxattr.\n\nSigned-off-by: Yan, Zheng \u003czyan@redhat.com\u003e\n"
    },
    {
      "commit": "132ca7e1de1e3217af06bce2beb3aa13c3edc7f6",
      "tree": "261fc4a7546c4a87664de1a8af5922d4addcb2a5",
      "parents": [
        "4531126753aaf936e2674d28245400c6559ef0ee"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zyan@redhat.com",
        "time": "Sat Mar 12 13:20:48 2016 +0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:54 2016 +0100"
      },
      "message": "ceph: fix mounting same fs multiple times\n\nNow __ceph_open_session() only accepts closed client. An opened\nclient will tigger BUG_ON().\n\nSigned-off-by: Yan, Zheng \u003czyan@redhat.com\u003e\n"
    },
    {
      "commit": "4531126753aaf936e2674d28245400c6559ef0ee",
      "tree": "26e5a6a92e794dc7a6617ab7ddb56e2e52f3a7cc",
      "parents": [
        "a3d714c33632ef6bfdfaacc74ae6ba297b4c5820"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zyan@redhat.com",
        "time": "Thu Mar 10 11:29:34 2016 +0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:54 2016 +0100"
      },
      "message": "ceph: remove unnecessary NULL check\n\nIf page-\u003emapping is NULL, releasepage() callback does not get called.\nRemove the unnecessary NULL check to make static code analysis tool\nhappy\n\nSigned-off-by: Yan, Zheng \u003czyan@redhat.com\u003e\n"
    },
    {
      "commit": "a3d714c33632ef6bfdfaacc74ae6ba297b4c5820",
      "tree": "c06a6b4821ea6f974b33d7e87e9aa952608e936a",
      "parents": [
        "af5e5eb574776cdf1b756a27cc437bff257e22fe"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zyan@redhat.com",
        "time": "Fri Feb 26 17:16:32 2016 +0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:53 2016 +0100"
      },
      "message": "ceph: avoid updating directory inode\u0027s i_size accidentally\n\nDirectory inode\u0027s i_size is used by readdir cache.\n\nSigned-off-by: Yan, Zheng \u003czyan@redhat.com\u003e\n"
    },
    {
      "commit": "af5e5eb574776cdf1b756a27cc437bff257e22fe",
      "tree": "c96a1b12b10744491f89d19ac1bfe21f6a519747",
      "parents": [
        "89f081730c49a1d3b46359aa0054e6b3b80f47e4"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zyan@redhat.com",
        "time": "Fri Feb 26 16:27:13 2016 +0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:53 2016 +0100"
      },
      "message": "ceph: fix race during filling readdir cache\n\nReaddir cache uses page cache to save dentry pointers. When adding\ndentry pointers to middle of a page, we need to make sure the page\nalready exists. Otherwise the beginning part of the page will be\ninvalid pointers.\n\nSigned-off-by: Yan, Zheng \u003czyan@redhat.com\u003e\n"
    },
    {
      "commit": "89f081730c49a1d3b46359aa0054e6b3b80f47e4",
      "tree": "98ab37988e7d55b90e51fa43393ae9f7a1caf0ca",
      "parents": [
        "34b759b4a22b0acb82423389a24699357798cf3c"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Sat Feb 20 15:56:07 2016 +0100"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:53 2016 +0100"
      },
      "message": "libceph: use sizeof_footer() more\n\nDon\u0027t open-code sizeof_footer() in read_partial_message() and\nceph_msg_revoke().  Also, after switching to sizeof_footer(), it\u0027s now\npossible to use con_out_kvec_add() in prepare_write_message_footer().\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\nReviewed-by: Alex Elder \u003celder@linaro.org\u003e\n"
    },
    {
      "commit": "34b759b4a22b0acb82423389a24699357798cf3c",
      "tree": "02c1f45f274762ab91fd180e928aedb93612c5a5",
      "parents": [
        "ce4355932a9412e0519e70fb1d03d88e39cd621a"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Feb 16 15:00:24 2016 +0100"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:52 2016 +0100"
      },
      "message": "ceph: kill ceph_empty_snapc\n\nceph_empty_snapc-\u003enum_snaps \u003d\u003d 0 at all times.  Passing such a snapc to\nceph_osdc_alloc_request() (possibly through ceph_osdc_new_request()) is\nequivalent to passing NULL, as ceph_osdc_alloc_request() uses it only\nfor sizing the request message.\n\nFurther, in all four cases the subsequent ceph_osdc_build_request() is\npassed NULL for snapc, meaning that 0 is encoded for seq and num_snaps\nand making ceph_empty_snapc entirely useless.  The two cases where it\nactually mattered were removed in commits 860560904962 (\"ceph: avoid\nsending unnessesary FLUSHSNAP message\") and 23078637e054 (\"ceph: fix\nqueuing inode to mdsdir\u0027s snaprealm\").\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\nReviewed-by:  Yan, Zheng \u003czyan@redhat.com\u003e\n"
    },
    {
      "commit": "ce4355932a9412e0519e70fb1d03d88e39cd621a",
      "tree": "1b3c80321d4728a5f36045d633e1b9aeea19ac81",
      "parents": [
        "8bbd47140cf0d3f1cef882cc553778f417087606"
      ],
      "author": {
        "name": "Anton Protopopov",
        "email": "a.s.protopopov@gmail.com",
        "time": "Wed Feb 10 12:38:03 2016 -0500"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:52 2016 +0100"
      },
      "message": "ceph: fix a wrong comparison\n\nA negative value rc compared to the positive value ENOENT in the\nfinish_read() function.\n\nSigned-off-by: Anton Protopopov \u003ca.s.protopopov@gmail.com\u003e\nSigned-off-by: Yan, Zheng \u003czyan@redhat.com\u003e\n"
    },
    {
      "commit": "8bbd47140cf0d3f1cef882cc553778f417087606",
      "tree": "1e6d09f16b56a40012fcb2f6729ad3eef36351d1",
      "parents": [
        "5b64640cf65be4a029728c390e9b97afce2a493d"
      ],
      "author": {
        "name": "Deepa Dinamani",
        "email": "deepa.kernel@gmail.com",
        "time": "Tue Feb 02 22:07:48 2016 -0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:52 2016 +0100"
      },
      "message": "ceph: replace CURRENT_TIME by current_fs_time()\n\nCURRENT_TIME macro is not appropriate for filesystems as it\ndoesn\u0027t use the right granularity for filesystem timestamps.\nUse current_fs_time() instead.\n\nSigned-off-by: Deepa Dinamani \u003cdeepa.kernel@gmail.com\u003e\nSigned-off-by: Yan, Zheng \u003czyan@redhat.com\u003e\n"
    },
    {
      "commit": "5b64640cf65be4a029728c390e9b97afce2a493d",
      "tree": "76c270895d1b216695c569fb8fc99f7cdf28c622",
      "parents": [
        "2c63f49a724a10bb71cc0fd34f8e5acce78525d5"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zyan@redhat.com",
        "time": "Thu Jan 07 16:00:17 2016 +0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:51 2016 +0100"
      },
      "message": "ceph: scattered page writeback\n\nThis patch makes ceph_writepages_start() try using single OSD request\nto write all dirty pages within a strip unit. When a nonconsecutive\ndirty page is found, ceph_writepages_start() tries starting a new write\noperation to existing OSD request. If it succeeds, it uses the new\noperation to writeback the dirty page.\n\nSigned-off-by: Yan, Zheng \u003czyan@redhat.com\u003e\n"
    },
    {
      "commit": "2c63f49a724a10bb71cc0fd34f8e5acce78525d5",
      "tree": "89e28fde957db2d813d69c2f96a0934bdb455941",
      "parents": [
        "3f1af42ad0fad8a12242233dd0d9fc42f5e83415"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zyan@redhat.com",
        "time": "Thu Jan 07 17:32:54 2016 +0800"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Mar 25 18:51:43 2016 +0100"
      },
      "message": "libceph: add helper that duplicates last extent operation\n\nThis helper duplicates last extent operation in OSD request, then\nadjusts the new extent operation\u0027s offset and length. The helper\nis for scatterd page writeback, which adds nonconsecutive dirty\npages to single OSD request.\n\nSigned-off-by: Yan, Zheng \u003czyan@redhat.com\u003e\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    }
  ],
  "next": "3f1af42ad0fad8a12242233dd0d9fc42f5e83415"
}
