)]}'
{
  "log": [
    {
      "commit": "395108880efff4a4ffa1ffa554477f7f5ba6a031",
      "tree": "7d5797145d54b6cd8752eb2a6b1fd934336a005f",
      "parents": [
        "2dfa4eeab0fc7e8633974f2770945311b31eedf6"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll keyed wakeups: make eventfd use keyed wakeups\n\nIntroduce keyed event wakeups inside the eventfd code.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: William Lee Irwin III \u003cwli@movementarian.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2dfa4eeab0fc7e8633974f2770945311b31eedf6",
      "tree": "de372dc3955bb8ab2dec1b50f4292f367fa4e22f",
      "parents": [
        "37e5540b3c9d838eb20f2ca8ea2eb8072271e403"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll keyed wakeups: teach epoll about hints coming with the wakeup key\n\nUse the events hint now sent by some devices, to avoid unnecessary wakeups\nfor events that are of no interest for the caller.  This code handles both\ndevices that are sending keyed events, and the ones that are not (and\nevent the ones that sometimes send events, and sometimes don\u0027t).\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: William Lee Irwin III \u003cwli@movementarian.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bcd0b235bf3808dec5115c381cd55568f63b85f0",
      "tree": "d73c4aa83dcd5321d2c48e070020576098b9705e",
      "parents": [
        "4f0989dbfa8d18dd17c32120aac1eb3e906a62a2"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "eventfd: improve support for semaphore-like behavior\n\nPeople started using eventfd in a semaphore-like way where before they\nwere using pipes.\n\nThat is, counter-based resource access.  Where a \"wait()\" returns\nimmediately by decrementing the counter by one, if counter is greater than\nzero.  Otherwise will wait.  And where a \"post(count)\" will add count to\nthe counter releasing the appropriate amount of waiters.  If eventfd the\n\"post\" (write) part is fine, while the \"wait\" (read) does not dequeue 1,\nbut the whole counter value.\n\nThe problem with eventfd is that a read() on the fd returns and wipes the\nwhole counter, making the use of it as semaphore a little bit more\ncumbersome.  You can do a read() followed by a write() of COUNTER-1, but\nIMO it\u0027s pretty easy and cheap to make this work w/out extra steps.  This\npatch introduces a new eventfd flag that tells eventfd to only dequeue 1\nfrom the counter, allowing simple read/write to make it behave like a\nsemaphore.  Simple test here:\n\nhttp://www.xmailserver.org/eventfd-sem.c\n\nTo be back-compatible with earlier kernels, userspace applications should\nprobe for the availability of this feature via\n\n#ifdef EFD_SEMAPHORE\n\tfd \u003d eventfd2 (CNT, EFD_SEMAPHORE);\n\tif (fd \u003d\u003d -1 \u0026\u0026 errno \u003d\u003d EINVAL)\n\t\t\u003cfallback\u003e\n#else\n\t\t\u003cfallback\u003e\n#endif\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nTested-by: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: Ulrich Drepper \u003cdrepper@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": "4f0989dbfa8d18dd17c32120aac1eb3e906a62a2",
      "tree": "8b81c45c23ff2a598ed67c5732dfb0ca69693aa0",
      "parents": [
        "e057e15ff66a620eda4c407486cbb8f8fbb7d878"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:16 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll: use real type instead of void *\n\neventpoll.c uses void * in one place for no obvious reason; change it to\nuse the real type instead.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e057e15ff66a620eda4c407486cbb8f8fbb7d878",
      "tree": "aa9e15c13ce5882ca0f0b442eec71d99fec8a4ff",
      "parents": [
        "d1bc90dd5d037079f96b3327f943eb6ae8ef7491"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: clean up ep_modify\n\nep_modify() doesn\u0027t need to set event.data from within the ep-\u003elock\nspinlock as the comment suggests.  The only place event.data is used is\nep_send_events_proc(), and this is protected by ep-\u003emtx instead of\nep-\u003elock.  Also update the comment for mutex_lock() at the top of\nep_scan_ready_list(), which mentions epoll_ctl(EPOLL_CTL_DEL) but not\nepoll_ctl(EPOLL_CTL_MOD).\n\nep_modify() can also use spin_lock_irq() instead of spin_lock_irqsave().\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d1bc90dd5d037079f96b3327f943eb6ae8ef7491",
      "tree": "0380bd32cee23815b214d81a12b618140c544799",
      "parents": [
        "d0305882825784e74f68a56eee6c3a812a99f235"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: remove unnecessary xchg\n\nxchg in ep_unregister_pollwait() is unnecessary because it is protected by\neither epmutex or ep-\u003emtx (the same protection as ep_remove()).\n\nIf xchg was necessary, it would be insufficient to protect against\nproblems: if multiple concurrent calls to ep_unregister_pollwait() were\npossible then a second caller that returns without doing anything because\nnwait \u003d\u003d 0 could return before the waitqueues are removed by the first\ncaller, which looks like it could lead to problematic races with\nep_poll_callback().\n\nSo remove xchg and add comments about the locking.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0305882825784e74f68a56eee6c3a812a99f235",
      "tree": "a4dcfea753279e1f8f4e7cc8256a8f5c195341ce",
      "parents": [
        "abff55cee1039b5a3b96f7a5eb6e65b9f247a274"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: remember the event if epoll_wait returns -EFAULT\n\nIf epoll_wait returns -EFAULT, the event that was being returned when the\nfault was encountered will be forgotten.  This is not a big deal since\nEFAULT will happen only if a buggy userspace program passes in a bad\naddress, in which case what happens later usually doesn\u0027t matter.\nHowever, it is easy to remember the event for later, and this patch makes\na simple change to do that.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "abff55cee1039b5a3b96f7a5eb6e65b9f247a274",
      "tree": "dfbcc71256c2129d2e0ee3e077461103338b9591",
      "parents": [
        "bb57c3edcd2fc51d95914c39448f36e43af9d6af"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: don\u0027t use current in irq context\n\nep_call_nested() (formerly ep_poll_safewake()) uses \"current\" (without\ndereferencing it) to detect callback recursion, but it may be called from\nirq context where the use of current is generally discouraged.  It would\nbe better to use get_cpu() and put_cpu() to detect the callback recursion.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bb57c3edcd2fc51d95914c39448f36e43af9d6af",
      "tree": "8d38edcdc5ef1f2694c3607829952f04ce266292",
      "parents": [
        "296e236e96dddef351a1809c0d414bcddfcf3800"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: remove debugging code\n\nRemove debugging code from epoll.  There\u0027s no need for it to be included\ninto mainline code.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "296e236e96dddef351a1809c0d414bcddfcf3800",
      "tree": "279d6eb3f0114a49897cd4bbc0eaf43fffd46c6e",
      "parents": [
        "5071f97ec6d74f006072de0ce89b67c8792fe5a1"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: fix epoll\u0027s own poll (update)\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Pavel Pisa \u003cpisa@cmp.felk.cvut.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5071f97ec6d74f006072de0ce89b67c8792fe5a1",
      "tree": "cb20ebd79c6c146c73d321b4558f8176a0cf06c9",
      "parents": [
        "3cdbbeebb77348176bd6a03fd86e11bc281c529e"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:18 2009 -0700"
      },
      "message": "epoll: fix epoll\u0027s own poll\n\nFix a bug inside the epoll\u0027s f_op-\u003epoll() code, that returns POLLIN even\nthough there are no actual ready monitored fds.  The bug shows up if you\nadd an epoll fd inside another fd container (poll, select, epoll).\n\nThe problem is that callback-based wake ups used by epoll does not carry\n(patches will follow, to fix this) any information about the events that\nactually happened.  So the callback code, since it can\u0027t call the file*\n-\u003epoll() inside the callback, chains the file* into a ready-list.\n\nSo, suppose you added an fd with EPOLLOUT only, and some data shows up on\nthe fd, the file* mapped by the fd will be added into the ready-list (via\nwakeup callback).  During normal epoll_wait() use, this condition is\nsorted out at the time we\u0027re actually able to call the file*\u0027s\nf_op-\u003epoll().\n\nInside the old epoll\u0027s f_op-\u003epoll() though, only a quick check\n!list_empty(ready-list) was performed, and this could have led to\nreporting POLLIN even though no ready fds would show up at a following\nepoll_wait().  In order to correctly report the ready status for an epoll\nfd, the ready-list must be checked to see if any really available fd+event\nwould be ready in a following epoll_wait().\n\nOperation (calling f_op-\u003epoll() from inside f_op-\u003epoll()) that, like wake\nups, must be handled with care because of the fact that epoll fds can be\nadded to other epoll fds.\n\nTest code:\n\n/*\n *  epoll_test by Davide Libenzi (Simple code to test epoll internals)\n *  Copyright (C) 2008  Davide Libenzi\n *\n *  This program is free software; you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation; either version 2 of the License, or\n *  (at your option) any later version.\n *\n *  This program is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with this program; if not, write to the Free Software\n *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n *  Davide Libenzi \u003cdavidel@xmailserver.org\u003e\n *\n */\n\n#include \u003csys/types.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cstring.h\u003e\n#include \u003cerrno.h\u003e\n#include \u003csignal.h\u003e\n#include \u003climits.h\u003e\n#include \u003cpoll.h\u003e\n#include \u003csys/epoll.h\u003e\n#include \u003csys/wait.h\u003e\n\n#define EPWAIT_TIMEO\t(1 * 1000)\n#ifndef POLLRDHUP\n#define POLLRDHUP 0x2000\n#endif\n\n#define EPOLL_MAX_CHAIN\t100L\n\n#define EPOLL_TF_LOOP (1 \u003c\u003c 0)\n\nstruct epoll_test_cfg {\n\tlong size;\n\tlong flags;\n};\n\nstatic int xepoll_create(int n) {\n\tint epfd;\n\n\tif ((epfd \u003d epoll_create(n)) \u003d\u003d -1) {\n\t\tperror(\"epoll_create\");\n\t\texit(2);\n\t}\n\n\treturn epfd;\n}\n\nstatic void xepoll_ctl(int epfd, int cmd, int fd, struct epoll_event *evt) {\n\tif (epoll_ctl(epfd, cmd, fd, evt) \u003c 0) {\n\t\tperror(\"epoll_ctl\");\n\t\texit(3);\n\t}\n}\n\nstatic void xpipe(int *fds) {\n\tif (pipe(fds)) {\n\t\tperror(\"pipe\");\n\t\texit(4);\n\t}\n}\n\nstatic pid_t xfork(void) {\n\tpid_t pid;\n\n\tif ((pid \u003d fork()) \u003d\u003d (pid_t) -1) {\n\t\tperror(\"pipe\");\n\t\texit(5);\n\t}\n\n\treturn pid;\n}\n\nstatic int run_forked_proc(int (*proc)(void *), void *data) {\n\tint status;\n\tpid_t pid;\n\n\tif ((pid \u003d xfork()) \u003d\u003d 0)\n\t\texit((*proc)(data));\n\tif (waitpid(pid, \u0026status, 0) !\u003d pid) {\n\t\tperror(\"waitpid\");\n\t\treturn -1;\n\t}\n\n\treturn WIFEXITED(status) ? WEXITSTATUS(status): -2;\n}\n\nstatic int check_events(int fd, int timeo) {\n\tstruct pollfd pfd;\n\n\tfprintf(stdout, \"Checking events for fd %d\\n\", fd);\n\tmemset(\u0026pfd, 0, sizeof(pfd));\n\tpfd.fd \u003d fd;\n\tpfd.events \u003d POLLIN | POLLOUT;\n\tif (poll(\u0026pfd, 1, timeo) \u003c 0) {\n\t\tperror(\"poll()\");\n\t\treturn 0;\n\t}\n\tif (pfd.revents \u0026 POLLIN)\n\t\tfprintf(stdout, \"\\tPOLLIN\\n\");\n\tif (pfd.revents \u0026 POLLOUT)\n\t\tfprintf(stdout, \"\\tPOLLOUT\\n\");\n\tif (pfd.revents \u0026 POLLERR)\n\t\tfprintf(stdout, \"\\tPOLLERR\\n\");\n\tif (pfd.revents \u0026 POLLHUP)\n\t\tfprintf(stdout, \"\\tPOLLHUP\\n\");\n\tif (pfd.revents \u0026 POLLRDHUP)\n\t\tfprintf(stdout, \"\\tPOLLRDHUP\\n\");\n\n\treturn pfd.revents;\n}\n\nstatic int epoll_test_tty(void *data) {\n\tint epfd, ifd \u003d fileno(stdin), res;\n\tstruct epoll_event evt;\n\n\tif (check_events(ifd, 0) !\u003d POLLOUT) {\n\t\tfprintf(stderr, \"Something is cooking on STDIN (%d)\\n\", ifd);\n\t\treturn 1;\n\t}\n\tepfd \u003d xepoll_create(1);\n\tfprintf(stdout, \"Created epoll fd (%d)\\n\", epfd);\n\tmemset(\u0026evt, 0, sizeof(evt));\n\tevt.events \u003d EPOLLIN;\n\txepoll_ctl(epfd, EPOLL_CTL_ADD, ifd, \u0026evt);\n\tif (check_events(epfd, 0) \u0026 POLLIN) {\n\t\tres \u003d epoll_wait(epfd, \u0026evt, 1, 0);\n\t\tif (res \u003d\u003d 0) {\n\t\t\tfprintf(stderr, \"Epoll fd (%d) is ready when it shouldn\u0027t!\\n\",\n\t\t\t\tepfd);\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\treturn 0;\n}\n\nstatic int epoll_wakeup_chain(void *data) {\n\tstruct epoll_test_cfg *tcfg \u003d data;\n\tint i, res, epfd, bfd, nfd, pfds[2];\n\tpid_t pid;\n\tstruct epoll_event evt;\n\n\tmemset(\u0026evt, 0, sizeof(evt));\n\tevt.events \u003d EPOLLIN;\n\n\tepfd \u003d bfd \u003d xepoll_create(1);\n\n\tfor (i \u003d 0; i \u003c tcfg-\u003esize; i++) {\n\t\tnfd \u003d xepoll_create(1);\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, nfd, \u0026evt);\n\t\tbfd \u003d nfd;\n\t}\n\txpipe(pfds);\n\tif (tcfg-\u003eflags \u0026 EPOLL_TF_LOOP)\n\t{\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, epfd, \u0026evt);\n\t\t/*\n\t\t * If we\u0027re testing for loop, we want that the wakeup\n\t\t * triggered by the write to the pipe done in the child\n\t\t * process, triggers a fake event. So we add the pipe\n\t\t * read size with EPOLLOUT events. This will trigger\n\t\t * an addition to the ready-list, but no real events\n\t\t * will be there. The the epoll kernel code will proceed\n\t\t * in calling f_op-\u003epoll() of the epfd, triggering the\n\t\t * loop we want to test.\n\t\t */\n\t\tevt.events \u003d EPOLLOUT;\n\t}\n\txepoll_ctl(bfd, EPOLL_CTL_ADD, pfds[0], \u0026evt);\n\n\t/*\n\t * The pipe write must come after the poll(2) call inside\n\t * check_events(). This tests the nested wakeup code in\n\t * fs/eventpoll.c:ep_poll_safewake()\n\t * By having the check_events() (hence poll(2)) happens first,\n\t * we have poll wait queue filled up, and the write(2) in the\n\t * child will trigger the wakeup chain.\n\t */\n\tif ((pid \u003d xfork()) \u003d\u003d 0) {\n\t\tsleep(1);\n\t\twrite(pfds[1], \"w\", 1);\n\t\texit(0);\n\t}\n\n\tres \u003d check_events(epfd, 2000) \u0026 POLLIN;\n\n\tif (waitpid(pid, NULL, 0) !\u003d pid) {\n\t\tperror(\"waitpid\");\n\t\treturn -1;\n\t}\n\n\treturn res;\n}\n\nstatic int epoll_poll_chain(void *data) {\n\tstruct epoll_test_cfg *tcfg \u003d data;\n\tint i, res, epfd, bfd, nfd, pfds[2];\n\tpid_t pid;\n\tstruct epoll_event evt;\n\n\tmemset(\u0026evt, 0, sizeof(evt));\n\tevt.events \u003d EPOLLIN;\n\n\tepfd \u003d bfd \u003d xepoll_create(1);\n\n\tfor (i \u003d 0; i \u003c tcfg-\u003esize; i++) {\n\t\tnfd \u003d xepoll_create(1);\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, nfd, \u0026evt);\n\t\tbfd \u003d nfd;\n\t}\n\txpipe(pfds);\n\tif (tcfg-\u003eflags \u0026 EPOLL_TF_LOOP)\n\t{\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, epfd, \u0026evt);\n\t\t/*\n\t\t * If we\u0027re testing for loop, we want that the wakeup\n\t\t * triggered by the write to the pipe done in the child\n\t\t * process, triggers a fake event. So we add the pipe\n\t\t * read size with EPOLLOUT events. This will trigger\n\t\t * an addition to the ready-list, but no real events\n\t\t * will be there. The the epoll kernel code will proceed\n\t\t * in calling f_op-\u003epoll() of the epfd, triggering the\n\t\t * loop we want to test.\n\t\t */\n\t\tevt.events \u003d EPOLLOUT;\n\t}\n\txepoll_ctl(bfd, EPOLL_CTL_ADD, pfds[0], \u0026evt);\n\n\t/*\n\t * The pipe write mush come before the poll(2) call inside\n\t * check_events(). This tests the nested f_op-\u003epoll calls code in\n\t * fs/eventpoll.c:ep_eventpoll_poll()\n\t * By having the pipe write(2) happen first, we make the kernel\n\t * epoll code to load the ready lists, and the following poll(2)\n\t * done inside check_events() will test nested poll code in\n\t * ep_eventpoll_poll().\n\t */\n\tif ((pid \u003d xfork()) \u003d\u003d 0) {\n\t\twrite(pfds[1], \"w\", 1);\n\t\texit(0);\n\t}\n\tsleep(1);\n\tres \u003d check_events(epfd, 1000) \u0026 POLLIN;\n\n\tif (waitpid(pid, NULL, 0) !\u003d pid) {\n\t\tperror(\"waitpid\");\n\t\treturn -1;\n\t}\n\n\treturn res;\n}\n\nint main(int ac, char **av) {\n\tint error;\n\tstruct epoll_test_cfg tcfg;\n\n\tfprintf(stdout, \"\\n********** Testing TTY events\\n\");\n\terror \u003d run_forked_proc(epoll_test_tty, NULL);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing short wakeup chain\\n\");\n\terror \u003d run_forked_proc(epoll_wakeup_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d POLLIN ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d EPOLL_MAX_CHAIN;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing long wakeup chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_wakeup_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing short poll chain\\n\");\n\terror \u003d run_forked_proc(epoll_poll_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d POLLIN ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d EPOLL_MAX_CHAIN;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing long poll chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_poll_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d EPOLL_TF_LOOP;\n\tfprintf(stdout, \"\\n********** Testing loopy wakeup chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_wakeup_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d EPOLL_TF_LOOP;\n\tfprintf(stdout, \"\\n********** Testing loopy poll chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_poll_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\treturn 0;\n}\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Pavel Pisa \u003cpisa@cmp.felk.cvut.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "63cd885426872254e82dac2d9e13ea4f720c21dc",
      "tree": "addd6687abbbcd428c179260737fc97b25b7aa64",
      "parents": [
        "311d07611e8b354cc1ee6546e4c574c01111adc8"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Tue Mar 31 15:23:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:18 2009 -0700"
      },
      "message": "ntfs: remove private wrapper of endian helpers\n\nThe base versions handle constant folding now and are shorter than these\nprivate wrappers, use them directly.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2d7543851849a6923680cdd7e1047ed1a84a1c5",
      "tree": "bf3038819d4be83a1d1e64d7b95bbb3d9d908544",
      "parents": [
        "55a63998b8967615a15e2211ba0ff3a84a565824"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Mar 31 15:23:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:17 2009 -0700"
      },
      "message": "filesystem freeze: allow SysRq emergency thaw to thaw frozen filesystems\n\nNow that the filesystem freeze operation has been elevated to the VFS, and\nis just an ioctl away, some sort of safety net for unintentionally frozen\nroot filesystems may be in order.\n\nThe timeout thaw originally proposed did not get merged, but perhaps\nsomething like this would be useful in emergencies.\n\nFor example, freeze /path/to/mountpoint may freeze your root filesystem if\nyou forgot that you had that unmounted.\n\nI chose \u0027j\u0027 as the last remaining character other than \u0027h\u0027 which is sort\nof reserved for help (because help is generated on any unknown character).\n\nI\u0027ve tested this on a non-root fs with multiple (nested) freezers, as well\nas on a system rendered unresponsive due to a frozen root fs.\n\n[randy.dunlap@oracle.com: emergency thaw only if CONFIG_BLOCK enabled]\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Takashi Sato \u003ct-sato@yk.jp.nec.com\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@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": "327c0e968645f2601a43f5ea7c19c7b3a5fa0a34",
      "tree": "acc6789c120a6d5000ceebf51e690d14c6cfcacb",
      "parents": [
        "2678958e1225f350806d90f211a3b475f64aee80"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Mar 31 15:23:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "vmscan: fix it to take care of nodemask\n\ntry_to_free_pages() is used for the direct reclaim of up to\nSWAP_CLUSTER_MAX pages when watermarks are low.  The caller to\nalloc_pages_nodemask() can specify a nodemask of nodes that are allowed to\nbe used but this is not passed to try_to_free_pages().  This can lead to\nunnecessary reclaim of pages that are unusable by the caller and int the\nworst case lead to allocation failure as progress was not been make where\nit is needed.\n\nThis patch passes the nodemask used for alloc_pages_nodemask() to\ntry_to_free_pages().\n\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "2678958e1225f350806d90f211a3b475f64aee80",
      "tree": "d4aeb116c78f31f96ffb0760e36b95424e7f9494",
      "parents": [
        "88c3bd707c2552bcef93cc3724647903aece159d"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Mar 31 15:23:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "ramfs-nommu: use generic lru cache\n\nInstead of open-coding the lru-list-add pagevec batching when expanding a\nfile mapping from zero, defer to the appropriate page cache function that\nalso takes care of adding the page to the lru list.\n\nThis is cleaner, saves code and reduces the stack footprint by 16 words\nworth of pagevec.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.com\u003e\nCc: MinChan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "851a039cc547b33b8139fe6d7c2bbfb158e2724e",
      "tree": "0deabfe04b648d7542de8dd36dcd384d03fe09f6",
      "parents": [
        "56a76f8275c379ed73c8a43cfa1dfa2f5e9cfa19"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 31 15:23:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "mm: page_mkwrite change prototype to match fault: fix sysfs\n\nFix warnings and return values in sysfs bin_page_mkwrite(), fixing\nfs/sysfs/bin.c: In function `bin_page_mkwrite\u0027:\nfs/sysfs/bin.c:250: warning: passing argument 2 of `bb-\u003evm_ops-\u003epage_mkwrite\u0027 from incompatible pointer type\nfs/sysfs/bin.c: At top level:\nfs/sysfs/bin.c:280: warning: initialization from incompatible pointer type\n\nExpects to have my [PATCH next] sysfs: fix some bin_vm_ops errors\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56a76f8275c379ed73c8a43cfa1dfa2f5e9cfa19",
      "tree": "cbeaa82516c4818f72535b6ebe48a607cef88af4",
      "parents": [
        "c2ec175c39f62949438354f603f4aa170846aabb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Mar 31 15:23:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "fs: fix page_mkwrite error cases in core code and btrfs\n\npage_mkwrite is called with neither the page lock nor the ptl held.  This\nmeans a page can be concurrently truncated or invalidated out from\nunderneath it.  Callers are supposed to prevent truncate races themselves,\nhowever previously the only thing they can do in case they hit one is to\nraise a SIGBUS.  A sigbus is wrong for the case that the page has been\ninvalidated or truncated within i_size (eg.  hole punched).  Callers may\nalso have to perform memory allocations in this path, where again, SIGBUS\nwould be wrong.\n\nThe previous patch (\"mm: page_mkwrite change prototype to match fault\")\nmade it possible to properly specify errors.  Convert the generic buffer.c\ncode and btrfs to return sane error values (in the case of page removed\nfrom pagecache, VM_FAULT_NOPAGE will cause the fault handler to exit\nwithout doing anything, and the fault will be retried properly).\n\nThis fixes core code, and converts btrfs as a template/example.  All other\nfilesystems defining their own page_mkwrite should be fixed in a similar\nmanner.\n\nAcked-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2ec175c39f62949438354f603f4aa170846aabb",
      "tree": "f2c9bf1bec2deabe2d3a5092405b027637b6ead3",
      "parents": [
        "c2fdf3a9b2d52842808a8e551b53b55dd9b45030"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Mar 31 15:23:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "mm: page_mkwrite change prototype to match fault\n\nChange the page_mkwrite prototype to take a struct vm_fault, and return\nVM_FAULT_xxx flags.  There should be no functional change.\n\nThis makes it possible to return much more detailed error information to\nthe VM (and also can provide more information eg.  virtual_address to the\ndriver, which might be important in some special cases).\n\nThis is required for a subsequent fix.  And will also make it easier to\nmerge page_mkwrite() with fault() in future.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Artem Bityutskiy \u003cdedekind@infradead.org\u003e\nCc: Felix Blyakher \u003cfelixb@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2584e517320bd48dc8d20e38a2621a2dbe58fade",
      "tree": "3b94b6c4cc10ab16ab106464e8d32e2e77ad8634",
      "parents": [
        "8a0bdec194c21c8fdef840989d0d7b742bb5d4bc"
      ],
      "author": {
        "name": "Ravikiran G Thirumalai",
        "email": "kiran@scalex86.org",
        "time": "Tue Mar 31 15:21:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:12 2009 -0700"
      },
      "message": "mm: reintroduce and deprecate rlimit based access for SHM_HUGETLB\n\nAllow non root users with sufficient mlock rlimits to be able to allocate\nhugetlb backed shm for now.  Deprecate this though.  This is being\ndeprecated because the mlock based rlimit checks for SHM_HUGETLB is not\nconsistent with mmap based huge page allocations.\n\nSigned-off-by: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nReviewed-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a0bdec194c21c8fdef840989d0d7b742bb5d4bc",
      "tree": "0185e4cfa29f18a2f7b9d297e049a1de5314d0ec",
      "parents": [
        "e3a7cca1ef4c1af9b0acef9bd66eff6582a737b5"
      ],
      "author": {
        "name": "Ravikiran G Thirumalai",
        "email": "kiran@scalex86.org",
        "time": "Tue Mar 31 15:19:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:12 2009 -0700"
      },
      "message": "mm: fix SHM_HUGETLB to work with users in hugetlb_shm_group\n\nFix hugetlb subsystem so that non root users belonging to\nhugetlb_shm_group can actually allocate hugetlb backed shm.\n\nCurrently non root users cannot even map one large page using SHM_HUGETLB\nwhen they belong to the gid in /proc/sys/vm/hugetlb_shm_group.  This is\nbecause allocation size is verified against RLIMIT_MEMLOCK resource limit\neven if the user belongs to hugetlb_shm_group.\n\nThis patch\n1. Fixes hugetlb subsystem so that users with CAP_IPC_LOCK and users\n   belonging to hugetlb_shm_group don\u0027t need to be restricted with\n   RLIMIT_MEMLOCK resource limits\n2. This patch also disables mlock based rlimit checking (which will\n   be reinstated and marked deprecated in a subsequent patch).\n\nSigned-off-by: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nReviewed-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e3a7cca1ef4c1af9b0acef9bd66eff6582a737b5",
      "tree": "717097ec82ce0de55e44b2fe3e35fa041e5169b2",
      "parents": [
        "bd2f6199cf9af472aeefa1b642c9f504f19e6008"
      ],
      "author": {
        "name": "Edward Shishkin",
        "email": "edward.shishkin@gmail.com",
        "time": "Tue Mar 31 15:19:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:12 2009 -0700"
      },
      "message": "vfs: add/use account_page_dirtied()\n\nAdd a helper function account_page_dirtied().  Use that from two\ncallsites.  reiser4 adds a function which adds a third callsite.\n\nSigned-off-by: Edward Shishkin\u003cedward.shishkin@gmail.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0f043a81ebe84be3576667f04fdda481609e3816",
      "tree": "c54a9ac4a1dc79bd5f2f7ec3ead5aa48802ff7a3",
      "parents": [
        "140716934f67a9b28c3f7032c07c20c746d97a31"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 15:19:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:10 2009 -0700"
      },
      "message": "proc tty: remove struct tty_operations::read_proc\n\nstruct tty_operations::proc_fops took it\u0027s place and there is one less\ncreate_proc_read_entry() user now!\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ae149b6bec64a09373ba20fce75f8aa6b14b78fd",
      "tree": "5e2f1fdfc223b76ab798c87fd25bcff8d5f92eeb",
      "parents": [
        "15f7176eb1cccec0a332541285ee752b935c1c85"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 15:19:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:08 2009 -0700"
      },
      "message": "proc tty: add struct tty_operations::proc_fops\n\nUsed for gradual switch of TTY drivers from using -\u003eread_proc which helps\nwith gradual switch from -\u003eread_proc for the whole tree.\n\nAs side effect, fix possible race condition when -\u003edata initialized after\nPDE is hooked into proc tree.\n\n-\u003eproc_fops takes precedence over -\u003eread_proc.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d17abcd5417d84cfa8a225160481203a37dc81d4",
      "tree": "74ce2c425c5c6550acec90bc92c8a3f735f0d257",
      "parents": [
        "db6f204019380c788f1de06ee937bdbccd60e5c0",
        "bb75efddeaca89f8a67fd82cdcbaaf436cf17ca9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 18:00:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 18:00:26 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask:\n  oprofile: Thou shalt not call __exit functions from __init functions\n  cpumask: remove the now-obsoleted pcibus_to_cpumask(): generic\n  cpumask: remove cpumask_t from core\n  cpumask: convert rcutorture.c\n  cpumask: use new cpumask_ functions in core code.\n  cpumask: remove references to struct irqaction\u0027s mask field.\n  cpumask: use mm_cpumask() wrapper: kernel/fork.c\n  cpumask: use set_cpu_active in init/main.c\n  cpumask: remove node_to_first_cpu\n  cpumask: fix seq_bitmap_*() functions.\n  cpumask: remove dangerous CPU_MASK_ALL_PTR, \u0026CPU_MASK_ALL\n"
    },
    {
      "commit": "cf2f7d7c90279cdbc12429de278f3d27ac2050ae",
      "tree": "c84bb54712f566e6497ccadd1ae9f42b4baf0c63",
      "parents": [
        "53d8f67082c9b86699dd88b7f9e667e245193f21",
        "a9caa3de249a6c43bc9c6aec87881f09276677e3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 16:06:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 16:06:04 2009 -0700"
      },
      "message": "Merge branch \u0027proc-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc\n\n* \u0027proc-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc:\n  Revert \"proc: revert /proc/uptime to -\u003eread_proc hook\"\n  proc 2/2: remove struct proc_dir_entry::owner\n  proc 1/2: do PDE usecounting even for -\u003eread_proc, -\u003ewrite_proc\n  proc: fix sparse warnings in pagemap_read()\n  proc: move fs/proc/inode-alloc.txt comment into a source file\n"
    },
    {
      "commit": "3a355cc61d41bc31cc23a57247df63dba80a6018",
      "tree": "cf39d0b861fa8a33b748a95f3c86bbb33d9c2dac",
      "parents": [
        "77e465867080c2d1e0c410e96dcdcd51e8584a6f"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 16:49:58 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 14:28:58 2009 -0700"
      },
      "message": "reiserfs: xattr_create is unused with xattrs disabled\n\nThis patch ifdefs xattr_create when xattrs aren\u0027t enabled.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a9caa3de249a6c43bc9c6aec87881f09276677e3",
      "tree": "900831b12af9b3cd4743d4ae5ed5a457f8125edb",
      "parents": [
        "99b76233803beab302123d243eea9e41149804f3"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Feb 20 17:07:22 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:14:58 2009 +0400"
      },
      "message": "Revert \"proc: revert /proc/uptime to -\u003eread_proc hook\"\n\nThis reverts commit 6c87df37dcb9c6c33923707fa5191e0a65874d60.\n\nproc files implemented through seq_file do pread(2) now.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "99b76233803beab302123d243eea9e41149804f3",
      "tree": "398178210fe66845ccd6fa4258ba762a87e023ad",
      "parents": [
        "3dec7f59c370c7b58184d63293c3dc984d475840"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Mar 25 22:48:06 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:14:44 2009 +0400"
      },
      "message": "proc 2/2: remove struct proc_dir_entry::owner\n\nSetting -\u003eowner as done currently (pde-\u003eowner \u003d THIS_MODULE) is racy\nas correctly noted at bug #12454. Someone can lookup entry with NULL\n-\u003eowner, thus not pinning enything, and release it later resulting\nin module refcount underflow.\n\nWe can keep -\u003eowner and supply it at registration time like -\u003eproc_fops\nand -\u003edata.\n\nBut this leaves -\u003eowner as easy-manipulative field (just one C assignment)\nand somebody will forget to unpin previous/pin current module when\nswitching -\u003eowner. -\u003eproc_fops is declared as \"const\" which should give\nsome thoughts.\n\n-\u003eread_proc/-\u003ewrite_proc were just fixed to not require -\u003eowner for\nprotection.\n\nrmmod\u0027ed directories will be empty and return \".\" and \"..\" -- no harm.\nAnd directories with tricky enough readdir and lookup shouldn\u0027t be modular.\nWe definitely don\u0027t want such modular code.\n\nRemoving -\u003eowner will also make PDE smaller.\n\nSo, let\u0027s nuke it.\n\nKudos to Jeff Layton for reminding about this, let\u0027s say, oversight.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12454\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "3dec7f59c370c7b58184d63293c3dc984d475840",
      "tree": "54df7ab53c1f625179e2b69c78b782b5a867363e",
      "parents": [
        "09729a9919fdaf137995b0f19cbd401e22229cac"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Feb 20 17:04:33 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:14:27 2009 +0400"
      },
      "message": "proc 1/2: do PDE usecounting even for -\u003eread_proc, -\u003ewrite_proc\n\nstruct proc_dir_entry::owner is going to be removed. Now it\u0027s only necessary\nto protect PDEs which are using -\u003eread_proc, -\u003ewrite_proc hooks.\n\nHowever, -\u003eowner assignments are racy and make it very easy for someone to switch\n-\u003eowner on live PDE (as some subsystems do) without fixing refcounts and so on.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12454\n\nSo, -\u003eowner is on death row.\n\nProxy file operations exist already (proc_file_operations), just bump usecount\nwhen necessary.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "09729a9919fdaf137995b0f19cbd401e22229cac",
      "tree": "54b187f7fade4f4669f37935f019b6f8c23b5df4",
      "parents": [
        "1681bc30f272dd2fe347b90468791b05c7044f03"
      ],
      "author": {
        "name": "Milind Arun Choudhary",
        "email": "milindchoudhary@gmail.com",
        "time": "Fri Feb 20 16:56:45 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:14:22 2009 +0400"
      },
      "message": "proc: fix sparse warnings in pagemap_read()\n\nfs/proc/task_mmu.c:696:12: warning: cast removes address space of expression\nfs/proc/task_mmu.c:696:9: warning: incorrect type in assignment (different address spaces)\nfs/proc/task_mmu.c:696:9:    expected unsigned long long [noderef] [usertype] \u003casn:1\u003e*out\nfs/proc/task_mmu.c:696:9:    got unsigned long long [usertype] *\u003cnoident\u003e\nfs/proc/task_mmu.c:697:12: warning: cast removes address space of expression\nfs/proc/task_mmu.c:697:9: warning: incorrect type in assignment (different address spaces)\nfs/proc/task_mmu.c:697:9:    expected unsigned long long [noderef] [usertype] \u003casn:1\u003e*end\nfs/proc/task_mmu.c:697:9:    got unsigned long long [usertype] *\u003cnoident\u003e\nfs/proc/task_mmu.c:723:12: warning: cast removes address space of expression\nfs/proc/task_mmu.c:723:26: error: subtraction of different types can\u0027t work (different address spaces)\nfs/proc/task_mmu.c:725:24: error: subtraction of different types can\u0027t work (different address spaces)\n\nSigned-off-by: Milind Arun Choudhary \u003cmilindchoudhary@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "1681bc30f272dd2fe347b90468791b05c7044f03",
      "tree": "72a37dcde9c2536594d3eab4deca8997d34d39d5",
      "parents": [
        "e1c502482853f84606928f5a2f2eb6da1993cda1"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue Jan 13 13:53:48 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 01:13:12 2009 +0400"
      },
      "message": "proc: move fs/proc/inode-alloc.txt comment into a source file\n\nso that people will realize that it exists and can update it as needed.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "e1c502482853f84606928f5a2f2eb6da1993cda1",
      "tree": "ca296007164906342a195bdf3a5305277e6af5da",
      "parents": [
        "019abbc87025a030fd25008612afd4eff8a375f7",
        "ee93961be1faddf9e9a638bc519145c20f0cfeba"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:29:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:33:01 2009 -0700"
      },
      "message": "Merge branch \u0027reiserfs-updates\u0027 from Jeff Mahoney\n\n* reiserfs-updates: (35 commits)\n  reiserfs: rename [cn]_* variables\n  reiserfs: rename p_._ variables\n  reiserfs: rename p_s_tb to tb\n  reiserfs: rename p_s_inode to inode\n  reiserfs: rename p_s_bh to bh\n  reiserfs: rename p_s_sb to sb\n  reiserfs: strip trailing whitespace\n  reiserfs: cleanup path functions\n  reiserfs: factor out buffer_info initialization\n  reiserfs: add atomic addition of selinux attributes during inode creation\n  reiserfs: use generic readdir for operations across all xattrs\n  reiserfs: journaled xattrs\n  reiserfs: use generic xattr handlers\n  reiserfs: remove i_has_xattr_dir\n  reiserfs: make per-inode xattr locking more fine grained\n  reiserfs: eliminate per-super xattr lock\n  reiserfs: simplify xattr internal file lookups/opens\n  reiserfs: Clean up xattrs when REISERFS_FS_XATTR is unset\n  reiserfs: remove IS_PRIVATE helpers\n  reiserfs: remove link detection code\n  ...\n\nFixed up conflicts manually due to:\n - quota name cleanups vs variable naming changes:\n\tfs/reiserfs/inode.c\n\tfs/reiserfs/namei.c\n\tfs/reiserfs/stree.c\n        fs/reiserfs/xattr.c\n - exported include header cleanups\n\tinclude/linux/reiserfs_fs.h\n"
    },
    {
      "commit": "ee93961be1faddf9e9a638bc519145c20f0cfeba",
      "tree": "9c62f05dca9ea72c2b419a7f1f9d5874b587e5ab",
      "parents": [
        "d68caa9530a8ba54f97002e02bf6a0ad2462b8c0"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:50 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:40 2009 -0700"
      },
      "message": "reiserfs: rename [cn]_* variables\n\nThis patch renames n_, c_, etc variables to something more sane.  This\nis the sixth in a series of patches to rip out some of the awful\nvariable naming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d68caa9530a8ba54f97002e02bf6a0ad2462b8c0",
      "tree": "39a2b877483270253f95f3678a4559e9bd5524e8",
      "parents": [
        "a063ae17925cafabe55ebe1957ca0e8c480bd132"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:49 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:40 2009 -0700"
      },
      "message": "reiserfs: rename p_._ variables\n\nThis patch is a simple s/p_._//g to the reiserfs code.  This is the\nfifth in a series of patches to rip out some of the awful variable\nnaming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a063ae17925cafabe55ebe1957ca0e8c480bd132",
      "tree": "85d8797ec51124d33398a15a5a8d5a6b81e3a36f",
      "parents": [
        "995c762ea486b48c9777522071fbf132dea96807"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:48 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:40 2009 -0700"
      },
      "message": "reiserfs: rename p_s_tb to tb\n\nThis patch is a simple s/p_s_tb/tb/g to the reiserfs code.  This is the\nfourth in a series of patches to rip out some of the awful variable\nnaming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "995c762ea486b48c9777522071fbf132dea96807",
      "tree": "d6d82ca71ca67a98687762b83ce2858eb8dc624f",
      "parents": [
        "ad31a4fc0386e8590c51ca4b8f1ae1d8b8b2ac5e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:47 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: rename p_s_inode to inode\n\nThis patch is a simple s/p_s_inode/inode/g to the reiserfs code.  This\nis the third in a series of patches to rip out some of the awful\nvariable naming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ad31a4fc0386e8590c51ca4b8f1ae1d8b8b2ac5e",
      "tree": "636010f3ba98e15245f04ade1a74a730e40abf57",
      "parents": [
        "a9dd364358fbdc68faee5d20c2d648c320dc3cf0"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:46 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: rename p_s_bh to bh\n\nThis patch is a simple s/p_s_bh/bh/g to the reiserfs code.  This is the\nsecond in a series of patches to rip out some of the awful variable\nnaming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a9dd364358fbdc68faee5d20c2d648c320dc3cf0",
      "tree": "effcf61e5e198083faff82dc1e0bd6071639fca8",
      "parents": [
        "0222e6571c332563a48d4cf5487b67feabe60b5e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:45 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: rename p_s_sb to sb\n\nThis patch is a simple s/p_s_sb/sb/g to the reiserfs code.  This is the\nfirst in a series of patches to rip out some of the awful variable\nnaming in reiserfs.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0222e6571c332563a48d4cf5487b67feabe60b5e",
      "tree": "44829ca0a4b1343edec08d4f70696cb0d3218975",
      "parents": [
        "3cd6dbe6feb9b32347e6c6f25a27f0cde9d50418"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:44 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: strip trailing whitespace\n\nThis patch strips trailing whitespace from the reiserfs code.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3cd6dbe6feb9b32347e6c6f25a27f0cde9d50418",
      "tree": "613a4aaa00bc830b69a97ff2cb3558dc163f957d",
      "parents": [
        "fba4ebb5f0f84a6f9989e9591741ddff946de320"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:43 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: cleanup path functions\n\nThis patch cleans up some redundancies in the reiserfs tree path code.\n\ndecrement_bcount() is essentially the same function as brelse(), so we use\nthat instead.\n\ndecrement_counters_in_path() is exactly the same function as pathrelse(), so\nwe kill that and use pathrelse() instead.\n\nThere\u0027s also a bit of cleanup that makes the code a bit more readable.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fba4ebb5f0f84a6f9989e9591741ddff946de320",
      "tree": "7d140b781292f00a70a98f0f938fc2ac6f0896c0",
      "parents": [
        "57fe60df62410f949da094d06ced1dda9575b69c"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:42 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: factor out buffer_info initialization\n\nThis is the first in a series of patches to make balance_leaf() not\nquite so insane.\n\nThis patch factors out the open coded initializations of buffer_info\nstructures and defines a few initializers for the 4 cases they\u0027re used.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "57fe60df62410f949da094d06ced1dda9575b69c",
      "tree": "f3ba5db112cd7d2a8865d16bece28c38a766145c",
      "parents": [
        "a41f1a4715f26f7bc4d047d0bc7710145c8e69c7"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:41 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:39 2009 -0700"
      },
      "message": "reiserfs: add atomic addition of selinux attributes during inode creation\n\nSome time ago, some changes were made to make security inode attributes\nbe atomically written during inode creation.  ReiserFS fell behind in\nthis area, but with the reworking of the xattr code, it\u0027s now fairly\neasy to add.\n\nThe following patch adds the ability for security attributes to be added\nautomatically during inode creation.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a41f1a4715f26f7bc4d047d0bc7710145c8e69c7",
      "tree": "8b5d94368e774ec490619593300e8b3f4b7c5cb1",
      "parents": [
        "0ab2621ebd9a28bf7a524ecd50d492a10579dfcc"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:40 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: use generic readdir for operations across all xattrs\n\nThe current reiserfs xattr implementation open codes reiserfs_readdir\nand frees the path before calling the filldir function.  Typically, the\nfilldir function is something that modifies the file system, such as a\nchown or an inode deletion that also require reading of an inode\nassociated with each direntry.  Since the file system is modified, the\npath retained becomes invalid for the next run.  In addition, it runs\nbackwards in attempt to minimize activity.\n\nThis is clearly suboptimal from a code cleanliness perspective as well\nas performance-wise.\n\nThis patch implements a generic reiserfs_for_each_xattr that uses the\ngeneric readdir and a specific filldir routine that simply populates an\narray of dentries and then performs a specific operation on them.  When\nall files have been operated on, it then calls the operation on the\ndirectory itself.\n\nThe result is a noticable code reduction and better performance.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0ab2621ebd9a28bf7a524ecd50d492a10579dfcc",
      "tree": "62dda6de2fed116aff363190f95a58d56c690e3e",
      "parents": [
        "48b32a3553a54740d236b79a90f20147a25875e3"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:39 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: journaled xattrs\n\nDeadlocks are possible in the xattr code between the journal lock and the\nxattr sems.\n\nThis patch implements journalling for xattr operations. The benefit is\ntwofold:\n * It gets rid of the deadlock possibility by always ensuring that xattr\n   write operations are initiated inside a transaction.\n * It corrects the problem where xattr backing files aren\u0027t considered any\n   differently than normal files, despite the fact they are metadata.\n\nI discussed the added journal load with Chris Mason, and we decided that\nsince xattrs (versus other journal activity) is fairly rare, the introduction\nof larger transactions to support journaled xattrs wouldn\u0027t be too big a deal.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "48b32a3553a54740d236b79a90f20147a25875e3",
      "tree": "faf6807facb5825608469a9e33c9127f90b974df",
      "parents": [
        "8ecbe550a142fe604874afa477ea68986f89b86c"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:38 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: use generic xattr handlers\n\nChristoph Hellwig had asked me quite some time ago to port the reiserfs\nxattrs to the generic xattr interface.\n\nThis patch replaces the reiserfs-specific xattr handling code with the\ngeneric struct xattr_handler.\n\nHowever, since reiserfs doesn\u0027t split the prefix and name when accessing\nxattrs, it can\u0027t leverage generic_{set,get,list,remove}xattr without\nneedlessly reconstructing the name on the back end.\n\nUpdate 7/26/07: Added missing dput() to deletion path.\nUpdate 8/30/07: Added missing mark_inode_dirty when i_mode is used to\n                represent an ACL and no previous ACL existed.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8ecbe550a142fe604874afa477ea68986f89b86c",
      "tree": "3b11a69188137b478894f24079b8cc56df7843b3",
      "parents": [
        "8b6dd72a441a683cef7ace93de0a57ced4367f00"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:37 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: remove i_has_xattr_dir\n\nWith the changes to xattr root locking, the i_has_xattr_dir flag\nis no longer needed. This patch removes it.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8b6dd72a441a683cef7ace93de0a57ced4367f00",
      "tree": "6bdeebd3a35d71db2c7ea3e48e3f617b5efbd81a",
      "parents": [
        "d984561b326cd0fe0d1183d11b9b4fa1d011d21d"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:36 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: make per-inode xattr locking more fine grained\n\nThe per-inode locking can be made more fine-grained to surround just the\ninteraction with the filesystem itself.  This really only applies to\nprotecting reads during a write, since concurrent writes are barred with\ninode-\u003ei_mutex at the vfs level.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d984561b326cd0fe0d1183d11b9b4fa1d011d21d",
      "tree": "e0487588581bccaa2b875529ed84ec5a4a254ab9",
      "parents": [
        "6c17675e1e02ebde220ef639a3fb1333928ec2f4"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:35 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:38 2009 -0700"
      },
      "message": "reiserfs: eliminate per-super xattr lock\n\nWith the switch to using inode-\u003ei_mutex locking during lookups/creation\nin the xattr root, the per-super xattr lock is no longer needed.\n\nThis patch removes it.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c17675e1e02ebde220ef639a3fb1333928ec2f4",
      "tree": "2bc1e7f1d05d725d5d1294d687edb52da0722928",
      "parents": [
        "a72bdb1cd244725ff47b3a29662e2cb820d8c60f"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:34 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: simplify xattr internal file lookups/opens\n\nThe xattr file open/lookup code is needlessly complex.  We can use\nvfs-level operations to perform the same work, and also simplify the\nlocking constraints.  The locking advantages will be exploited in future\npatches.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a72bdb1cd244725ff47b3a29662e2cb820d8c60f",
      "tree": "68f9022b303ca5183bd64eddbff41f0624e84188",
      "parents": [
        "6dfede696391133eadd7ce90b61c9573ee6e5a90"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:33 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: Clean up xattrs when REISERFS_FS_XATTR is unset\n\nThe current reiserfs xattr implementation will not clean up old xattr\nfiles if files are deleted when REISERFS_FS_XATTR is unset.  This\nresults in inaccessible lost files, wasting space.\n\nThis patch compiles in basic xattr knowledge, such as how to delete them\nand change ownership for quota tracking.  If the file system has never\nused xattrs, then the operation is quite fast: it returns immediately\nwhen it sees there is no .reiserfs_priv directory.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6dfede696391133eadd7ce90b61c9573ee6e5a90",
      "tree": "2051bfc5108d0e7592b8738e43f4ae972d398ccd",
      "parents": [
        "010f5a21a323e7383e067009a7785462883fe5ea"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:32 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: remove IS_PRIVATE helpers\n\nThere are a number of helper functions for marking a reiserfs inode\nprivate that were leftover from reiserfs did its own thing wrt to\nprivate inodes.  S_PRIVATE has been in the kernel for some time, so this\npatch removes the helpers and uses IS_PRIVATE instead.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "010f5a21a323e7383e067009a7785462883fe5ea",
      "tree": "2144b0d0e7c7e37da0e5b28a922d49c00ea5cec3",
      "parents": [
        "ec6ea56b2f1d3811815e53131e85fd1fc9b51873"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:31 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: remove link detection code\n\nEarly in the reiserfs xattr development, there was a plan to use\nhardlinks to save disk space for identical xattrs.  That code never\nmaterialized and isn\u0027t going to, so this patch removes the detection\ncode.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ec6ea56b2f1d3811815e53131e85fd1fc9b51873",
      "tree": "cf5897a3bef7fdfaf96edcce21ffc6738aaea941",
      "parents": [
        "f437c529e3cd4853c1edff6fe3b191ad32304e8f"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:30 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: xattr reiserfs_get_page takes offset instead of index\n\nThis patch changes reiserfs_get_page to take an offset rather than an\nindex since no callers calculate the index differently.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f437c529e3cd4853c1edff6fe3b191ad32304e8f",
      "tree": "f46bc41448135d39dbd1900bd06a68e09accf86a",
      "parents": [
        "0030b64570c862f04c1550ba4a0bf7a9c128162a"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:29 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: small variable cleanup\n\nThis patch removes the xinode and mapping variables from\nreiserfs_xattr_{get,set}.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0030b64570c862f04c1550ba4a0bf7a9c128162a",
      "tree": "811b8eec4a417983ad1e5b51f44194f9cc98496d",
      "parents": [
        "1e5e59d431038c53954fe8f0b38bee0f0ad30349"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:28 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:37 2009 -0700"
      },
      "message": "reiserfs: use reiserfs_error()\n\nThis patch makes many paths that are currently using warnings to handle\nthe error.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1e5e59d431038c53954fe8f0b38bee0f0ad30349",
      "tree": "25e10648779424a85de6d368bd08c53c51c8f7a8",
      "parents": [
        "32e8b1062915d00d07d3b88a95174648e369b6a3"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:27 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:36 2009 -0700"
      },
      "message": "reiserfs: introduce reiserfs_error()\n\nAlthough reiserfs can currently handle severe errors such as journal failure,\nit cannot handle less severe errors like metadata i/o failure. The following\npatch adds a reiserfs_error() function akin to the one in ext3.\n\nSubsequent patches will use this new error handler to handle errors more\ngracefully in general.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "32e8b1062915d00d07d3b88a95174648e369b6a3",
      "tree": "f8d9da27137667072ca1f826c760fda1717a1c8d",
      "parents": [
        "c3a9c2109f84882b9b3178f6b1838d550d3df0ec"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:26 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:36 2009 -0700"
      },
      "message": "reiserfs: rearrange journal abort\n\nThis patch kills off reiserfs_journal_abort as it is never called, and\ncombines __reiserfs_journal_abort_{soft,hard} into one function called\nreiserfs_abort_journal, which performs the same work. It is silent\nas opposed to the old version, since the message was always issued\nafter a regular \u0027abort\u0027 message.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c3a9c2109f84882b9b3178f6b1838d550d3df0ec",
      "tree": "08a502b8013eabb562f03be45622b0f63b1a34b9",
      "parents": [
        "78b6513d2881f1a759fb9825a036d926392de084"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:25 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:36 2009 -0700"
      },
      "message": "reiserfs: rework reiserfs_panic\n\nReiserFS panics can be somewhat inconsistent.\nIn some cases:\n * a unique identifier may be associated with it\n * the function name may be included\n * the device may be printed separately\n\nThis patch aims to make warnings more consistent. reiserfs_warning() prints\nthe device name, so printing it a second time is not required. The function\nname for a warning is always helpful in debugging, so it is now automatically\ninserted into the output. Hans has stated that every warning should have\na unique identifier. Some cases lack them, others really shouldn\u0027t have them.\nreiserfs_warning() now expects an id associated with each message. In the\nrare case where one isn\u0027t needed, \"\" will suffice.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "78b6513d2881f1a759fb9825a036d926392de084",
      "tree": "4839959cb1e322dbabbaba2038fd7c85cb26cdff",
      "parents": [
        "fd7cb031efb1dd71cb731668e2f597d9e61acdcb"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:24 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:36 2009 -0700"
      },
      "message": "reiserfs: add locking around error buffer\n\nThe formatting of the error buffer is race prone. It uses static buffers\nfor both formatting and output. While overwriting the error buffer\ncan product garbled output, overwriting the format buffer with incompatible\n% directives can cause crashes.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cacbe3d7ad3c0a345ca1ce7bf1ecb4c5bfe54d7b",
      "tree": "853abddd05fe175e7aacf9cc7868b28e1bfa6e62",
      "parents": [
        "45b03d5e8e674eb6555b767e1c8eb40b671ff892"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:22 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:36 2009 -0700"
      },
      "message": "reiserfs: prepare_error_buf wrongly consumes va_arg\n\nvsprintf will consume varargs on its own. Skipping them manually\nresults in garbage in the error buffer, or Oopses in the case of\npointers.\n\nThis patch removes the advancement and fixes a number of bugs where\ncrashes were observed as side effects of a regular error report.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "45b03d5e8e674eb6555b767e1c8eb40b671ff892",
      "tree": "d74acd1be7f5102143df960e8cd692aadcc437df",
      "parents": [
        "1d889d9958490888b3fad1d486145d9a03559cbc"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:21 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:36 2009 -0700"
      },
      "message": "reiserfs: rework reiserfs_warning\n\nReiserFS warnings can be somewhat inconsistent.\nIn some cases:\n * a unique identifier may be associated with it\n * the function name may be included\n * the device may be printed separately\n\nThis patch aims to make warnings more consistent. reiserfs_warning() prints\nthe device name, so printing it a second time is not required. The function\nname for a warning is always helpful in debugging, so it is now automatically\ninserted into the output. Hans has stated that every warning should have\na unique identifier. Some cases lack them, others really shouldn\u0027t have them.\nreiserfs_warning() now expects an id associated with each message. In the\nrare case where one isn\u0027t needed, \"\" will suffice.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d889d9958490888b3fad1d486145d9a03559cbc",
      "tree": "6fab5d559376dd8d9aa970efd179a7345f77ae2e",
      "parents": [
        "a5437152eec2c9171f6ab06e63135c5333f0a929"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:20 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:35 2009 -0700"
      },
      "message": "reiserfs: make some warnings informational\n\nIn several places, reiserfs_warning is used when there is no warning, just\na notice. This patch changes some of them to indicate that the message\nis merely informational.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a5437152eec2c9171f6ab06e63135c5333f0a929",
      "tree": "11e7f4c09e48fc674703041834c9ae05d8dfc969",
      "parents": [
        "eba00305591714f1d85ccad1afbf58259c2197b4"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:19 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:35 2009 -0700"
      },
      "message": "reiserfs: use more consistent printk formatting\n\nThe output format between a warning/error/panic/info/etc changes with\nwhich one is used.\n\nThe following patch makes the messages more internally consistent, but also\nmore consistent with other Linux filesystems.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eba00305591714f1d85ccad1afbf58259c2197b4",
      "tree": "260912758e76c1add9e917d22a00544812562a75",
      "parents": [
        "600ed41675d8c384519d8f0b3c76afed39ef2f4b"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:18 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:35 2009 -0700"
      },
      "message": "reiserfs: use buffer_info for leaf_paste_entries\n\nThis patch makes leaf_paste_entries more consistent with respect to the\nother leaf operations.  Using buffer_info instead of buffer_head\ndirectly allows us to get a superblock pointer for use in error\nhandling.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "600ed41675d8c384519d8f0b3c76afed39ef2f4b",
      "tree": "106f17dcaaee07671efdef651ff7f78b1afffb2f",
      "parents": [
        "702d21c6f6c790b12c4820cd2f29bc8472aed633"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:17 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:35 2009 -0700"
      },
      "message": "reiserfs: audit transaction ids to always be unsigned ints\n\nThis patch fixes up the reiserfs code such that transaction ids are\nalways unsigned ints.  In places they can currently be signed ints or\nunsigned longs.\n\nThe former just causes an annoying clm-2200 warning and may join a\ntransaction when it should wait.\n\nThe latter is just for correctness since the disk format uses a 32-bit\ntransaction id.  There aren\u0027t any runtime problems that result from it\nnot wrapping at the correct location since the value is truncated\ncorrectly even on big endian systems.  The 0 value might make it to\ndisk, but the mount-time checks will bump it to 10 itself.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "702d21c6f6c790b12c4820cd2f29bc8472aed633",
      "tree": "eaed957de4e319dc0083fa66e7614f99a10fda89",
      "parents": [
        "8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 30 14:02:16 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 12:16:35 2009 -0700"
      },
      "message": "reiserfs: add support for mount count incrementing\n\nThe following patch adds the fields for tracking mount counts and last\nfsck timestamps to the superblock.  It also increments the mount count\non every read-write mount.\n\nReiserfsprogs 3.6.21 added support for these fields.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2d25ee36c84d5b2d6be8bfaf80256ecad69a06ca",
      "tree": "4e8fff4b3de41cec400385fdadd143c8d5d91904",
      "parents": [
        "915db32ddbc967f023fbf7d7f01cca9e05606a9b",
        "4a6a4499693a419a20559c41e33a7bd70bf20a6f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 11:31:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 11:31:47 2009 -0700"
      },
      "message": "Merge branch \u0027bkl-removal\u0027 of git://git.lwn.net/linux-2.6\n\n* \u0027bkl-removal\u0027 of git://git.lwn.net/linux-2.6:\n  Fix a lockdep warning in fasync_helper()\n  Add a missing unlock_kernel() in raw_open()\n"
    },
    {
      "commit": "b80e0d271606a0f5b35c85b11f9014ce09cbc415",
      "tree": "e030cdeeb857456382bd0962a584b48b7a76566e",
      "parents": [
        "83826dc505e6c6f432332dd45681be4bb71635ce",
        "5291658d87ac1ae60418e79e7b6bad7d5f595e0c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 10:08:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 10:08:10 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  fuse: fix fuse_file_lseek returning with lock held\n"
    },
    {
      "commit": "ffd14285142cb398b2b613e27f71be415d28072e",
      "tree": "32ffd364a8ee1e69d27ec058a3d710551d24a057",
      "parents": [
        "0d34fb8e93ceba7b6dad0062dbb4a0813bacd75b",
        "c68a65da35906b32505bbb8eecab316e6736e28b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 10:02:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 10:02:36 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6:\n  jfs: needs crc32_le\n  jfs: Fix error handling in metapage_writepage()\n  jfs: return f_fsid for statfs(2)\n  jfs: remove xtLookupList()\n  jfs: clean up a dangling comment\n"
    },
    {
      "commit": "5291658d87ac1ae60418e79e7b6bad7d5f595e0c",
      "tree": "e91cba2f5e73a5a93fcff6e866ebae737fee1e5c",
      "parents": [
        "0d34fb8e93ceba7b6dad0062dbb4a0813bacd75b"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Fri Mar 27 13:36:10 2009 +0300"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Mar 30 17:26:24 2009 +0200"
      },
      "message": "fuse: fix fuse_file_lseek returning with lock held\n\nThis bug was found with smatch (http://repo.or.cz/w/smatch.git/).  If\nwe return directly the inode-\u003ei_mutex lock doesn\u0027t get released.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: stable@kernel.org\n"
    },
    {
      "commit": "4a6a4499693a419a20559c41e33a7bd70bf20a6f",
      "tree": "7a89d08f0b2f19e1b84b38869596c8a84ab6f583",
      "parents": [
        "996ff68d8b358885c1de82a45517c607999947c7"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Fri Mar 27 12:24:31 2009 -0600"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Mon Mar 30 08:00:24 2009 -0600"
      },
      "message": "Fix a lockdep warning in fasync_helper()\n\nLockdep gripes if file-\u003ef_lock is taken in a no-IRQ situation, since that\nis not always the case.  We don\u0027t really want to disable IRQs for every\nacquisition of f_lock; instead, just move it outside of fasync_lock.\n\nReported-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nReported-by: Larry Finger \u003cLarry.Finger@lwfinger.net\u003e\nReported-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\n"
    },
    {
      "commit": "af76aba00fdcfb21535c9f9872245d14097a4561",
      "tree": "221ec0b2cd01c7629abc1f30f0f563e1731c1683",
      "parents": [
        "1a2142afa5646ad5af44bbe1febaa5e0b7e71156"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 22:05:11 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 22:05:11 2009 +1030"
      },
      "message": "cpumask: fix seq_bitmap_*() functions.\n\n1) seq_bitmap_list() should take a const.\n2) All the seq_bitmap should use cpumask_bits().\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "7c2c7d993044cddc5010f6f429b100c63bc7dffb",
      "tree": "b92a6daf7c11f9a53de6fed07512fe02cd5b4a68",
      "parents": [
        "e426b64c412aaa3e9eb3e4b261dc5be0d5a83e78"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Mar 28 23:21:27 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 28 17:30:00 2009 -0700"
      },
      "message": "fix setuid sometimes wouldn\u0027t\n\ncheck_unsafe_exec() also notes whether the fs_struct is being\nshared by more threads than will get killed by the exec, and if so\nsets LSM_UNSAFE_SHARE to make bprm_set_creds() careful about euid.\nBut /proc/\u003cpid\u003e/cwd and /proc/\u003cpid\u003e/root lookups make transient\nuse of get_fs_struct(), which also raises that sharing count.\n\nThis might occasionally cause a setuid program not to change euid,\nin the same way as happened with files-\u003ecount (check_unsafe_exec\nalso looks at sighand-\u003ecount, but /proc doesn\u0027t raise that one).\n\nWe\u0027d prefer exec not to unshare fs_struct: so fix this in procfs,\nreplacing get_fs_struct() by get_fs_path(), which does path_get\nwhile still holding task_lock, instead of raising fs-\u003ecount.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: stable@kernel.org\n___\n\n fs/proc/base.c |   50 +++++++++++++++--------------------------------\n 1 file changed, 16 insertions(+), 34 deletions(-)\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e426b64c412aaa3e9eb3e4b261dc5be0d5a83e78",
      "tree": "c1528139b34fef3e4595576266c64068098fe211",
      "parents": [
        "53e9309e01277ec99c38e84e0ca16921287cf470"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Mar 28 23:20:19 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 28 17:30:00 2009 -0700"
      },
      "message": "fix setuid sometimes doesn\u0027t\n\nJoe Malicki reports that setuid sometimes doesn\u0027t: very rarely,\na setuid root program does not get root euid; and, by the way,\nthey have a health check running lsof every few minutes.\n\nRight, check_unsafe_exec() notes whether the files_struct is being\nshared by more threads than will get killed by the exec, and if so\nsets LSM_UNSAFE_SHARE to make bprm_set_creds() careful about euid.\nBut /proc/\u003cpid\u003e/fd and /proc/\u003cpid\u003e/fdinfo lookups make transient\nuse of get_files_struct(), which also raises that sharing count.\n\nThere\u0027s a rather simple fix for this: exec\u0027s check on files-\u003ecount\nhas been redundant ever since 2.6.1 made it unshare_files() (except\nwhile compat_do_execve() omitted to do so) - just remove that check.\n\n[Note to -stable: this patch will not apply before 2.6.29: earlier\nreleases should just remove the files-\u003ecount line from unsafe_exec().]\n\nReported-by: Joe Malicki \u003cjmalicki@metacarta.com\u003e\nNarrowed-down-by: Michael Itz \u003cmitz@metacarta.com\u003e\nTested-by: Joe Malicki \u003cjmalicki@metacarta.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53e9309e01277ec99c38e84e0ca16921287cf470",
      "tree": "bc70d617e1898e5b0fdf161edafa1808ae8fa529",
      "parents": [
        "07d43ba98621f08e252a48c96b258b4d572b0257"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Mar 28 23:16:03 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 28 17:30:00 2009 -0700"
      },
      "message": "compat_do_execve should unshare_files\n\n2.6.26\u0027s commit fd8328be874f4190a811c58cd4778ec2c74d2c05\n\"sanitize handling of shared descriptor tables in failing execve()\"\nmoved the unshare_files() from flush_old_exec() and several binfmts\nto the head of do_execve(); but forgot to make the same change to\ncompat_do_execve(), leaving a CLONE_FILES files_struct shared across\nexec from a 32-bit process on a 64-bit kernel.\n\nIt\u0027s arguable whether the files_struct really ought to be unshared\nacross exec; but 2.6.1 made that so to stop the loading binary\u0027s fd\nleaking into other threads, and a 32-bit process on a 64-bit kernel\nought to behave in the same way as 32 on 32 and 64 on 64.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ae5080f4c2e293229508dabe7c8a90af4e4c460",
      "tree": "9cb11f26905a82b7fac9d3b8f9d61d58bc5c94b0",
      "parents": [
        "2c9e15a011c55ff96b2b8d2b126d1b9a96abba20",
        "aabb8fdb41128705fd1627f56fdd571e45fdbcdb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 16:23:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 16:23:12 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (37 commits)\n  fs: avoid I_NEW inodes\n  Merge code for single and multiple-instance mounts\n  Remove get_init_pts_sb()\n  Move common mknod_ptmx() calls into caller\n  Parse mount options just once and copy them to super block\n  Unroll essentials of do_remount_sb() into devpts\n  vfs: simple_set_mnt() should return void\n  fs: move bdev code out of buffer.c\n  constify dentry_operations: rest\n  constify dentry_operations: configfs\n  constify dentry_operations: sysfs\n  constify dentry_operations: JFS\n  constify dentry_operations: OCFS2\n  constify dentry_operations: GFS2\n  constify dentry_operations: FAT\n  constify dentry_operations: FUSE\n  constify dentry_operations: procfs\n  constify dentry_operations: ecryptfs\n  constify dentry_operations: CIFS\n  constify dentry_operations: AFS\n  ...\n"
    },
    {
      "commit": "2c9e15a011c55ff96b2b8d2b126d1b9a96abba20",
      "tree": "6d9b27a07f88ad4509dcd86aa74a2cdecd0d5f4b",
      "parents": [
        "805de022b100bcf796860fe88d7db4164066d1c3",
        "c16831b4cc9b0805adf8ca3001752a7ec10a17bf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 14:48:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 14:48:34 2009 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-quota-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-quota-2.6: (27 commits)\n  ext2: Zero our b_size in ext2_quota_read()\n  trivial: fix typos/grammar errors in fs/Kconfig\n  quota: Coding style fixes\n  quota: Remove superfluous inlines\n  quota: Remove uppercase aliases for quota functions.\n  nfsd: Use lowercase names of quota functions\n  jfs: Use lowercase names of quota functions\n  udf: Use lowercase names of quota functions\n  ufs: Use lowercase names of quota functions\n  reiserfs: Use lowercase names of quota functions\n  ext4: Use lowercase names of quota functions\n  ext3: Use lowercase names of quota functions\n  ext2: Use lowercase names of quota functions\n  ramfs: Remove quota call\n  vfs: Use lowercase names of quota functions\n  quota: Remove dqbuf_t and other cleanups\n  quota: Remove NODQUOT macro\n  quota: Make global quota locks cacheline aligned\n  quota: Move quota files into separate directory\n  ext4: quota reservation for delayed allocation\n  ...\n"
    },
    {
      "commit": "805de022b100bcf796860fe88d7db4164066d1c3",
      "tree": "79002a4947a0df8d82ea5f75fac8c6d958848877",
      "parents": [
        "7c757eb9f804782fb39d0ae2c1a88ffb9309138e",
        "1fecb1c4b62881e3689ba2dcf93072ae301b597c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 14:48:07 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 14:48:07 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm:\n  dlm: fix length calculation in compat code\n  dlm: ignore cancel on granted lock\n  dlm: clear defunct cancel state\n  dlm: replace idr with hash table for connections\n  dlm: comment typo fixes\n  dlm: use ipv6_addr_copy\n  dlm: Change rwlock which is only used in write mode to a spinlock\n"
    },
    {
      "commit": "aabb8fdb41128705fd1627f56fdd571e45fdbcdb",
      "tree": "bae6e9abf167cf20b9a2d3e5c38520d3f17b777d",
      "parents": [
        "1bd7903560f1f713e85188a5aaf4d2428b6c8b50"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Mar 11 13:17:36 2009 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:05 2009 -0400"
      },
      "message": "fs: avoid I_NEW inodes\n\nTo be on the safe side, it should be less fragile to exclude I_NEW inodes\nfrom inode list scans by default (unless there is an important reason to\nhave them).\n\nNormally they will get excluded (eg.  by zero refcount or writecount etc),\nhowever it is a bit fragile for list walkers to know exactly what parts of\nthe inode state is set up and valid to test when in I_NEW.  So along these\nlines, move I_NEW checks upward as well (sometimes taking I_FREEING etc\nchecks with them too -- this shouldn\u0027t be a problem should it?)\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1bd7903560f1f713e85188a5aaf4d2428b6c8b50",
      "tree": "0b6faa6cb51effe327dfecbd6a05e7a3b50debfe",
      "parents": [
        "289f00e225a6f60056644e0fd7e4081cb140c631"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@linux.vnet.ibm.com",
        "time": "Sat Mar 07 10:12:32 2009 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:04 2009 -0400"
      },
      "message": "Merge code for single and multiple-instance mounts\n\nnew_pts_mount() (including the get_sb_nodev()), shares a lot of code\nwith init_pts_mount(). The only difference between them is the \u0027test-super\u0027\nfunction passed into sget().\n\nMove all common code into devpts_get_sb() and remove the new_pts_mount() and\ninit_pts_mount() functions,\n\nChangelog[v3]:\n\t[Serge Hallyn]: Remove unnecessary printk()s\nChangelog[v2]:\n\t(Christoph Hellwig): Merge code in \u0027do_pts_mount()\u0027 into devpts_get_sb()\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nTested-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "289f00e225a6f60056644e0fd7e4081cb140c631",
      "tree": "70710d196d03f9a63a1e9034c0d4536833cb2bd6",
      "parents": [
        "945cf2c79f6fbb1b74e3b0ca08f48b6af56ad412"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@linux.vnet.ibm.com",
        "time": "Sat Mar 07 10:12:06 2009 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:04 2009 -0400"
      },
      "message": "Remove get_init_pts_sb()\n\nWith mknod_ptmx() moved to devpts_get_sb(), init_pts_mount() becomes\na wrapper around get_init_pts_sb(). Remove get_init_pts_sb() and\nfold code into init_pts_mount().\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "945cf2c79f6fbb1b74e3b0ca08f48b6af56ad412",
      "tree": "82ef6088dc080f12bd330c095e605c06ef66dd50",
      "parents": [
        "482984f06df54d886995a4383d2f5bb85e3de945"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@linux.vnet.ibm.com",
        "time": "Sat Mar 07 10:11:41 2009 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:04 2009 -0400"
      },
      "message": "Move common mknod_ptmx() calls into caller\n\nWe create \u0027ptmx\u0027 node in both single-instance and multiple-instance\nmounts. So devpts_get_sb() can call mknod_ptmx() once rather than\nhave both modes calling mknod_ptmx() separately.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "482984f06df54d886995a4383d2f5bb85e3de945",
      "tree": "30d4b05f6dbaeec18b741b182b25c776d8ae65c3",
      "parents": [
        "fdbf5348661ac9d519164d1489f30cc0384fda58"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@linux.vnet.ibm.com",
        "time": "Sat Mar 07 10:14:41 2009 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:04 2009 -0400"
      },
      "message": "Parse mount options just once and copy them to super block\n\nSince all the mount option parsing is done in devpts, we could do it\njust once and pass it around in devpts functions and eventually store\nit in the super block.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fdbf5348661ac9d519164d1489f30cc0384fda58",
      "tree": "54c944d78f28a2700aa3424322d7d758fbbde25c",
      "parents": [
        "a3ec947c85ec339884b30ef6a08133e9311fdae1"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@linux.vnet.ibm.com",
        "time": "Sat Mar 07 10:16:20 2009 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:03 2009 -0400"
      },
      "message": "Unroll essentials of do_remount_sb() into devpts\n\nOn remount, devpts fs only needs to parse the mount options. Users cannot\ndirectly create/dirty files in /dev/pts so the MS_RDONLY flag and\nshrinking the dcache does not really apply to devpts.\n\nSo effectively on remount, devpts only parses the mount options and updates\nthese options in its super block. As such, we could replace do_remount_sb()\ncall with a direct parse_mount_options().\n\nDoing so enables subsequent patches to avoid parsing the mount options twice\nand simplify the code.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a3ec947c85ec339884b30ef6a08133e9311fdae1",
      "tree": "c3cc5859a6b6d8986547405b6c5bd11bc8916114",
      "parents": [
        "585d3bc06f4ca57f975a5a1f698f65a45ea66225"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@linux.vnet.ibm.com",
        "time": "Wed Mar 04 12:06:34 2009 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:03 2009 -0400"
      },
      "message": "vfs: simple_set_mnt() should return void\n\nsimple_set_mnt() is defined as returning \u0027int\u0027 but always returns 0.\nCallers assume simple_set_mnt() never fails and don\u0027t properly cleanup if\nit were to _ever_ fail.  For instance, get_sb_single() and get_sb_nodev()\nshould:\n\n        up_write(sb-\u003es_unmount);\n        deactivate_super(sb);\n\nif simple_set_mnt() fails.\n\nSince simple_set_mnt() never fails, would be cleaner if it did not\nreturn anything.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "585d3bc06f4ca57f975a5a1f698f65a45ea66225",
      "tree": "393cbd213e714f00c0cae85851e7837ed88b9a99",
      "parents": [
        "3ba13d179e8c24c68eac32b93593a6b10fcd1572"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Feb 25 10:44:19 2009 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:03 2009 -0400"
      },
      "message": "fs: move bdev code out of buffer.c\n\nMove some block device related code out from buffer.c and put it in\nblock_dev.c. I\u0027m trying to move non-buffer_head code out of buffer.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3ba13d179e8c24c68eac32b93593a6b10fcd1572",
      "tree": "732162ba9ddfe66c8e892a25765cb30f0807cf31",
      "parents": [
        "296c2d86635bd6ecd8f282dfff18bb68fb4fc512"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 06:02:22 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:03 2009 -0400"
      },
      "message": "constify dentry_operations: rest\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "296c2d86635bd6ecd8f282dfff18bb68fb4fc512",
      "tree": "1a8cd312d4e624f3b4b1d93086630dd0e75465bd",
      "parents": [
        "ee1ec32903fc3139af00ebc7ee483dabca3f4fa5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 06:02:01 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:03 2009 -0400"
      },
      "message": "constify dentry_operations: configfs\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ee1ec32903fc3139af00ebc7ee483dabca3f4fa5",
      "tree": "70145c6ef8e4426705082059ac674a4c4fd937b8",
      "parents": [
        "ad28b4ef1937b11432cd64fe1ebad714f8e253bd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 06:01:46 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:02 2009 -0400"
      },
      "message": "constify dentry_operations: sysfs\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ad28b4ef1937b11432cd64fe1ebad714f8e253bd",
      "tree": "0440a0a2ac046e859686237c2f22a4a43dc3c50f",
      "parents": [
        "d8fba0ffe5e7442fc2560873ec901be6e56602a1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 06:00:49 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:02 2009 -0400"
      },
      "message": "constify dentry_operations: JFS\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d8fba0ffe5e7442fc2560873ec901be6e56602a1",
      "tree": "99e6aec6f22e2584503571c350c3c22d55dc2704",
      "parents": [
        "92cecbbfa3785a944c733a284b77faee5b82b70c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 06:00:26 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:02 2009 -0400"
      },
      "message": "constify dentry_operations: OCFS2\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "92cecbbfa3785a944c733a284b77faee5b82b70c",
      "tree": "cafb14302ebe906270d005c00a17e19733dfa787",
      "parents": [
        "ce6cdc474aa5bf4c1a7dc698d83bb0622846a81d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 06:00:05 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:02 2009 -0400"
      },
      "message": "constify dentry_operations: GFS2\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ce6cdc474aa5bf4c1a7dc698d83bb0622846a81d",
      "tree": "66473a03448d329ffec987cfdcf2ebc7364c32bd",
      "parents": [
        "4269590a72934bb901b33b686e20605bf66653c4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 05:59:46 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:01 2009 -0400"
      },
      "message": "constify dentry_operations: FAT\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4269590a72934bb901b33b686e20605bf66653c4",
      "tree": "6e70362f5f29c0a0da151291ade3d3db9123fd4b",
      "parents": [
        "d72f71eb0edd629c95715aa7305b0259d3581e34"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 05:59:13 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:01 2009 -0400"
      },
      "message": "constify dentry_operations: FUSE\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d72f71eb0edd629c95715aa7305b0259d3581e34",
      "tree": "f7f96de5c94ffae797b9b8e41939c8bdeb0ecb81",
      "parents": [
        "5a3fd05a9bb2f104020fbfc4551ad4aaed4660a4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 05:58:47 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:01 2009 -0400"
      },
      "message": "constify dentry_operations: procfs\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5a3fd05a9bb2f104020fbfc4551ad4aaed4660a4",
      "tree": "4614ad0df3002edbb8c40c451310a33033af053d",
      "parents": [
        "4fd03e84d8f4e6304cef19698a24dee84039ef01"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 05:57:52 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:01 2009 -0400"
      },
      "message": "constify dentry_operations: ecryptfs\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4fd03e84d8f4e6304cef19698a24dee84039ef01",
      "tree": "c3174fbf23832afb5cf110c3362e30e6b6eedc0a",
      "parents": [
        "79be57cc7fd25563c73ab26b0c28ff6ad0d618fc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 05:57:07 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:01 2009 -0400"
      },
      "message": "constify dentry_operations: CIFS\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "79be57cc7fd25563c73ab26b0c28ff6ad0d618fc",
      "tree": "eba0fbeaf2280bf86e5d479f8a58158e983e7033",
      "parents": [
        "08f11513fa6f712506edb99327f7d051da9d860f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 05:56:47 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:00 2009 -0400"
      },
      "message": "constify dentry_operations: AFS\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "08f11513fa6f712506edb99327f7d051da9d860f",
      "tree": "4c174f5d9d573187687c4c638d90a4dee69cce1a",
      "parents": [
        "a488257ce5a55c53973671218791296463698d07"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 05:56:19 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:00 2009 -0400"
      },
      "message": "constify dentry_operations: autofs, autofs4\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a488257ce5a55c53973671218791296463698d07",
      "tree": "d5f6b851cf233acfe5f25a25f794e2c1bb571669",
      "parents": [
        "e16404ed0f3f330dc3e99b95cef69bb60bcd27f7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 05:55:46 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:00 2009 -0400"
      },
      "message": "constify dentry_operations: 9p\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    }
  ],
  "next": "e16404ed0f3f330dc3e99b95cef69bb60bcd27f7"
}
