)]}'
{
  "log": [
    {
      "commit": "90324cc1b11a211e37eabd8cb863e1a1561d6b1d",
      "tree": "c8b79c6850420a114ca6660c1b44fc486b1ba86d",
      "parents": [
        "fb8b00675eb6462aacab56bca31ed6107bda5314",
        "169ebd90131b2ffca74bb2dbe7eeacd39fb83714"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "message": "Merge tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\nPull writeback tree from Wu Fengguang:\n \"Mainly from Jan Kara to avoid iput() in the flusher threads.\"\n\n* tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Avoid iput() from flusher thread\n  vfs: Rename end_writeback() to clear_inode()\n  vfs: Move waiting for inode writeback from end_writeback() to evict_inode()\n  writeback: Refactor writeback_single_inode()\n  writeback: Remove wb-\u003elist_lock from writeback_single_inode()\n  writeback: Separate inode requeueing after writeback\n  writeback: Move I_DIRTY_PAGES handling\n  writeback: Move requeueing when I_SYNC set to writeback_sb_inodes()\n  writeback: Move clearing of I_SYNC into inode_sync_complete()\n  writeback: initialize global_dirty_limit\n  fs: remove 8 bytes of padding from struct writeback_control on 64 bit builds\n  mm: page-writeback.c: local functions should not be exposed globally\n"
    },
    {
      "commit": "dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430",
      "tree": "42ea94ea733538f797aa745945fc43c4d1b89217",
      "parents": [
        "7994e6f7254354e03028a11f98a27bd67dace9f1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 03 14:48:02 2012 +0200"
      },
      "committer": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Sun May 06 13:43:41 2012 +0800"
      },
      "message": "vfs: Rename end_writeback() to clear_inode()\n\nAfter we moved inode_sync_wait() from end_writeback() it doesn\u0027t make sense\nto call the function end_writeback() anymore. Rename it to clear_inode()\nwhich well says what the function really does - set I_CLEAR flag.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "64f371bc3107e69efce563a3d0f0e6880de0d537",
      "tree": "7eac8ef3bf7a6cc8f9e147b9bf341b14fc6ae7f3",
      "parents": [
        "9883035ae7edef3ec62ad215611cb8e17d6a1a5d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 29 13:30:08 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 29 13:30:08 2012 -0700"
      },
      "message": "autofs: make the autofsv5 packet file descriptor use a packetized pipe\n\nThe autofs packet size has had a very unfortunate size problem on x86:\nbecause the alignment of \u0027u64\u0027 differs in 32-bit and 64-bit modes, and\nbecause the packet data was not 8-byte aligned, the size of the autofsv5\npacket structure differed between 32-bit and 64-bit modes despite\nlooking otherwise identical (300 vs 304 bytes respectively).\n\nWe first fixed that up by making the 64-bit compat mode know about this\nproblem in commit a32744d4abae (\"autofs: work around unhappy compat\nproblem on x86-64\"), and that made a 32-bit \u0027systemd\u0027 work happily on a\n64-bit kernel because everything then worked the same way as on a 32-bit\nkernel.\n\nBut it turned out that \u0027automount\u0027 had actually known and worked around\nthis problem in user space, so fixing the kernel to do the proper 32-bit\ncompatibility handling actually *broke* 32-bit automount on a 64-bit\nkernel, because it knew that the packet sizes were wrong and expected\nthose incorrect sizes.\n\nAs a result, we ended up reverting that compatibility mode fix, and\nthus breaking systemd again, in commit fcbf94b9dedd.\n\nWith both automount and systemd doing a single read() system call, and\nverifying that they get *exactly* the size they expect but using\ndifferent sizes, it seemed that fixing one of them inevitably seemed to\nbreak the other.  At one point, a patch I seriously considered applying\nfrom Michael Tokarev did a \"strcmp()\" to see if it was automount that\nwas doing the operation.  Ugly, ugly.\n\nHowever, a prettier solution exists now thanks to the packetized pipe\nmode.  By marking the communication pipe as being packetized (by simply\nsetting the O_DIRECT flag), we can always just write the bigger packet\nsize, and if user-space does a smaller read, it will just get that\npartial end result and the extra alignment padding will simply be thrown\naway.\n\nThis makes both automount and systemd happy, since they now get the size\nthey asked for, and the kernel side of autofs simply no longer needs to\ncare - it could pad out the packet arbitrarily.\n\nOf course, if there is some *other* user of autofs (please, please,\nplease tell me it ain\u0027t so - and we haven\u0027t heard of any) that tries to\nread the packets with multiple writes, that other user will now be\nbroken - the whole point of the packetized mode is that one system call\ngets exactly one packet, and you cannot read a packet in pieces.\n\nTested-by: Michael Tokarev \u003cmjt@tls.msk.ru\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nCc: Thomas Meyer \u003cthomas@m3y3r.de\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fcbf94b9dedd2ce08e798a99aafc94fec8668161",
      "tree": "bc81982bbcf96538a09103b2c722ac7d2c99bdef",
      "parents": [
        "c629eaf8392b676b4f83c3dc344e66402bfeec92"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Apr 28 08:29:56 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Apr 28 08:29:56 2012 -0700"
      },
      "message": "Revert \"autofs: work around unhappy compat problem on x86-64\"\n\nThis reverts commit a32744d4abae24572eff7269bc17895c41bd0085.\n\nWhile that commit was technically the right thing to do, and made the\nx86-64 compat mode work identically to native 32-bit mode (and thus\nfixing the problem with a 32-bit systemd install on a 64-bit kernel), it\nturns out that the automount binaries had workarounds for this compat\nproblem.\n\nNow, the workarounds are disgusting: doing an \"uname()\" to find out the\narchitecture of the kernel, and then comparing it for the 64-bit cases\nand fixing up the size of the read() in automount for those.  And they\nwere confused: it\u0027s not actually a generic 64-bit issue at all, it\u0027s\nvery much tied to just x86-64, which has different alignment for an\n\u0027u64\u0027 in 64-bit mode than in 32-bit mode.\n\nBut the end result is that fixing the compat layer actually breaks the\ncase of a 32-bit automount on a x86-64 kernel.\n\nThere are various approaches to fix this (including just doing a\n\"strcmp()\" on current-\u003ecomm and comparing it to \"automount\"), but I\nthink that I will do the one that teaches pipes about a special \"packet\nmode\", which will allow user space to not have to care too deeply about\nthe padding at the end of the autofs packet.\n\nThat change will make the compat workaround unnecessary, so let\u0027s revert\nit first, and get automount working again in compat mode.  The\npacketized pipes will then fix autofs for systemd.\n\nReported-and-requested-by: Michael Tokarev \u003cmjt@tls.msk.ru\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nCc: stable@kernel.org # for 3.3\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a591afc01d9e48affbacb365558a31e53c85af45",
      "tree": "9bb91f4eb94ec69fc4706c4944788ec5f3586063",
      "parents": [
        "820d41cf0cd0e94a5661e093821e2e5c6b36a9d8",
        "31796ac4e8f0e88f5c10f1ad6dab8f19bebe44a4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 18:12:23 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 18:12:23 2012 -0700"
      },
      "message": "Merge branch \u0027x86-x32-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull x32 support for x86-64 from Ingo Molnar:\n \"This tree introduces the X32 binary format and execution mode for x86:\n  32-bit data space binaries using 64-bit instructions and 64-bit kernel\n  syscalls.\n\n  This allows applications whose working set fits into a 32 bits address\n  space to make use of 64-bit instructions while using a 32-bit address\n  space with shorter pointers, more compressed data structures, etc.\"\n\nFix up trivial context conflicts in arch/x86/{Kconfig,vdso/vma.c}\n\n* \u0027x86-x32-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (71 commits)\n  x32: Fix alignment fail in struct compat_siginfo\n  x32: Fix stupid ia32/x32 inversion in the siginfo format\n  x32: Add ptrace for x32\n  x32: Switch to a 64-bit clock_t\n  x32: Provide separate is_ia32_task() and is_x32_task() predicates\n  x86, mtrr: Use explicit sizing and padding for the 64-bit ioctls\n  x86/x32: Fix the binutils auto-detect\n  x32: Warn and disable rather than error if binutils too old\n  x32: Only clear TIF_X32 flag once\n  x32: Make sure TS_COMPAT is cleared for x32 tasks\n  fs: Remove missed -\u003efds_bits from cessation use of fd_set structs internally\n  fs: Fix close_on_exec pointer in alloc_fdtable\n  x32: Drop non-__vdso weak symbols from the x32 VDSO\n  x32: Fix coding style violations in the x32 VDSO code\n  x32: Add x32 VDSO support\n  x32: Allow x32 to be configured\n  x32: If configured, add x32 system calls to system call tables\n  x32: Handle process creation\n  x32: Signal-related system calls\n  x86: Add #ifdef CONFIG_COMPAT to \u003casm/sys_ia32.h\u003e\n  ...\n"
    },
    {
      "commit": "54bf586e1f51018ba7624c851e7aa14cee0548d2",
      "tree": "5324f4c69bc03f0a60e83cfab0bfdffbc07932a7",
      "parents": [
        "ca7068c41a8d48ef35d1a3bba422ebcedace8513"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 17 02:55:49 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:46 2012 -0400"
      },
      "message": "autofs: set things up *before* registering fs type\n\nit\u0027s not a serious race, but we really want misc device before anybody\ngets to mount this sucker.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "48fde701aff662559b38d9a609574068f22d00fe",
      "tree": "aa6b203dc671b51d58575b65eb08310ff8309b60",
      "parents": [
        "6b4231e2f92adbcf96fb2a3fa751d7ca0a61b21f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 22:15:13 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:35 2012 -0400"
      },
      "message": "switch open-coded instances of d_make_root() to new helper\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a32744d4abae24572eff7269bc17895c41bd0085",
      "tree": "b384f580af75b17ede3fd830b7ad5276d0036ac0",
      "parents": [
        "b52b80023f262ce8a0ffdcb490acb23e8678377a"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Wed Feb 22 20:45:44 2012 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 25 12:10:27 2012 -0800"
      },
      "message": "autofs: work around unhappy compat problem on x86-64\n\nWhen the autofs protocol version 5 packet type was added in commit\n5c0a32fc2cd0 (\"autofs4: add new packet type for v5 communications\"), it\nobvously tried quite hard to be word-size agnostic, and uses explicitly\nsized fields that are all correctly aligned.\n\nHowever, with the final \"char name[NAME_MAX+1]\" array at the end, the\nactual size of the structure ends up being not very well defined:\nbecause the struct isn\u0027t marked \u0027packed\u0027, doing a \"sizeof()\" on it will\nalign the size of the struct up to the biggest alignment of the members\nit has.\n\nAnd despite all the members being the same, the alignment of them is\ndifferent: a \"__u64\" has 4-byte alignment on x86-32, but native 8-byte\nalignment on x86-64.  And while \u0027NAME_MAX+1\u0027 ends up being a nice round\nnumber (256), the name[] array starts out a 4-byte aligned.\n\nEnd result: the \"packed\" size of the structure is 300 bytes: 4-byte, but\nnot 8-byte aligned.\n\nAs a result, despite all the fields being in the same place on all\narchitectures, sizeof() will round up that size to 304 bytes on\narchitectures that have 8-byte alignment for u64.\n\nNote that this is *not* a problem for 32-bit compat mode on POWER, since\nthere __u64 is 8-byte aligned even in 32-bit mode.  But on x86, 32-bit\nand 64-bit alignment is different for 64-bit entities, and as a result\nthe structure that has exactly the same layout has different sizes.\n\nSo on x86-64, but no other architecture, we will just subtract 4 from\nthe size of the structure when running in a compat task.  That way we\nwill write the properly sized packet that user mode expects.\n\nNot pretty.  Sadly, this very subtle, and unnecessary, size difference\nhas been encoded in user space that wants to read packets of *exactly*\nthe right size, and will refuse to touch anything else.\n\nReported-and-tested-by: Thomas Meyer \u003cthomas@m3y3r.de\u003e\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1dce27c5aa6770e9d195f2bb7db1db3d4dde5591",
      "tree": "4ad3ffeee95cb5b10e047b7cb9bdbb48cfc734e0",
      "parents": [
        "8b3d1cda4f5ff0d7c2ae910ea8fd03493996912f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Feb 16 17:49:42 2012 +0000"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Sun Feb 19 10:30:52 2012 -0800"
      },
      "message": "Wrap accesses to the fd_sets in struct fdtable\n\nWrap accesses to the fd_sets in struct fdtable (for recording open files and\nclose-on-exec flags) so that we can move away from using fd_sets since we\nabuse the fd_set structs by not allocating the full-sized structure under\nnormal circumstances and by non-core code looking at the internals of the\nfd_sets.\n\nThe first abuse means that use of FD_ZERO() on these fd_sets is not permitted,\nsince that cannot be told about their abnormal lengths.\n\nThis introduces six wrapper functions for setting, clearing and testing\nclose-on-exec flags and fd-is-open flags:\n\n\tvoid __set_close_on_exec(int fd, struct fdtable *fdt);\n\tvoid __clear_close_on_exec(int fd, struct fdtable *fdt);\n\tbool close_on_exec(int fd, const struct fdtable *fdt);\n\tvoid __set_open_fd(int fd, struct fdtable *fdt);\n\tvoid __clear_open_fd(int fd, struct fdtable *fdt);\n\tbool fd_is_open(int fd, const struct fdtable *fdt);\n\nNote that I\u0027ve prepended \u0027__\u0027 to the names of the set/clear functions because\nthey require the caller to hold a lock to use them.\n\nNote also that I haven\u0027t added wrappers for looking behind the scenes at the\nthe array.  Possibly that should exist too.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nLink: http://lkml.kernel.org/r/20120216174942.23314.1364.stgit@warthog.procyon.org.uk\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1d6f2097865e64963e90cce04980dce2f9fc023f",
      "tree": "5173ccf565587797c62b290331ce53dfcb2fc305",
      "parents": [
        "e188dc02d3a9c911be56eca5aa114fe7e9822d53"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Aug 22 11:52:28 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Feb 13 20:45:37 2012 -0500"
      },
      "message": "autofs4 - fix lockdep splat in autofs\n\nWhen recursing down the locks when traversing a tree/list in\nget_next_positive_dentry() or get_next_positive_subdir() a lock can\nchange from being nested to being a parent which breaks lockdep. This\npatch tells lockdep about what we did.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8638094e956a47dbb9a25166705a91e9a0981d52",
      "tree": "c776b8254bb1a070cfafe5be8615c25b1314e31a",
      "parents": [
        "099469502f62fbe0d7e4f0b83a2f22538367f734"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Jan 13 20:41:46 2012 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 08:30:49 2012 -0800"
      },
      "message": "autofs4 - fix deal with autofs4_write races\n\nI don\u0027t know how I missed this obvious mistake when I\nreviewed Als\u0027 patches, sorry.\n\n[ Quoting Al:\n\n\tGrr...  Note to self: do git status *and* git stash show -p\n\tbefore git push.  Nothing like \"WTF? I\u0027d fixed that braino\"\n\tfeeling ;-/\n\n  Al sent the same patch - it got broken in commit d668dc56631d:\n  \"autofs4: deal with autofs4_write/autofs4_write races\". ]\n\nReported-and-tested-by: Dave Airlie \u003cairlied@redhat.com\u003e\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d668dc56631da067540b2494d2a1f29ff7b5f15a",
      "tree": "303ad17208838e8b9b1752f9427d55c84555f0f0",
      "parents": [
        "8753333266be67ff3a984ac1f6566d31c260bee4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 10 22:35:38 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 11 00:20:12 2012 -0500"
      },
      "message": "autofs4: deal with autofs4_write/autofs4_write races\n\nJust serialize the actual writing of packets into pipe on\na new mutex, independent from everything else in the locking\nhierarchy.  As soon as something has started feeding a piece\nof packet into the pipe to daemon, we *want* everything else\nabout to try the same to wait until we are done.\n\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8753333266be67ff3a984ac1f6566d31c260bee4",
      "tree": "27a8565988791e2971d631e19c7a9a0057386668",
      "parents": [
        "4041bcdc7bef06a2fb29c57394c713a74bd13b08"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 10 22:24:48 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 11 00:19:58 2012 -0500"
      },
      "message": "autofs4: catatonic_mode vs. notify_daemon race\n\nwe need to hold -\u003ewq_mutex while we are forming the packet to send,\nlest we have autofs4_catatonic_mode() setting wq-\u003ename.name to NULL\njust as autofs4_notify_daemon() decides to memcpy() from it...\n\nWe do have check for catatonic mode immediately after that (under\n-\u003ewq_mutex, as it ought to be) and packet won\u0027t be actually sent,\nbut it\u0027ll be too late for us if we oops on that memcpy() from NULL...\n\nFix is obvious - just extend the area covered by -\u003ewq_mutex over\nthat switch and check whether it\u0027s catatonic *before* doing anything\nelse.\n\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4041bcdc7bef06a2fb29c57394c713a74bd13b08",
      "tree": "adaf5dee1b8312cdd37a2b37551770af461212a3",
      "parents": [
        "b3f2a92447b8443360ac117a3d7c06689562a70c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 10 22:20:12 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 11 00:19:12 2012 -0500"
      },
      "message": "autofs4: autofs4_wait() vs. autofs4_catatonic_mode() race\n\nWe need to recheck -\u003ecatatonic after autofs4_wait() got -\u003ewq_mutex\nfor good, or we might end up with wq inserted into queue after\nautofs4_catatonic_mode() had done its thing.  It will stick there\nforever, since there won\u0027t be anything to clear its -\u003ename.name.\n\nA bit of a complication: validate_request() drops and regains -\u003ewq_mutex.\nIt actually ends up the most convenient place to stick the check into...\n\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "34c80b1d93e6e20ca9dea0baf583a5b5510d92d4",
      "tree": "7dcbf0a4e09464247e6992c8f44fcc872867bd3a",
      "parents": [
        "a6322de67b58a00e3a783ad9c87c2a11b2d67b47"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 08 21:32:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jan 06 23:19:54 2012 -0500"
      },
      "message": "vfs: switch -\u003eshow_options() to struct dentry *\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d8c9584ea2a92879f471fd3a2be3af6c534fb035",
      "tree": "3541b9c6228f820bdc65e4875156eb27b1c91cb1",
      "parents": [
        "ece2ccb668046610189d88d6aaf05aeb09c988a1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 07 18:16:57 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jan 06 23:16:53 2012 -0500"
      },
      "message": "vfs: prefer -\u003edentry-\u003ed_sb to -\u003emnt-\u003emnt_sb\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "030a8ba48fa6fa2a1304bab5b0f49360613c4af2",
      "tree": "497adf7fb741306aa0ba2f4417f1e3b02af04d1f",
      "parents": [
        "c47da79851d5f8629c6715e681315dd8e0a3d7d8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 03:29:03 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:55:10 2012 -0500"
      },
      "message": "autofs4: propagate umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c",
      "tree": "4ee4e584bc9a67f3ec14ce159d2d7d4a27e68d4a",
      "parents": [
        "8208a22bb8bd3c52ef634b4ff194f14892ab1713"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:41:39 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch vfs_mkdir() and -\u003emkdir() to umode_t\n\nvfs_mkdir() gets int, but immediately drops everything that might not\nfit into umode_t and that\u0027s the only caller of -\u003emkdir()...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bfe8684869601dacfcb2cd69ef8cfd9045f62170",
      "tree": "4e213aaa766b26f43f0f9ec7998a7745239d9377",
      "parents": [
        "6d6b77f163c7eabedbba00ed2abb7d4a570bff76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Oct 28 14:13:29 2011 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@serles.lst.de",
        "time": "Wed Nov 02 12:53:43 2011 +0100"
      },
      "message": "filesystems: add set_nlink()\n\nReplace remaining direct i_nlink updates with a new set_nlink()\nupdater function.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "2f84dd70916ccadd25e94d28363182a978f569b6",
      "tree": "1abbe27ce7a8641817f139320ec3d71c2e7d5d6b",
      "parents": [
        "c3ad996246dc5fd6e3df473c5fc1ba6d53e1d402"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 08 11:55:20 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 08 12:02:43 2011 -0700"
      },
      "message": "autofs4: fix debug printk warning uncovered by cleanup\n\nThe previous comit made the autofs4 debug printouts check types against\nthe printout format, and uncovered this bug:\n\n  fs/autofs4/waitq.c:106:2: warning: format ‘%08lx’ expects type ‘long unsigned int’, but argument 4 has type ‘autofs_wqt_t’\n\nwhich is due to the insane type for wait_queue_token.  That thing should\nbe some fixed well-defined size (preferably just \u0027unsigned int\u0027 or\n\u0027u32\u0027) but for unexplained reasons it is randomly either \u0027unsigned long\u0027\nor \u0027unsigned int\u0027 depending on the architecture.\n\nFor now, cast it to \u0027unsigned long\u0027 for printing, the way we do\nelsewhere.  Somebody else can try to explain the typedef mess.\n\n(There\u0027s a reason we don\u0027t support excessive use of typedefs in the\nkernel: it\u0027s usually just a good way of confusing yourself).\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c3ad996246dc5fd6e3df473c5fc1ba6d53e1d402",
      "tree": "b23aa171847cd48832f6cd0c10c10a195c2b888e",
      "parents": [
        "638a8439096c582bdb523fcea9d875d3e1fed38a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 08 11:35:17 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 08 11:35:17 2011 -0700"
      },
      "message": "autofs4: clean up uaotfs use of debug/info/warning printouts\n\nUse \u0027pr_debug()\u0027 for DPRINTK, which will do the proper type checking on\nthe arguments (without generating code) even when DEBUG isn\u0027t #defined.\n\nAlso, use the standard __VA_ARGS__ for the macros, and stop the\npointless abuse of \u0027do { xyz } while (0)\u0027 when the macro is already a\nperfectly well-formed single statement.\n\nReported-by: David Howells \u003cdhowells@redhat.com\u003e\nSuggested-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c7427d23f7ed695ac226dbe3a84d7f19091d34ce",
      "tree": "dcd94331ca00aebe203710be18c1171c7f935ec3",
      "parents": [
        "3cebde2413ba42504cf2c10ec1d47582912435cd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon May 30 01:50:53 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon May 30 01:50:53 2011 -0400"
      },
      "message": "autofs4: bogus dentry_unhash() added in -\u003eunlink()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "79bf7c732b5ff75b96022ed9d29181afd3d2509c",
      "tree": "74b8cc690f9a37fff02d0685464e1c695a25ef94",
      "parents": [
        "64252c75a2196a0cf1e0d3777143ecfe0e3ae650"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 24 13:06:06 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 26 07:26:47 2011 -0400"
      },
      "message": "vfs: push dentry_unhash on rmdir into file systems\n\nOnly a few file systems need this.  Start by pushing it down into each\nfs rmdir method (except gfs2 and xfs) so it can be dealt with on a per-fs\nbasis.\n\nThis does not change behavior for any in-tree file systems.\n\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "3dc8fe4dca9cd3e4aa828ed36451e2bcfd2350da",
      "tree": "9350ad63804b66df6f94781335d509aa5ae8f557",
      "parents": [
        "e7854723d0f3626f260c880d8db8e5136f29db19"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Fri Mar 25 01:51:37 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 14:54:35 2011 -0400"
      },
      "message": "autofs4: Do not potentially dereference NULL pointer returned by fget() in autofs_dev_ioctl_setpipefd()\n\nIn fs/autofs4/dev-ioctl.c::autofs_dev_ioctl_setpipefd() we call fget(),\nwhich may return NULL, but we do not explicitly test for that NULL return\nso we may end up dereferencing a NULL pointer - bad.\n\nWhen I originally submitted this patch I had chosen EBUSY as the return\nvalue to use if this happens. Ian Kent was kind enough to explain why that\nwould most likely be wrong and why EBADF should most likely be used\ninstead. This version of the patch uses EBADF.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e7854723d0f3626f260c880d8db8e5136f29db19",
      "tree": "3fe4f138922f51d8214ccc6bd2fb9ed4dfa1f234",
      "parents": [
        "83fb96bfc792e5ca693e53f7fd878d51b8493da8"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Mar 25 01:51:31 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 14:54:35 2011 -0400"
      },
      "message": "autofs4 - remove autofs4_lock\n\nThe autofs4_lock introduced by the rcu-walk changes has unnecessarily\nbroad scope. The locking is better handled by the per-autofs super\nblock lookup_lock.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "83fb96bfc792e5ca693e53f7fd878d51b8493da8",
      "tree": "315b3d418e9e4cf046195a6fbe12e9e9537d54ee",
      "parents": [
        "d4a85e35d1465da055264407d8395e84483084e6"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Mar 25 01:51:25 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 14:54:34 2011 -0400"
      },
      "message": "autofs4 - fix d_manage() return on rcu-walk\n\nThe daemon never needs to block and, in the rcu-walk case an error\nreturn isn\u0027t used, so always return zero.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d4a85e35d1465da055264407d8395e84483084e6",
      "tree": "d3bdbf9edd438ecd1a6de1bc30b9c13b466559e5",
      "parents": [
        "f9398c233e3201874395eea8558eb616fb198648"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Mar 25 01:51:20 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 14:54:34 2011 -0400"
      },
      "message": "autofs4 - fix autofs4_expire_indirect() traversal\n\nThe vfs-scale changes changed the traversal used in\nautofs4_expire_indirect() from a list to a depth first tree traversal\nwhich isn\u0027t right.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f9398c233e3201874395eea8558eb616fb198648",
      "tree": "adf805206a5bba08a44878dba61256a9dca6120d",
      "parents": [
        "3c3199852905ceb90a70e98777e71d369a5f0823"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Mar 25 01:51:14 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 14:54:34 2011 -0400"
      },
      "message": "autofs4 - fix dentry leak in autofs4_expire_direct()\n\nThere is a missing dput() when returning from autofs4_expire_direct()\nwhen we see that the dentry is already a pending mount.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3c3199852905ceb90a70e98777e71d369a5f0823",
      "tree": "aec40f3721955394587fc4ad364606161bc98cc5",
      "parents": [
        "62a7375e5d77d654695297c4b39d5d740d901184"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Mar 25 01:51:08 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 14:54:34 2011 -0400"
      },
      "message": "autofs4 - reinstate last used update on access\n\nWhen direct (and offset) mounts were introduced the the last used\ntimeout could no longer be updated in -\u003ed_revalidate(). This is\nbecause covered direct mounts would be followed over without calling\nthe autofs file system. As a result the definition of the busyness\ncheck for all entries was changed to be \"actually busy\" being an open\nfile or working directory within the automount. But now we have a call\nback in the follow so the last used update on any access can be\nre-instated. This requires DCACHE_MANAGE_TRANSIT to always be set.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1aed3e4204dd787d53b3cd6363eb63bb4900c38e",
      "tree": "503582fa9f7fa68a1da7af3770d3a627d041fb52",
      "parents": [
        "7cc90cc3ffe22a0d81b8d605b20a82ec7911012d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 18 09:09:02 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 18 10:01:59 2011 -0400"
      },
      "message": "lose \u0027mounting_here\u0027 argument in -\u003ed_manage()\n\nit\u0027s always false...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b89b12b46211d971d75e5ca8249817bc9e11c453",
      "tree": "3b846ec3daa6ce9e301668121b8c335b0d879470",
      "parents": [
        "26e6c910670171410577c7df2aebe94cef76e150"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 16 21:42:32 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 18 01:21:29 2011 -0500"
      },
      "message": "autofs4: clean -\u003ed_release() and autofs4_free_ino() up\n\nThe latter is called only when both ino and dentry are about to\nbe freed, so cleaning -\u003ed_fsdata and -\u003edentry is pointless.\n\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "26e6c910670171410577c7df2aebe94cef76e150",
      "tree": "407ecb012b91efce80be76f0191b2efc43689b7f",
      "parents": [
        "5a37db302e698a83209eff22ca8f3fd05eb1d84b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 16 18:43:40 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 18 01:21:28 2011 -0500"
      },
      "message": "autofs4: split autofs4_init_ino()\n\nsplit init_ino into new_ino and clean_ino; the former is\nwhat used to be init_ino(NULL, sbi), the latter is for cases\nwhere we passed non-NULL ino.  Lose unused arguments.\n\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5a37db302e698a83209eff22ca8f3fd05eb1d84b",
      "tree": "0ffef4412676c8b1814a2965b150168fcb9cfb03",
      "parents": [
        "726a5e0688fd344110d8f2979d87f243a4ba1a48"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 16 18:29:35 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 18 01:21:28 2011 -0500"
      },
      "message": "autofs4: mkdir and symlink always get a dentry that had passed lookup\n\n... so -\u003ed_fsdata will have been set up before we get there\n\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "726a5e0688fd344110d8f2979d87f243a4ba1a48",
      "tree": "c554b40ff5619dfd491b4890e89c8ee9c3131efd",
      "parents": [
        "0bf71d4d005176f6b6587ba64a377f9798213f21"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 16 17:43:52 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 18 01:21:28 2011 -0500"
      },
      "message": "autofs4: autofs4_get_inode() doesn\u0027t need autofs_info * argument anymore\n\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0bf71d4d005176f6b6587ba64a377f9798213f21",
      "tree": "4814d73e0201e92e7aca19b0a45f64b9a9644698",
      "parents": [
        "09f12c03fa699ce7d030c47add60577138927d4f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 16 17:39:15 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 18 01:21:28 2011 -0500"
      },
      "message": "autofs4: kill -\u003esize in autofs_info\n\nIt\u0027s used only to pass the length of symlink body to\nautofs4_get_inode() in autofs4_dir_symlink().  We can\nbloody well set inode-\u003ei_size in autofs4_dir_symlink()\ndirectly and be done with that.\n\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "09f12c03fa699ce7d030c47add60577138927d4f",
      "tree": "b9ef52e197a38579799ba9b62f78bf0c35efa4cc",
      "parents": [
        "14a2f00bde7668fe18d1c8355d26c7c96961e1f7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 16 17:20:23 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 18 01:21:27 2011 -0500"
      },
      "message": "autofs4: pass mode to autofs4_get_inode() explicitly\n\nIn all cases we\u0027d set inf-\u003emode to know value just before\npassing it to autofs4_get_inode().  That kills the need\nto store it in autofs_info and pass it to autofs_init_ino()\n\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "14a2f00bde7668fe18d1c8355d26c7c96961e1f7",
      "tree": "c14da20ae3c32474c52d49bec43e046b583b8d9d",
      "parents": [
        "292c5ee802e9b969b84ee671a5e3001d94230f5b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 16 17:13:33 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 18 01:21:27 2011 -0500"
      },
      "message": "autofs4: autofs4_mkroot() is not different from autofs4_init_ino()\n\nKill it.  Mind you, it\u0027s been an obfuscated call of autofs4_init_ino()\never since 2.3.99pre6-4...\n\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "292c5ee802e9b969b84ee671a5e3001d94230f5b",
      "tree": "616b0a583d17c50aedbb87082943248333d63c2b",
      "parents": [
        "c0bcc9d55252012805300ca01b9b7a143b4daf85"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 00:47:38 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 18 01:21:27 2011 -0500"
      },
      "message": "autofs4: keep symlink body in inode-\u003ei_private\n\ngets rid of all -\u003efree()/-\u003eu.symlink machinery in autofs; we simply\nkeep symlink bodies in inode-\u003ei_private and free them in -\u003eevict_inode().\n\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c0bcc9d55252012805300ca01b9b7a143b4daf85",
      "tree": "af83d0afe51156377032608242ae24ee0c24e860",
      "parents": [
        "8931221411f9ff950de8fd686dc5ab881394cb9a"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Jan 18 12:06:15 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 18 01:21:27 2011 -0500"
      },
      "message": "autofs4 - fix debug print in autofs4_lookup()\n\noz_mode isn\u0027t defined any more, use autofs4_oz_mode(sbi) instead.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c14cc63a63e94d490ac6517a555113c30d420db4",
      "tree": "4769517c39eedbbeaedc7a73636d7c65c0de5a38",
      "parents": [
        "6845a44a314c0c626549de373131bf108f9cc1f1"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Jan 18 12:06:04 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 18 01:21:26 2011 -0500"
      },
      "message": "autofs4 - fix get_next_positive_dentry()\n\nThe initialization condition in fs/autofs4/expire.c:get_next_positive_dentry()\nappears to be incorrect. If prev \u003d\u003d NULL I believe that root should be\nreturned.\n\nFurther down, at the current dentry check for it being simple_positive()\nit looks like the d_lock for dentry p should be dropped instead of dentry\nret, otherwise when p is assinged to ret we end up with no lock on p and\na lost lock on ret, which leads to a deadlock.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b650c858c26bd9ba29ebc82d30f09355845a294a",
      "tree": "cd3749a722a81425263e3a2b1d82898586665acf",
      "parents": [
        "ea5b778a8b98c85a87d66bf844904f9c3802b869"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Jan 15 10:51:57 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:49 2011 -0500"
      },
      "message": "autofs4: Merge the remaining dentry ops tables\n\nMerge the remaining autofs4 dentry ops tables.  It doesn\u0027t matter if\nd_automount and d_manage are present on something that\u0027s not mountable or\nholdable as these ops are only used if the appropriate flags are set in\ndentry-\u003ed_flags.\n\n[AV] switch to -\u003es_d_op, since now _everything_ on autofs4 is using the\nsame dentry_operations.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ab90911ff90cdab59b31c045c3f0ae480d14f29d",
      "tree": "683450a66eb9dc6bf053e38d63f4740bb53a7b6e",
      "parents": [
        "87556ef19926e97464e0163a7840140527ae6615"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jan 14 18:46:51 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:47 2011 -0500"
      },
      "message": "Allow d_manage() to be used in RCU-walk mode\n\nAllow d_manage() to be called from pathwalk when it is in RCU-walk mode as well\nas when it is in Ref-walk mode.  This permits __follow_mount_rcu() to call\nd_manage() directly.  d_manage() needs a parameter to indicate that it is in\nRCU-walk mode as it isn\u0027t allowed to sleep if in that mode (but should return\n-ECHILD instead).\n\nautofs4_d_manage() can then be set to retain RCU-walk mode if the daemon\naccesses it and otherwise request dropping back to ref-walk mode.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dd89f90d2deb9aa5bc8e1b15d726ff5c0bb2b623",
      "tree": "0f3d8c9c66be46215cc5b10d51ccb25cc8e68da1",
      "parents": [
        "9e3fea16ba386fa549a0b2de8a203e5d412997a0"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Jan 14 18:46:35 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:44 2011 -0500"
      },
      "message": "autofs4: Add v4 pseudo direct mount support\n\nVersion 4 of autofs provides a pseudo direct mount implementation\nthat relies on directories at the leaves of a directory tree under\nan indirect mount to trigger mounts.\n\nThis patch adds support for that functionality.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9e3fea16ba386fa549a0b2de8a203e5d412997a0",
      "tree": "88ee7f612240f8e33cc57d07a011a07db6280804",
      "parents": [
        "6651149371b842715906311b4631b8489cebf7e8"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Jan 14 18:46:30 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:43 2011 -0500"
      },
      "message": "autofs4: Fix wait validation\n\nIt is possible for the check in wait.c:validate_request() to return\nan incorrect result if the dentry that was mounted upon has changed\nduring the callback.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6651149371b842715906311b4631b8489cebf7e8",
      "tree": "4ad6941a353515edaada23426ec3b44724f40ca3",
      "parents": [
        "71e469db242c2eeb00faf9caf7d9e00150c00a6e"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Jan 14 18:46:24 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:42 2011 -0500"
      },
      "message": "autofs4: Clean up autofs4_free_ino()\n\nWhen this function is called the local reference count does\u0027t need to\nbe updated since the dentry is going away and dput definitely must\nnot be called here.\n\nAlso the autofs info struct field inode isn\u0027t used so remove it.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "71e469db242c2eeb00faf9caf7d9e00150c00a6e",
      "tree": "8fdb7f6900edca6f2973f9ae64331895112f017e",
      "parents": [
        "e61da20a50d21725ff27571a6dff9468e4fb7146"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Jan 14 18:46:19 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:41 2011 -0500"
      },
      "message": "autofs4: Clean up dentry operations\n\nThere are now two distinct dentry operations uses. One for dentrys\nthat trigger mounts and one for dentrys that do not.\n\nRationalize the use of these dentry operations and rename them to\nreflect their function.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e61da20a50d21725ff27571a6dff9468e4fb7146",
      "tree": "c82ea451647e95754bb27aa46c60fd264ddd7c2c",
      "parents": [
        "8c13a676d5a56495c350f3141824a5ef6c6b4606"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Jan 14 18:46:14 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:40 2011 -0500"
      },
      "message": "autofs4: Clean up inode operations\n\nSince the use of -\u003efollow_link() has been eliminated there is no\nneed to separate the indirect and direct inode operations.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8c13a676d5a56495c350f3141824a5ef6c6b4606",
      "tree": "514ec4ba97eef8d40bbec73b5d3b0c46bb9ee51a",
      "parents": [
        "b5b801779d59165c4ecf1009009109545bd1f642"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Jan 14 18:46:08 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:39 2011 -0500"
      },
      "message": "autofs4: Remove unused code\n\nRemove code that is not used due to the use of -\u003ed_automount()\nand -\u003ed_manage().\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b5b801779d59165c4ecf1009009109545bd1f642",
      "tree": "3a1c8b2e65e72977993ba96c1398edba4c63cbf5",
      "parents": [
        "10584211e48036182212b598cc53331776406d60"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Jan 14 18:46:03 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:38 2011 -0500"
      },
      "message": "autofs4: Add d_manage() dentry operation\n\nThis patch required a previous patch to add the -\u003ed_automount()\ndentry operation.\n\nAdd a function to use the newly defined -\u003ed_manage() dentry operation\nfor blocking during mount and expire.\n\nWhether the VFS calls the dentry operations d_automount() and d_manage()\nis controled by the DMANAGED_AUTOMOUNT and DMANAGED_TRANSIT flags. autofs\nuses the d_automount() operation to callback to user space to request\nmount operations and the d_manage() operation to block walks into mounts\nthat are under construction or destruction.\n\nIn order to prevent these functions from being called unnecessarily the\nDMANAGED_* flags are cleared for cases which would cause this. In the\ncommon case the DMANAGED_AUTOMOUNT and DMANAGED_TRANSIT flags are both\nset for dentrys waiting to be mounted. The DMANAGED_TRANSIT flag is\ncleared upon successful mount request completion and set during expire\nruns, both during the dentry expire check, and if selected for expire,\nis left set until a subsequent successful mount request completes.\n\nThe exception to this is the so-called rootless multi-mount which has\nno actual mount at its base. In this case the DMANAGED_AUTOMOUNT flag\nis cleared upon successful mount request completion as well and set\nagain after a successful expire.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "10584211e48036182212b598cc53331776406d60",
      "tree": "b66067b47a1104c3ae3ccd4248c9b41d5b869c5e",
      "parents": [
        "db3729153e82ba3ada89681f26c4f1b6d6807a80"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Jan 14 18:45:58 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:37 2011 -0500"
      },
      "message": "autofs4: Add d_automount() dentry operation\n\nAdd a function to use the newly defined -\u003ed_automount() dentry operation\nfor triggering mounts instead of doing the user space callback in -\u003elookup()\nand -\u003ed_revalidate().\n\nNote, to be useful the subsequent patch to add the -\u003ed_manage() dentry\noperation is also needed so the discussion of functionality is deferred to\nthat patch.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cc53ce53c86924bfe98a12ea20b7465038a08792",
      "tree": "3c9a4923dd9f413c46bfa83a20cb579446df6deb",
      "parents": [
        "9875cf806403fae66b2410a3c2cc820d97731e04"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jan 14 18:45:26 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:31 2011 -0500"
      },
      "message": "Add a dentry op to allow processes to be held during pathwalk transit\n\nAdd a dentry op (d_manage) to permit a filesystem to hold a process and make it\nsleep when it tries to transit away from one of that filesystem\u0027s directories\nduring a pathwalk.  The operation is keyed off a new dentry flag\n(DCACHE_MANAGE_TRANSIT).\n\nThe filesystem is allowed to be selective about which processes it holds and\nwhich it permits to continue on or prohibits from transiting from each flagged\ndirectory.  This will allow autofs to hold up client processes whilst letting\nits userspace daemon through to maintain the directory or the stuff behind it\nor mounted upon it.\n\nThe -\u003ed_manage() dentry operation:\n\n\tint (*d_manage)(struct path *path, bool mounting_here);\n\ntakes a pointer to the directory about to be transited away from and a flag\nindicating whether the transit is undertaken by do_add_mount() or\ndo_move_mount() skipping through a pile of filesystems mounted on a mountpoint.\n\nIt should return 0 if successful and to let the process continue on its way;\n-EISDIR to prohibit the caller from skipping to overmounted filesystems or\nautomounting, and to use this directory; or some other error code to return to\nthe user.\n\n-\u003ed_manage() is called with namespace_sem writelocked if mounting_here is true\nand no other locks held, so it may sleep.  However, if mounting_here is true,\nit may not initiate or wait for a mount or unmount upon the parameter\ndirectory, even if the act is actually performed by userspace.\n\nWithin fs/namei.c, follow_managed() is extended to check with d_manage() first\non each managed directory, before transiting away from it or attempting to\nautomount upon it.\n\nfollow_down() is renamed follow_down_one() and should only be used where the\nfilesystem deliberately intends to avoid management steps (e.g. autofs).\n\nA new follow_down() is added that incorporates the loop done by all other\ncallers of follow_down() (do_add/move_mount(), autofs and NFSD; whilst AFS, NFS\nand CIFS do use it, their use is removed by converting them to use\nd_automount()).  The new follow_down() calls d_manage() as appropriate.  It\nalso takes an extra parameter to indicate if it is being called from mount code\n(with namespace_sem writelocked) which it passes to d_manage().  follow_down()\nignores automount points so that it can be used to mount on them.\n\n__follow_mount_rcu() is made to abort rcu-walk mode if it hits a directory with\nDCACHE_MANAGE_TRANSIT set on the basis that we\u0027re probably going to have to\nsleep.  It would be possible to enter d_manage() in rcu-walk mode too, and have\nthat determine whether to abort or not itself.  That would allow the autofs\ndaemon to continue on in rcu-walk mode.\n\nNote that DCACHE_MANAGE_TRANSIT on a directory should be cleared when it isn\u0027t\nrequired as every tranist from that directory will cause d_manage() to be\ninvoked.  It can always be set again when necessary.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nWHAT THIS MEANS FOR AUTOFS\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAutofs currently uses the lookup() inode op and the d_revalidate() dentry op to\ntrigger the automounting of indirect mounts, and both of these can be called\nwith i_mutex held.\n\nautofs knows that the i_mutex will be held by the caller in lookup(), and so\ncan drop it before invoking the daemon - but this isn\u0027t so for d_revalidate(),\nsince the lock is only held on _some_ of the code paths that call it.  This\nmeans that autofs can\u0027t risk dropping i_mutex from its d_revalidate() function\nbefore it calls the daemon.\n\nThe bug could manifest itself as, for example, a process that\u0027s trying to\nvalidate an automount dentry that gets made to wait because that dentry is\nexpired and needs cleaning up:\n\n\tmkdir         S ffffffff8014e05a     0 32580  24956\n\tCall Trace:\n\t [\u003cffffffff885371fd\u003e] :autofs4:autofs4_wait+0x674/0x897\n\t [\u003cffffffff80127f7d\u003e] avc_has_perm+0x46/0x58\n\t [\u003cffffffff8009fdcf\u003e] autoremove_wake_function+0x0/0x2e\n\t [\u003cffffffff88537be6\u003e] :autofs4:autofs4_expire_wait+0x41/0x6b\n\t [\u003cffffffff88535cfc\u003e] :autofs4:autofs4_revalidate+0x91/0x149\n\t [\u003cffffffff80036d96\u003e] __lookup_hash+0xa0/0x12f\n\t [\u003cffffffff80057a2f\u003e] lookup_create+0x46/0x80\n\t [\u003cffffffff800e6e31\u003e] sys_mkdirat+0x56/0xe4\n\nversus the automount daemon which wants to remove that dentry, but can\u0027t\nbecause the normal process is holding the i_mutex lock:\n\n\tautomount     D ffffffff8014e05a     0 32581      1              32561\n\tCall Trace:\n\t [\u003cffffffff80063c3f\u003e] __mutex_lock_slowpath+0x60/0x9b\n\t [\u003cffffffff8000ccf1\u003e] do_path_lookup+0x2ca/0x2f1\n\t [\u003cffffffff80063c89\u003e] .text.lock.mutex+0xf/0x14\n\t [\u003cffffffff800e6d55\u003e] do_rmdir+0x77/0xde\n\t [\u003cffffffff8005d229\u003e] tracesys+0x71/0xe0\n\t [\u003cffffffff8005d28d\u003e] tracesys+0xd5/0xe0\n\nwhich means that the system is deadlocked.\n\nThis patch allows autofs to hold up normal processes whilst the daemon goes\nahead and does things to the dentry tree behind the automouter point without\nrisking a deadlock as almost no locks are held in d_manage() and none in\nd_automount().\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nWas-Acked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "34286d6662308d82aed891852d04c7c3a2649b16",
      "tree": "c4b7311404d302e7cb94df7a4690298e1059910a",
      "parents": [
        "44a7d7a878c9cbb74f236ea755b25b6b2e26a9a9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:57 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: rcu-walk aware d_revalidate method\n\nRequire filesystems be aware of .d_revalidate being called in rcu-walk\nmode (nd-\u003eflags \u0026 LOOKUP_RCU). For now do a simple push down, returning\n-ECHILD from all implementations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff",
      "tree": "f02e7ee57e6060f0af1bcda281baf2972d2da72f",
      "parents": [
        "c28cc36469554dc55540f059fbdc7fa22a2c31fc"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:54 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache remove d_mounted\n\nRather than keep a d_mounted count in the dentry, set a dentry flag instead.\nThe flag can be cleared by checking the hash table to see if there are any\nmounts left, which is not time critical because it is performed at detach time.\n\nThe mounted state of a dentry is only used to speculatively take a look in the\nmount hash table if it is set -- before following the mount, vfsmount lock is\ntaken and mount re-checked without races.\n\nThis saves 4 bytes on 32-bit, nothing on 64-bit but it does provide a hole I\nmight use later (and some configs have larger than 32-bit spinlocks which might\nmake use of the hole).\n\nAutofs4 conversion and changelog by Ian Kent \u003craven@themaw.net\u003e:\nIn autofs4, when expring direct (or offset) mounts we need to ensure that we\nblock user path walks into the autofs mount, which is covered by another mount.\nTo do this we clear the mounted status so that follows stop before walking into\nthe mount and are essentially blocked until the expire is completed. The\nautomount daemon still finds the correct dentry for the umount due to the\nfollow mount logic in fs/autofs4/root.c:autofs4_follow_link(), which is set as\nan inode operation for direct and offset mounts only and is called following\nthe lookup that stopped at the covered mount.\n\nAt the end of the expire the covering mount probably has gone away so the\nmounted status need not be restored. But we need to check this and only restore\nthe mounted status if the expire failed.\n\nXXX: autofs may not work right if we have other mounts go over the top of it?\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b5c84bf6f6fa3a7dfdcb556023a62953574b60ee",
      "tree": "7a2c299a180713e21d5cb653cb933121adf53c31",
      "parents": [
        "949854d02455080d20cd3e1db28a3a18daf7599d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:38 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:23 2011 +1100"
      },
      "message": "fs: dcache remove dcache_lock\n\ndcache_lock no longer protects anything. remove it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "949854d02455080d20cd3e1db28a3a18daf7599d",
      "tree": "9b13a6f86c1d0b91e462a471e53b0e717036b18e",
      "parents": [
        "9abca36087288fe28de4749c71ca003d4b9e3ed0"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:37 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:22 2011 +1100"
      },
      "message": "fs: Use rename lock and RCU for multi-step operations\n\nThe remaining usages for dcache_lock is to allow atomic, multi-step read-side\noperations over the directory tree by excluding modifications to the tree.\nAlso, to walk in the leaf-\u003eroot direction in the tree where we don\u0027t have\na natural d_lock ordering.\n\nThis could be accomplished by taking every d_lock, but this would mean a\nhuge number of locks and actually gets very tricky.\n\nSolve this instead by using the rename seqlock for multi-step read-side\noperations, retry in case of a rename so we don\u0027t walk up the wrong parent.\nConcurrent dentry insertions are not serialised against.  Concurrent deletes\nare tricky when walking up the directory: our parent might have been deleted\nwhen dropping locks so also need to check and retry for that.\n\nWe can also use the rename lock in cases where livelock is a worry (and it\nis introduced in subsequent patch).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "2fd6b7f50797f2e993eea59e0a0b8c6399c811dc",
      "tree": "ce33b94b34844c09103836cf4cfa4364b742f217",
      "parents": [
        "da5029563a0a026c64821b09e8e7b4fd81d3fe1b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:34 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale subdirs\n\nProtect d_subdirs and d_child with d_lock, except in filesystems that aren\u0027t\nusing dcache_lock for these anyway (eg. using i_mutex).\n\nNote: if we change the locking rule in future so that -\u003ed_child protection is\nprovided only with -\u003ed_parent-\u003ed_lock, it may allow us to reduce some locking.\nBut it would be an exception to an otherwise regular locking scheme, so we\u0027d\nhave to see some good results. Probably not worthwhile.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "da5029563a0a026c64821b09e8e7b4fd81d3fe1b",
      "tree": "5d5618e0cb382390073377b1be7d0aa76879ac54",
      "parents": [
        "b7ab39f631f505edc2bbdb86620d5493f995c9da"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:33 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale d_unhashed\n\nProtect d_unhashed(dentry) condition with d_lock. This means keeping\nDCACHE_UNHASHED bit in synch with hash manipulations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b7ab39f631f505edc2bbdb86620d5493f995c9da",
      "tree": "62be97ebc7fc69ceb601f23312d335ebb8038ee7",
      "parents": [
        "2304450783dfde7b0b94ae234edd0dbffa865073"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:32 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale dentry refcount\n\nMake d_count non-atomic and protect it with d_lock. This allows us to ensure a\n0 refcount dentry remains 0 without dcache_lock. It is also fairly natural when\nwe start protecting many other dentry members with d_lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "de47de7404e29df8de82f5822b4fde1a6ed97b54",
      "tree": "aac835759ef7bf8317847f467c0c0685827da38e",
      "parents": [
        "cf7d7e5a1980d1116ee152d25dac382b112b9c17"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Dec 07 13:04:00 2010 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 07 07:45:44 2010 -0800"
      },
      "message": "autofs4 - remove ioctl mutex (bz23142)\n\nWith the recent changes to remove the BKL a mutex was added to the\nioctl entry point for calls to the old ioctl interface. This mutex\nneeds to be removed because of the need for the expire ioctl to call\nback to the daemon to perform a umount and receive a completion\nstatus (via another ioctl).\n\nThis should be fine as the new ioctl interface uses much of the same\ncode and it has been used without a mutex for around a year without\nissue, as was the original intention.\n\nRef: Bugzilla bug 23142\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c26ff6e499ee7e6f9f2bc7da5f2f30d80862ecf",
      "tree": "bd758d7f15f24aed225a64de77cc535785c50f96",
      "parents": [
        "fc14f2fef682df677d64a145256dbd263df2aa7b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 25 11:46:36 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:16:31 2010 -0400"
      },
      "message": "convert get_sb_nodev() users\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "85fe4025c616a7c0ed07bc2fc8c5371b07f3888c",
      "tree": "7a5db7accb6192f2911f2473b4e3191227b914cc",
      "parents": [
        "f991bd2e14210fb93d722cb23e54991de20e8a3d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Oct 23 11:19:54 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "fs: do not assign default i_ino in new_inode\n\nInstead of always assigning an increasing inode number in new_inode\nmove the call to assign it into those callers that actually need it.\nFor now callers that need it is estimated conservatively, that is\nthe call is added to all filesystems that do not assign an i_ino\nby themselves.  For a few more filesystems we can avoid assigning\nany inode number given that they aren\u0027t user visible, and for others\nit could be done lazily when an inode number is actually needed,\nbut that\u0027s left for later patches.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "5a44a73b9015e89cfb280ba0534dfcbf1ef29d05",
      "tree": "ab735f09b52700de4e61c46d4199c6c17b64cab3",
      "parents": [
        "26daad8067f976a6e3622b42b0d80de9a53e8ad9"
      ],
      "author": {
        "name": "Felipe Contreras",
        "email": "felipe.contreras@gmail.com",
        "time": "Fri Sep 24 15:22:23 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Oct 05 11:02:15 2010 +0200"
      },
      "message": "autofs4: Only declare function when CONFIG_COMPAT is defined\n\nThe patch solves the following warnings message when CONFIG_COMPAT\nis not defined:\n\nfs/autofs4/root.c:31: warning: ‘autofs4_root_compat_ioctl’ declared ‘static’ but never defined\n\nSigned-off-by: Felipe Contreras \u003cfelipe.contreras@gmail.com\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "00e300e1b682ea86fcb5216250722afd42686ab3",
      "tree": "ac3c5a6034aa669993487163eef4f757d2f803af",
      "parents": [
        "4f819a7899b06afcd7623ab9d00fd81503ad3e24"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Sep 14 23:00:34 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Oct 04 21:10:46 2010 +0200"
      },
      "message": "BKL: Remove BKL from autofs4\n\nautofs4 uses the BKL only to guard its ioctl operations.\nThis can be trivially converted to use a mutex, as we have\ndone with most device drivers before.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\n"
    },
    {
      "commit": "5fc79d85d2ab7ce144bc75e06cab58126249afbb",
      "tree": "f6c4ca70e3905cbec541d925f4199c020fa61d8b",
      "parents": [
        "89596f20bb5f0f32c37abd337d995080e04519c8"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Tue Aug 10 18:02:04 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:06 2010 -0700"
      },
      "message": "autofs4: remove unneeded null check in try_to_fill_dentry()\n\nAfter 97e7449a7ad: \"autofs4: fix indirect mount pending expire race\" we no\nlonger assumed that \"ino\" can be null.  The other null checks got removed\nbut this was one was missed.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nCc: Al Viro \u003cviro@zeniv.linux.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": "c9243f5bdd6637b2bb7dc254b54d9edf957ef17e",
      "tree": "254c0733f9d547651f467ed6502c7335804eaaf8",
      "parents": [
        "86a5ef7d777cdd61dfe82379d559dbea069aea3d"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Jul 04 00:15:07 2010 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Aug 09 00:13:34 2010 +0200"
      },
      "message": "autofs/autofs4: Move compat_ioctl handling into fs\n\nHandling of autofs ioctl numbers does not need to be generic\nand can easily be done directly in autofs itself.\n\nThis also pushes the BKL into autofs and autofs4 ioctl\nmethods.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nCc: Autofs \u003cautofs@linux.kernel.org\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "7ca5ca60cba37fc4d8e99583da147faed3039ad0",
      "tree": "c68aaea107be75e0c48ed330716bcfc3f61f87a7",
      "parents": [
        "b81d67a50c0f3021d170466388bec3e7fc3abe75"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Wed May 26 14:42:13 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:41 2010 -0700"
      },
      "message": "fs/autofs4: use memdup_user\n\nUse memdup_user when user data is immediately copied into the allocated\nregion.  Elimination of the variable ads, which is no longer useful.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression from,to,size,flag;\nposition p;\nidentifier l1,l2;\n@@\n\n-  to \u003d \\(kmalloc@p\\|kzalloc@p\\)(size,flag);\n+  to \u003d memdup_user(from,size);\n   if (\n-      to\u003d\u003dNULL\n+      IS_ERR(to)\n                 || ...) {\n   \u003c+... when !\u003d goto l1;\n-  -ENOMEM\n+  PTR_ERR(to)\n   ...+\u003e\n   }\n-  if (copy_from_user(to, from, size) !\u003d 0) {\n-    \u003c+... when !\u003d goto l2;\n-    -EFAULT\n-    ...+\u003e\n-  }\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "578454ff7eab61d13a26b568f99a89a2c9edc881",
      "tree": "6abdaf9acdd797767c92cb53e04574d3c755779e",
      "parents": [
        "ec96e2fe954c23a54bfdf2673437a39e193a1822"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Thu May 20 18:07:20 2010 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue May 25 15:08:26 2010 -0700"
      },
      "message": "driver core: add devname module aliases to allow module on-demand auto-loading\n\nThis adds:\n  alias: devname:\u003cname\u003e\nto some common kernel modules, which will allow the on-demand loading\nof the kernel module when the device node is accessed.\n\nIdeally all these modules would be compiled-in, but distros seems too\nmuch in love with their modularization that we need to cover the common\ncases with this new facility. It will allow us to remove a bunch of pretty\nuseless init scripts and modprobes from init scripts.\n\nThe static device node aliases will be carried in the module itself. The\nprogram depmod will extract this information to a file in the module directory:\n  $ cat /lib/modules/2.6.34-00650-g537b60d-dirty/modules.devname\n  # Device nodes to trigger on-demand module loading.\n  microcode cpu/microcode c10:184\n  fuse fuse c10:229\n  ppp_generic ppp c108:0\n  tun net/tun c10:200\n  dm_mod mapper/control c10:235\n\nUdev will pick up the depmod created file on startup and create all the\nstatic device nodes which the kernel modules specify, so that these modules\nget automatically loaded when the device node is accessed:\n  $ /sbin/udevd --debug\n  ...\n  static_dev_create_from_modules: mknod \u0027/dev/cpu/microcode\u0027 c10:184\n  static_dev_create_from_modules: mknod \u0027/dev/fuse\u0027 c10:229\n  static_dev_create_from_modules: mknod \u0027/dev/ppp\u0027 c108:0\n  static_dev_create_from_modules: mknod \u0027/dev/net/tun\u0027 c10:200\n  static_dev_create_from_modules: mknod \u0027/dev/mapper/control\u0027 c10:235\n  udev_rules_apply_static_dev_perms: chmod \u0027/dev/net/tun\u0027 0666\n  udev_rules_apply_static_dev_perms: chmod \u0027/dev/fuse\u0027 0666\n\nA few device nodes are switched to statically allocated numbers, to allow\nthe static nodes to work. This might also useful for systems which still run\na plain static /dev, which is completely unsafe to use with any dynamic minor\nnumbers.\n\nNote:\nThe devname aliases must be limited to the *common* and *single*instance*\ndevice nodes, like the misc devices, and never be used for conceptually limited\nsystems like the loop devices, which should rather get fixed properly and get a\ncontrol node for losetup to talk to, instead of creating a random number of\ndevice nodes in advance, regardless if they are ever used.\n\nThis facility is to hide the mess distros are creating with too modualized\nkernels, and just to hide that these modules are not compiled-in, and not to\npaper-over broken concepts. Thanks! :)\n\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Tigran Aivazian \u003ctigran@aivazian.fsnet.co.uk\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nSigned-Off-By: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "3663df70c028bc435d6f2ec532a4849db62d1656",
      "tree": "5ae705c680ac791d0caf1cc0c20ed02ae920b4de",
      "parents": [
        "d6c89d9aca0933d90ab926bf448b32f24a163792"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed May 19 15:08:17 2010 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat May 22 17:44:18 2010 +0200"
      },
      "message": "autofs4: Pushdown the bkl from ioctl\n\nPushdown the bkl to autofs4_root_ioctl.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nCc: Autofs \u003cautofs@linux.kernel.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "f7422464b57088071201cd94027662d8469f153b",
      "tree": "d6eea687462815fbcbe43aa6b273f672babd5f2e",
      "parents": [
        "b77b907fae863f3bc546a336a8bc5e660d371788"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Mon May 10 16:46:08 2010 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 10 09:48:10 2010 -0700"
      },
      "message": "autofs4-2.6.34-rc1 - fix link_count usage\n\nAfter commit 1f36f774b2 (\"Switch !O_CREAT case to use of do_last()\") in\n2.6.34-rc1 autofs direct mounts stopped working.  This is caused by\ncurrent-\u003elink_count being 0 when -\u003efollow_link() is called from\ndo_filp_open().\n\nI can\u0027t work out why this hasn\u0027t been seen before Als patch series.\n\nThis patch removes the autofs dependence on current-\u003elink_count.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "5b7e934d887c67fe093b61f1308bc2d9c49381ff",
      "tree": "6498bae20c1e90cdee8d4d3bbef6658868843ad1",
      "parents": [
        "3899167dbd6832a3d8d7171b425257ad46b6c40c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 24 00:28:52 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 14:07:54 2010 -0500"
      },
      "message": "Use kill_litter_super() in autofs4 -\u003ekill_sb()\n\n... and get rid of open-coding its guts (i.e. RIP autofs4_force_release())\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f598f9f1252b33410ffc52f51e117645ac5116c4",
      "tree": "78191ec2ccdf725c5fa8a8f23828c4761abe84ed",
      "parents": [
        "b1e4594ba097634e9436cc4c6ba95f70a2d627ff"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 23 20:08:53 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 14:07:53 2010 -0500"
      },
      "message": "Sanitize autofs_dev_ioctl_ismountpoint()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4b1ae27a96d9860e6c4348673e8fb6a0322511fe",
      "tree": "d9d195bfef3e8e746ef68adb4364516633d27313",
      "parents": [
        "60b341b778cc2929df16c0a504c91621b3c6a4ad"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 12:58:31 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 12:58:31 2010 -0500"
      },
      "message": "Revert \"autofs4: always use lookup for lookup\"\n\nThis reverts commit 213614d583748d00967a91cacd656f417efb36ce.\n\nAlas, -\u003ed_revalidate() can\u0027t rely on -\u003elookup() finishing what\nit\u0027s started; if d_alloc() in do_lookup() fails, we are not going\nto call -\u003elookup() at all.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "213614d583748d00967a91cacd656f417efb36ce",
      "tree": "f24b85cb8192af7f6723f3886fba3da55ccfbe0d",
      "parents": [
        "cb4b492ac7595aad10756fe0b04691f0965e0cfc"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Dec 15 16:45:51 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:58 2009 -0800"
      },
      "message": "autofs4: always use lookup for lookup\n\nWe need to be able to cope with the directory mutex being held during\n-\u003ed_revalidate() in some cases, but not all cases, and not necessarily by\nus.  Because we need to release the mutex when we call back to the daemon\nto do perform a mount we must be sure that it is us who holds the mutex so\nwe must redirect mount requests to -\u003elookup() if the mutex is held.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Yehuda Saheh \u003cyehuda@newdream.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cb4b492ac7595aad10756fe0b04691f0965e0cfc",
      "tree": "e0737776e152e83c9d449086b631a975f165bcc7",
      "parents": [
        "e4d5ade7b54cf74efcf53ff3dcb09454c29d70cf"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Dec 15 16:45:50 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:58 2009 -0800"
      },
      "message": "autofs4: rename dentry to expiring in autofs4_lookup_expiring()\n\nIn autofs4_lookup_expiring() a declaration within the list traversal loop\nuses a declaration that has the same name as the function parameter.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Yehuda Saheh \u003cyehuda@newdream.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e4d5ade7b54cf74efcf53ff3dcb09454c29d70cf",
      "tree": "8ba8009ed1b3bb67cf4429de4930b639c4f3ab86",
      "parents": [
        "c42c7f7e698fa888abbd50eb9c8e328fff68914f"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Dec 15 16:45:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:58 2009 -0800"
      },
      "message": "autofs4: rename dentry to active in autofs4_lookup_active()\n\nIn autofs4_lookup_active() a declaration within the list traversal loop\nuses a declaration that has the same name as the function parameter.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Yehuda Saheh \u003cyehuda@newdream.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c42c7f7e698fa888abbd50eb9c8e328fff68914f",
      "tree": "cdcc21d21cdf2f695cba0298db75c609060e87e6",
      "parents": [
        "6510c9d8595adcee2b0dc86408bc432a8dd7d652"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Dec 15 16:45:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:58 2009 -0800"
      },
      "message": "autofs4: eliminate d_unhashed in path walk checks\n\nWe unhash the dentry (in a subsequent patch) in -\u003ed_revalidate() in order\nto send mount requests to -\u003elookup().  But then we can not rely on\nd_unhased() to give reliable results because it may be called at any time\nby any code path.  The d_unhashed() function is used by __simple_empty()\nin the path walking callbacks but autofs mount point dentrys should have\nno directories at all so a list_empty() on d_subdirs should be (and is)\nsufficient.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Yehuda Saheh \u003cyehuda@newdream.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6510c9d8595adcee2b0dc86408bc432a8dd7d652",
      "tree": "a0c9540de9004686633c2eb339d32ef24907fc2f",
      "parents": [
        "90387c9c1d5787aeb7dfdfc90c8f8aeaeed7ad0e"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Dec 15 16:45:47 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:58 2009 -0800"
      },
      "message": "autofs4: cleanup active and expire lookup\n\nThe lookup functions for active and expiring dentrys use parameters that\ncan be easily obtained on entry so we change the call to to take just the\ndentry.  This makes the subsequent change, to send all lookups to\n-\u003elookup(), a bit cleaner.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Yehuda Saheh \u003cyehuda@newdream.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90387c9c1d5787aeb7dfdfc90c8f8aeaeed7ad0e",
      "tree": "79733f21cccb7ddb958d8638ebf199611660a9f1",
      "parents": [
        "aa952eb26d4344fdad44c104f3c298d3130c53da"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Dec 15 16:45:46 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:58 2009 -0800"
      },
      "message": "autofs4: renamer unhashed to active in autofs4_lookup()\n\nRename the variable unhashed to active in autofs4_lookup() to better\nreflect its usage.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Yehuda Saheh \u003cyehuda@newdream.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aa952eb26d4344fdad44c104f3c298d3130c53da",
      "tree": "4a49859b272d8d42ae7fa68c5d30f6aa2fd82742",
      "parents": [
        "36b6413ef301d30f60037e497ecb902897895473"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Dec 15 16:45:45 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:58 2009 -0800"
      },
      "message": "autofs4: use autofs_info for pending flag\n\nEliminate the use of the d_lock spin lock by using the autofs super block\ninfo spin lock.  This reduces the number of spin locks we use by one and\nmakes the code for the following patch (to redirect -\u003ed_revalidate() to\n-\u003elookup()) a little simpler.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Yehuda Saheh \u003cyehuda@newdream.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "36b6413ef301d30f60037e497ecb902897895473",
      "tree": "6f1e4ce514d691b02d2506fed5780e5b4dc0f6b1",
      "parents": [
        "c4cd70b3e3e95cc2201a00edf6deb52327d73c6b"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Dec 15 16:45:44 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:57 2009 -0800"
      },
      "message": "autofs4: use helper function for need mount check\n\nDefine simple helper function for checking if we need to trigger a mount.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Yehuda Saheh \u003cyehuda@newdream.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c4cd70b3e3e95cc2201a00edf6deb52327d73c6b",
      "tree": "20150b87f5fdc0915db45937f727fd9e1aee0c74",
      "parents": [
        "4f8427d1903148f9753eb35c5f51a8a865457329"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Dec 15 16:45:43 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:57 2009 -0800"
      },
      "message": "autofs4: use helper functions for expiring list\n\nDefine some simple helper functions for adding and deleting entries on the\nexpiring dentry list.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Yehuda Saheh \u003cyehuda@newdream.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f8427d1903148f9753eb35c5f51a8a865457329",
      "tree": "8d40dc21c988f53dd154b61eb1ed66914bedf7a3",
      "parents": [
        "9ea9a886b0e8630e12cff515955e7f0f5be32cb1"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Dec 15 16:45:42 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:57 2009 -0800"
      },
      "message": "autofs4: use helper functions for active list handling\n\nDefine some simple helper functions for adding and deleting entries on the\nactive (and unhashed) dentry list.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Yehuda Saheh \u003cyehuda@newdream.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "37d0892c5a94e208cf863e3b7bac014edee4346d",
      "tree": "642ecefb31c58451dc70964963b05412c269e831",
      "parents": [
        "cda9856f1ca62484433b9f734cd0fd553a5e4850"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Sep 01 11:26:22 2009 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 31 17:44:05 2009 -1000"
      },
      "message": "autofs4 - fix missed case when changing to use struct path\n\nIn the recent change by Al Viro that changes verious subsystems\nto use \"struct path\" one case was missed in the autofs4 module\nwhich causes mounts to no longer expire.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9393bd07cf218ca51d0e627653f906a9d76a9131",
      "tree": "402205fe6336028df48cd65b31da0482f0b0bb41",
      "parents": [
        "589ff870ed60a9ebdd5ec99ec3f5afe1282fe151"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 18 13:58:15 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:01 2009 -0400"
      },
      "message": "switch follow_down()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bab77ebf51e3902f608ecf08c9d34a0a52ac35a9",
      "tree": "710a8bba0a4f3738b32e4e5230ccf3665cd1b815",
      "parents": [
        "e64c390ca0b60fd2119331ef1fa888d7ea27e424"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 18 03:26:48 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:00 2009 -0400"
      },
      "message": "switch follow_up() to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4e44b6852e03c915618ca6776b6697b436246b00",
      "tree": "264db0cf8dde04a604740508dbe5f5b929605467",
      "parents": [
        "73422811d290c628b4ddbf6830e5cd6fa42e84f1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Apr 07 11:08:56 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:35:58 2009 -0400"
      },
      "message": "Get rid of path_lookup in autofs4\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "463aea1a1c49f1a7d4b50656dfd6c8bb33358b1b",
      "tree": "9eb2a2b926f239ea703343e26fbda5dde8663998",
      "parents": [
        "586c7e6a280580fd94b662bf486f9bb31098d14b"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Jun 09 16:26:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 09 16:59:03 2009 -0700"
      },
      "message": "autofs4: remove hashed check in validate_wait()\n\nThe recent -\u003elookup() deadlock correction required the directory inode\nmutex to be dropped while waiting for expire completion.  We were\nconcerned about side effects from this change and one has been identified.\n\nI saw several error messages.\n\nThey cause autofs to become quite confused and don\u0027t really point to the\nactual problem.\n\nThings like:\n\nhandle_packet_missing_direct:1376: can\u0027t find map entry for (43,1827932)\n\nwhich is usually totally fatal (although in this case it wouldn\u0027t be\nexcept that I treat is as such because it normally is).\n\ndo_mount_direct: direct trigger not valid or already mounted\n/test/nested/g3c/s1/ss1\n\nwhich is recoverable, however if this problem is at play it can cause\nautofs to become quite confused as to the dependencies in the mount tree\nbecause mount triggers end up mounted multiple times.  It\u0027s hard to\naccurately check for this over mounting case and automount shouldn\u0027t need\nto if the kernel module is doing its job.\n\nThere was one other message, similar in consequence of this last one but I\ncan\u0027t locate a log example just now.\n\nWhen checking if a mount has already completed prior to adding a new mount\nrequest to the wait queue we check if the dentry is hashed and, if so, if\nit is a mount point.  But, if a mount successfully completed while we\nslept on the wait queue mutex the dentry must exist for the mount to have\ncompleted so the test is not really needed.\n\nMounts can also be done on top of a global root dentry, so for the above\ncase, where a mount request completes and the wait queue entry has already\nbeen removed, the hashed test returning false can cause an incorrect\ncallback to the daemon.  Also, d_mountpoint() is not sufficient to check\nif a mount has completed for the multi-mount case when we don\u0027t have a\nreal mount at the base of the tree.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a8985f3ac503b51c5abf8883fc4fb912e13b955c",
      "tree": "db5e81738c8dcfe62e3bf2132c35246b7d88429d",
      "parents": [
        "bc43f75cd9815833b27831600ccade672edb5e43"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Thu Apr 30 15:08:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 02 15:36:09 2009 -0700"
      },
      "message": "autofs4: fix incorrect return in autofs4_mount_busy()\n\nFix an obvious incorrect return status in autofs4_mount_busy().\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3eac8778a237d83a1e553eba0c6f4fd4b39eeec0",
      "tree": "0a546e57929310f0968d5e9b43afec08b86aeed5",
      "parents": [
        "66672fefaa91802fec51c3fe0cc55bc9baea5a2d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Apr 07 11:12:46 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 20 23:02:50 2009 -0400"
      },
      "message": "autofs4: use memchr() in invalid_string()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cf2706a340ae98616d4e2a54900393e0e0b6b72c",
      "tree": "85a925228256ccdc1eb4453fefa3e09215dccee0",
      "parents": [
        "a939b96cccdb65df80a52447ec8e4a6d79c56dbb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Apr 07 09:03:30 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 20 23:01:15 2009 -0400"
      },
      "message": "Fix AUTOFS_DEV_IOCTL_REQUESTER_CMD\n\nMissing conversion from kernel to userland dev_t; this sucker\nbreaks as soon as we get sufficiently many autofs mounts for\nnew_encode_dev(s_dev) !\u003d s_dev.\n\nNote: this is the minimal fix.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8f63aaa8b9239475fc580d4450f1141496655305",
      "tree": "eca8552ab842a7a2eecea104e5842f7bccadf09b",
      "parents": [
        "56fcef75117a153f298b3fe54af31053f53997dd"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Mar 31 15:24:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "autofs4: fix lookup deadlock\n\nA deadlock can occur when user space uses a signal (autofs version 4 uses\nSIGCHLD for this) to effect expire completion.\n\nThe order of events is:\n\nExpire process completes, but before being able to send SIGCHLD to it\u0027s parent\n...\n\nAnother process walks onto a different mount point and drops the directory\ninode semaphore prior to sending the request to the daemon as it must ...\n\nA third process does an lstat on on the expired mount point causing it to wait\non expire completion (unfortunately) holding the directory semaphore.\n\nThe mount request then arrives at the daemon which does an lstat and,\ndeadlock.\n\nFor some time I was concerned about releasing the directory semaphore around\nthe expire wait in autofs4_lookup as well as for the mount call back.  I\nfinally realized that the last round of changes in this function made the\nexpiring dentry and the lookup dentry separate and distinct so the check and\npossible wait can be done anywhere prior to the mount call back.  This patch\nmoves the check to just before the mount call back and inside the directory\ninode mutex release.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56fcef75117a153f298b3fe54af31053f53997dd",
      "tree": "56b7a86c811e5f83c232b0f21c5fcf894795fd42",
      "parents": [
        "00fcf2cb6f6bb421851c3ba062c0a36760ea6e53"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Mar 31 15:24:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "autofs4: cleanup expire code duplication\n\nA significant portion of the autofs_dev_ioctl_expire() and\nautofs4_expire_multi() functions is duplicated code.  This patch cleans that\nup.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Jeff Moyer \u003cjmoyer@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": "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": "90ffd467933eaf581e11fec51e7ba16fc9bd542d",
      "tree": "5519ce1e81b5e22e480199a453baac07975c9c79",
      "parents": [
        "335debee07f2d4187a6073d7764ed56bb2ae52f4"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Jan 22 10:31:56 2009 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Jan 22 13:15:54 2009 +0300"
      },
      "message": "fs/Kconfig: move autofs, autofs4 out\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    }
  ],
  "next": "bae8ec66554b27967f057a4b7888b09481ff1b8b"
}
