)]}'
{
  "log": [
    {
      "commit": "5a9a43646cf709312d71eca71cef90ad802f28f9",
      "tree": "9083e5e4e5bb2e8ad3f3f039503e37629acb5ddc",
      "parents": [
        "d769b3c2ab7184ddd42056595b627cc871caa90e"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Sun Jul 17 15:35:12 2011 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jul 22 19:42:13 2011 -0400"
      },
      "message": "vfs: use ERR_CAST for err-ptr tossing in lookup_instantiate_filp\n\nReplace unclear (struct dentry *) to (struct file *) typecast with ERR_CAST() macro.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d769b3c2ab7184ddd42056595b627cc871caa90e",
      "tree": "b030270648c2a2aca7c5417e2ae0436ec7d0a31c",
      "parents": [
        "22ba747f660c0acd14761628c24aa972d18058a0"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Jul 21 22:22:25 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jul 22 19:42:12 2011 -0400"
      },
      "message": "isofs: Remove global fs lock\n\nsbi-\u003es_mutex isn\u0027t needed for isofs at all so we can just remove it. Generally,\nsince isofs is always mounted read-only, filesystem structure cannot change\nunder us.  So buffer_head contents stays constant after it\u0027s filled in. That\nleaves us with possible changes of global data structures. Superblock changes\nonly during filesystem mount (even remount does not change it), inodes are only\nfilled in during reading from disk. So there are no changes of these structures\nto bother about.\n\nArguments why sbi-\u003es_mutex can be removed at each place:\nisofs_readdir: Accesses sb, inode, filp, local variables \u003d\u003e s_mutex not needed\nisofs_lookup: Protected by directory\u0027s i_mutex. Accesses sb, inode, dentry,\n  local variables \u003d\u003e s_mutex not needed\nrock_ridge_symlink_readpage: Protected by page lock. Accesses sb, inode,\n  local variables \u003d\u003e s_mutex not needed.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "22ba747f660c0acd14761628c24aa972d18058a0",
      "tree": "8a96b344623ba66c3138bd4d6cc916f5ad3d3053",
      "parents": [
        "841590ce16c19a3ce38028adfc8b1955482ee00c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 21 15:57:47 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jul 22 19:42:11 2011 -0400"
      },
      "message": "jffs2: fix IN_DELETE_SELF on overwriting rename() killing a directory\n\nWe don\u0027t generate IN_DELETE_SELF on victim of overwriting rename() if\nit happens to be a directory.  Trivially fixed by doing to -\u003ei_nlink\nwhat we do -\u003epino_nlink a couple of lines later in jffs2_rename().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "841590ce16c19a3ce38028adfc8b1955482ee00c",
      "tree": "83f20931de0103f1b3b60f6ba4b8aa8490c08084",
      "parents": [
        "ed70afcd6e795e3de98df56f1cd0f898fbf641a7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 21 15:49:09 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jul 22 19:42:11 2011 -0400"
      },
      "message": "fix IN_DELETE_SELF on overwriting rename() on ramfs et.al.\n\nOn ramfs and other simple_rename() users IN_DELETE_SELF is not generated\nfor victim of overwriting rename() if it\u0027s is a directory.  Works on\nmost of the local filesystems and really trivial to fix...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ed70afcd6e795e3de98df56f1cd0f898fbf641a7",
      "tree": "7d81e3e3e6b30fe8025d45aa6b81ea553095e701",
      "parents": [
        "295cc522c2b2834b302424e41ebb5846df6d61bd"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Thu Jul 21 13:55:37 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jul 22 19:41:19 2011 -0400"
      },
      "message": "mm/truncate.c: fix build for CONFIG_BLOCK not enabled\n\nFix build error when CONFIG_BLOCK is not enabled by providing a stub\ninode_dio_wait() function.\n\nmm/truncate.c:612: error: implicit declaration of function \u0027inode_dio_wait\u0027\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "295cc522c2b2834b302424e41ebb5846df6d61bd",
      "tree": "b96c1f81f5f10695dc24ea54ec5bc12a94c844be",
      "parents": [
        "86c98e8cdb21ff4628f4d48559ab6e006380fa4b"
      ],
      "author": {
        "name": "Wanlong Gao",
        "email": "gaowanlong@cn.fujitsu.com",
        "time": "Tue Jul 19 09:48:39 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:05 2011 -0400"
      },
      "message": "fs:update the NOTE of the file_operations structure\n\nBig kernel lock had been removed and setlease now use the lock_flocks()\nto hold a special spin lock file_lock_lock by Matthew.\nSo just remove the out-of-date NOTE.\n\nSigned-off-by: Wanlong Gao \u003cgaowanlong@cn.fujitsu.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "86c98e8cdb21ff4628f4d48559ab6e006380fa4b",
      "tree": "fb4038d37fc073c7b858c0a15f20cc7c627ac9a7",
      "parents": [
        "e4b9f0058145a3bed4199eacee62a9969c163401"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 18 23:39:07 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:04 2011 -0400"
      },
      "message": "Remove dead code in dget_parent()\n\n-\u003ed_parent is never NULL...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e4b9f0058145a3bed4199eacee62a9969c163401",
      "tree": "883c7967a9d229e9e854ac8d689c39a277b2535a",
      "parents": [
        "4513d899c418ff69052420e29e354e4c64b3ef76"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Jul 18 13:50:00 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:03 2011 -0400"
      },
      "message": "AFS: Fix silly characters in a comment\n\nFix silly characters in a comment in AFS code (some weird characters replaced\nthe word \u0027flag\u0027 some point way back).\n\nReported-by: viro@ZenIV.linux.org.uk\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4513d899c418ff69052420e29e354e4c64b3ef76",
      "tree": "ffe11084d28c4a3d7b4eaa745748539c2eff2fb4",
      "parents": [
        "6c673ab393bc18e8bff729cd04cf384d15e72a04"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 10:52:14 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:02 2011 -0400"
      },
      "message": "switch d_add_ci() to d_splice_alias() in \"found negative\" case as well\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6c673ab393bc18e8bff729cd04cf384d15e72a04",
      "tree": "e1eed0667626c8b092d27500560808d834d21e8d",
      "parents": [
        "79ac5a46c5c1c17476fbf84b4d4600d6d565defd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 10:22:27 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:02 2011 -0400"
      },
      "message": "simplify gfs2_lookup()\n\nd_splice_alias() will DTRT when given NULL or ERR_PTR\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "79ac5a46c5c1c17476fbf84b4d4600d6d565defd",
      "tree": "a7a30f180ae723b2066ac32aa2be4a64d502f172",
      "parents": [
        "10d9f309d88ca7f47133d57e99b72810f119f75b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 10:17:46 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:01 2011 -0400"
      },
      "message": "jfs_lookup(): don\u0027t bother with . or ..\n\nthey\u0027ll never be passed to -\u003elookup()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "10d9f309d88ca7f47133d57e99b72810f119f75b",
      "tree": "9fb29dbfce5e040b2232bca2378e8de13fc13c31",
      "parents": [
        "2fbe8c8ad176db69dfc682b4abb721c8fc19c3fd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 16 23:09:10 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:00 2011 -0400"
      },
      "message": "get rid of useless dget_parent() in btrfs rename() and link()\n\n-\u003ed_parent is locked and stable there...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2fbe8c8ad176db69dfc682b4abb721c8fc19c3fd",
      "tree": "f473a370543927ec2ebf1a462d165fc08c1515d3",
      "parents": [
        "02c24a82187d5a628c68edfe71ae60dc135cd178"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 16 21:38:06 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:00 2011 -0400"
      },
      "message": "get rid of useless dget_parent() in fs/btrfs/ioctl.c\n\nboth callers there have dentry-\u003ed_parent stabilized by the fact that\ntheir caller had obtained dentry from lookup_one_len() and had not\ndropped -\u003ei_mutex on parent since then.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "02c24a82187d5a628c68edfe71ae60dc135cd178",
      "tree": "c8dbaba4d82e2b20ed4335910a564a1f7d90fcf6",
      "parents": [
        "22735068d53c7115e384bc88dea95b17e76a6839"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Jul 16 20:44:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:59 2011 -0400"
      },
      "message": "fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n\nBtrfs needs to be able to control how filemap_write_and_wait_range() is called\nin fsync to make it less of a painful operation, so push down taking i_mutex and\nthe calling of filemap_write_and_wait() down into the -\u003efsync() handlers.  Some\nfile systems can drop taking the i_mutex altogether it seems, like ext3 and\nocfs2.  For correctness sake I just pushed everything down in all cases to make\nsure that we keep the current behavior the same for everybody, and then each\nindividual fs maintainer can make up their mind about what to do from there.\nThanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "22735068d53c7115e384bc88dea95b17e76a6839",
      "tree": "c531b0ca2ccf472c8abfede626535fcf07357624",
      "parents": [
        "06222e491e663dac939f04b125c9dc52126a75c4"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 18 13:21:39 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:58 2011 -0400"
      },
      "message": "drivers: fix up various -\u003ellseek() implementations\n\nFix up a few -\u003ellseek() implementations that won\u0027t deal with SEEK_HOLE/SEEK_DATA\nproperly.  Make them future proof so that if we ever add new options they will\nreturn -EINVAL.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "06222e491e663dac939f04b125c9dc52126a75c4",
      "tree": "99636fd666c8148a5bf58ea4844263d4b3a36310",
      "parents": [
        "c334b1138bd44bea578eab7971c59bd9212a1093"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 18 13:21:38 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:58 2011 -0400"
      },
      "message": "fs: handle SEEK_HOLE/SEEK_DATA properly in all fs\u0027s that define their own llseek\n\nThis converts everybody to handle SEEK_HOLE/SEEK_DATA properly.  In some cases\nwe just return -EINVAL, in others we do the normal generic thing, and in others\nwe\u0027re simply making sure that the properly due-dilligence is done.  For example\nin NFS/CIFS we need to make sure the file size is update properly for the\nSEEK_HOLE and SEEK_DATA case, but since it calls the generic llseek stuff itself\nthat is all we have to do.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c334b1138bd44bea578eab7971c59bd9212a1093",
      "tree": "a91a04ce72a4f12bdb6c8ca26400a466dcce5120",
      "parents": [
        "b26751575a9aa55fd6dbf3febde3ff06dfadc44f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 18 13:21:37 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:57 2011 -0400"
      },
      "message": "Ext4: handle SEEK_HOLE/SEEK_DATA generically\n\nSince Ext4 has its own lseek we need to make sure it handles\nSEEK_HOLE/SEEK_DATA.  For now just do the same thing that is done in the generic\ncase, somebody else can come along and make it do fancy things later.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b26751575a9aa55fd6dbf3febde3ff06dfadc44f",
      "tree": "78fc36a92757eafb90bbeae36495adb369fbf6d7",
      "parents": [
        "982d816581eeeacfe5b2b7c6d47d13a157616eff"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 18 13:21:36 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:56 2011 -0400"
      },
      "message": "Btrfs: implement our own -\u003ellseek\n\nIn order to handle SEEK_HOLE/SEEK_DATA we need to implement our own llseek.\nBasically for the normal SEEK_*\u0027s we will just defer to the generic helper, and\nfor SEEK_HOLE/SEEK_DATA we will use our fiemap helper to figure out the nearest\nhole or data.  Currently this helper doesn\u0027t check for delalloc bytes for\nprealloc space, so for now treat prealloc as data until that is fixed.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "982d816581eeeacfe5b2b7c6d47d13a157616eff",
      "tree": "1f1cb5725646e9de13969c8894b26ab3d5e3102e",
      "parents": [
        "b4d5b10fb2e3a4327838c07d8ebd9e350fcc133d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 18 13:21:35 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:56 2011 -0400"
      },
      "message": "fs: add SEEK_HOLE and SEEK_DATA flags\n\nThis just gets us ready to support the SEEK_HOLE and SEEK_DATA flags.  Turns out\nusing fiemap in things like cp cause more problems than it solves, so lets try\nand give userspace an interface that doesn\u0027t suck.  We need to match solaris\nhere, and the definitions are\n\n*o* If /whence/ is SEEK_HOLE, the offset of the start of the\nnext hole greater than or equal to the supplied offset\nis returned. The definition of a hole is provided near\nthe end of the DESCRIPTION.\n\n*o* If /whence/ is SEEK_DATA, the file pointer is set to the\nstart of the next non-hole file region greater than or\nequal to the supplied offset.\n\nSo in the generic case the entire file is data and there is a virtual hole at\nthe end.  That means we will just return i_size for SEEK_HOLE and will return\nthe same offset for SEEK_DATA.  This is how Solaris does it so we have to do it\nthe same way.\n\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b4d5b10fb2e3a4327838c07d8ebd9e350fcc133d",
      "tree": "e267e9e3fe8d56718ff43ef1fb50b24d8fea9f21",
      "parents": [
        "00eacd66cd8ab5fff9df49aa3f261ad43d495434"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sat Jul 16 16:47:00 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:55 2011 -0400"
      },
      "message": "reiserfs: make reiserfs default to barrier\u003dflush\n\nChange the default reiserfs mount option to barrier\u003dflush.  Based on a patch\nfrom Jeff Mahoney in the SuSE tree.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "00eacd66cd8ab5fff9df49aa3f261ad43d495434",
      "tree": "e561daf501504513463e32d6b32fe5f200f6cc22",
      "parents": [
        "b85fd6bdc99da917f5ae0f90f0c2d86ef9a766aa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sat Jul 16 16:46:50 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:54 2011 -0400"
      },
      "message": "ext3: make ext3 mount default to barrier\u003d1\n\nThis patch turns on barriers by default for ext3.  mount -o barrier\u003d0\nwill turn them off.  Based on a patch from Chris Mason in the SuSE tree.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nAcked-by: Ted Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b85fd6bdc99da917f5ae0f90f0c2d86ef9a766aa",
      "tree": "234aae960810ead4ad2811a31b0898afce7b46e1",
      "parents": [
        "2def9e4ec75e6771def66a07960dd516e119ab4c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 11:19:44 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:54 2011 -0400"
      },
      "message": "don\u0027t open-code parent_ino() in assorted -\u003ereaddir()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2def9e4ec75e6771def66a07960dd516e119ab4c",
      "tree": "2457590cc93e8144710a66a875b66e8eb9cdc700",
      "parents": [
        "ee60498f3ef94d7ed58dcd38077e27e839e7cafc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 16 17:43:09 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:53 2011 -0400"
      },
      "message": "minix_getattr(): don\u0027t bother with -\u003ed_parent\n\nwe can find superblock easier, TYVM...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ee60498f3ef94d7ed58dcd38077e27e839e7cafc",
      "tree": "4aabab155ca905c48177def2c7af63daf12506cb",
      "parents": [
        "c066b65abfe20b7a23ad3b1161cd67315f65f3c1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 16 17:06:30 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:52 2011 -0400"
      },
      "message": "coda_venus_readdir(): use offsetof()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c066b65abfe20b7a23ad3b1161cd67315f65f3c1",
      "tree": "79df0fee06603e497dafe1bc950c5c5e03c881da",
      "parents": [
        "12520c438f48113593130d210eba821a532c893b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 16 12:41:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:52 2011 -0400"
      },
      "message": "arm: don\u0027t create useless copies to pass into debugfs_create_dir()\n\nits first argument is const char * and it\u0027s really not modified...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "12520c438f48113593130d210eba821a532c893b",
      "tree": "006161e31976b8ec72097d97829e9bbeced68e9b",
      "parents": [
        "f15146380d28b746df3c8b81b392812eb982382a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 16 12:37:57 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:51 2011 -0400"
      },
      "message": "switch assorted clock drivers to debugfs_remove_recursive()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f15146380d28b746df3c8b81b392812eb982382a",
      "tree": "bf43b38b60c21bd01b007c9636062783d406eb29",
      "parents": [
        "72c5052ddc3956d847f21c2b8d55c93664a51b2c"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Tue Jul 12 20:48:39 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:50 2011 -0400"
      },
      "message": "fs: seq_file - add event counter to simplify poll() support\n\nMoving the event counter into the dynamically allocated \u0027struc seq_file\u0027\nallows poll() support without the need to allocate its own tracking\nstructure.\n\nAll current users are switched over to use the new counter.\n\nRequested-by: Andrew Morton akpm@linux-foundation.org\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nTested-by: Lucas De Marchi lucas.demarchi@profusion.mobi\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "72c5052ddc3956d847f21c2b8d55c93664a51b2c",
      "tree": "47b381f3f746cdc1612f432bd902278f8901f84a",
      "parents": [
        "aacfc19c626ebd3daa675652457d71019a1f583f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:48 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:50 2011 -0400"
      },
      "message": "fs: move inode_dio_done to the end_io handler\n\nFor filesystems that delay their end_io processing we should keep our\ni_dio_count until the the processing is done.  Enable this by moving\nthe inode_dio_done call to the end_io handler if one exist.  Note that\nthe actual move to the workqueue for ext4 and XFS is not done in\nthis patch yet, but left to the filesystem maintainers.  At least\nfor XFS it\u0027s not needed yet either as XFS has an internal equivalent\nto i_dio_count.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aacfc19c626ebd3daa675652457d71019a1f583f",
      "tree": "9c1cfb5945e939f1ba56b4c0101c211e84e544c0",
      "parents": [
        "df2d6f26586f12a24f3ae5df4e236dc5c08d6eb4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:47 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:49 2011 -0400"
      },
      "message": "fs: simplify the blockdev_direct_IO prototype\n\nSimple filesystems always pass inode-\u003ei_sb_bdev as the block device\nargument, and never need a end_io handler.  Let\u0027s simply things for\nthem and for my grepping activity by dropping these arguments.  The\nonly thing not falling into that scheme is ext4, which passes and\nend_io handler without needing special flags (yet), but given how\nmessy the direct I/O code there is use of __blockdev_direct_IO\nin one instead of two out of three cases isn\u0027t going to make a large\ndifference anyway.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "df2d6f26586f12a24f3ae5df4e236dc5c08d6eb4",
      "tree": "68c6ec96177f766d3b9ab0a48408271ef2af4d89",
      "parents": [
        "562c72aa57c36b178eacc3500a0215651eca9429"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:46 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:48 2011 -0400"
      },
      "message": "fs: always maintain i_dio_count\n\nMaintain i_dio_count for all filesystems, not just those using DIO_LOCKING.\nThis these filesystems to also protect truncate against direct I/O requests\nby using common code.  Right now the only non-DIO_LOCKING filesystem that\nappears to do so is XFS, which uses an opencoded variant of the i_dio_count\nscheme.\n\nBehaviour doesn\u0027t change for filesystems never calling inode_dio_wait.\nFor ext4 behaviour changes when using the dioread_nonlock option, which\npreviously was missing any protection between truncate and direct I/O reads.\nFor ocfs2 that handcrafted i_dio_count manipulations are replaced with\nthe common code now enable.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "562c72aa57c36b178eacc3500a0215651eca9429",
      "tree": "2c522c53ab26fc72e85e08747a08e3dca1207c87",
      "parents": [
        "11b80f459adaf91a712f95e7734a17655a36bf30"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:45 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:47 2011 -0400"
      },
      "message": "fs: move inode_dio_wait calls into -\u003esetattr\n\nLet filesystems handle waiting for direct I/O requests themselves instead\nof doing it beforehand.  This means filesystem-specific locks to prevent\nnew dio referenes from appearing can be held.  This is important to allow\ngeneralizing i_dio_count to non-DIO_LOCKING filesystems.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "11b80f459adaf91a712f95e7734a17655a36bf30",
      "tree": "b325ce2cb09cbe9e7d98879c71054621dbb97c3c",
      "parents": [
        "bd5fe6c5eb9c548d7f07fe8f89a150bb6705e8e3"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:44 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:47 2011 -0400"
      },
      "message": "rw_semaphore: remove up/down_read_non_owner\n\nNow that the last users is gone these can be removed.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bd5fe6c5eb9c548d7f07fe8f89a150bb6705e8e3",
      "tree": "ef5341c7747f809aec7ae233f6e3ef90af39be5f",
      "parents": [
        "f9b5570d7fdedff32a2e78102bfb54cd1b12b289"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:43 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:46 2011 -0400"
      },
      "message": "fs: kill i_alloc_sem\n\ni_alloc_sem is a rather special rw_semaphore.  It\u0027s the last one that may\nbe released by a non-owner, and it\u0027s write side is always mirrored by\nreal exclusion.  It\u0027s intended use it to wait for all pending direct I/O\nrequests to finish before starting a truncate.\n\nReplace it with a hand-grown construct:\n\n - exclusion for truncates is already guaranteed by i_mutex, so it can\n   simply fall way\n - the reader side is replaced by an i_dio_count member in struct inode\n   that counts the number of pending direct I/O requests.  Truncate can\u0027t\n   proceed as long as it\u0027s non-zero\n - when i_dio_count reaches non-zero we wake up a pending truncate using\n   wake_up_bit on a new bit in i_flags\n - new references to i_dio_count can\u0027t appear while we are waiting for\n   it to read zero because the direct I/O count always needs i_mutex\n   (or an equivalent like XFS\u0027s i_iolock) for starting a new operation.\n\nThis scheme is much simpler, and saves the space of a spinlock_t and a\nstruct list_head in struct inode (typically 160 bits on a non-debug 64-bit\nsystem).\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f9b5570d7fdedff32a2e78102bfb54cd1b12b289",
      "tree": "0bbe650c809d96b25d746c400e316c3ad71b4097",
      "parents": [
        "9ea7df534ed2a18157434a496a12cf073ca00c52"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:42 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:45 2011 -0400"
      },
      "message": "fs: simplify handling of zero sized reads in __blockdev_direct_IO\n\nReject zero sized reads as soon as we know our I/O length, and don\u0027t\nborther with locks or allocations that might have to be cleaned up\notherwise.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9ea7df534ed2a18157434a496a12cf073ca00c52",
      "tree": "f8fa09102093cbc60249f96ec4fb91985ae8659b",
      "parents": [
        "582686915803e34adc8fdcd90bff7ca7f6a42221"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jun 24 14:29:41 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:45 2011 -0400"
      },
      "message": "ext4: Rewrite ext4_page_mkwrite() to use generic helpers\n\nRewrite ext4_page_mkwrite() to use __block_page_mkwrite() helper. This\nremoves the need of using i_alloc_sem to avoid races with truncate which\nseems to be the wrong locking order according to lock ordering documented in\nmm/rmap.c. Also calling ext4_da_write_begin() as used by the old code seems to\nbe problematic because we can decide to flush delay-allocated blocks which\nwill acquire s_umount semaphore - again creating unpleasant lock dependency\nif not directly a deadlock.\n\nAlso add a check for frozen filesystem so that we don\u0027t busyloop in page fault\nwhen the filesystem is frozen.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "582686915803e34adc8fdcd90bff7ca7f6a42221",
      "tree": "5a522cb6dbc41eaac987dbf15a2cbae35b2544cc",
      "parents": [
        "8c5dc70aae29d2571c0f461d69b37e4e6e01ff4c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:40 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:44 2011 -0400"
      },
      "message": "fat: remove i_alloc_sem abuse\n\nAdd a new rw_semaphore to protect bmap against truncate.  Previous\ni_alloc_sem was abused for this, but it\u0027s going away in this series.\n\nNote that we can\u0027t simply use i_mutex, given that the swapon code\ncalls -\u003ebmap under it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8c5dc70aae29d2571c0f461d69b37e4e6e01ff4c",
      "tree": "8f8ef804a7e0df8b432d042d0b029515a5a8ada5",
      "parents": [
        "e46ebd27823b27273da780376d54c080250ff1a2"
      ],
      "author": {
        "name": "Tobias Klauser",
        "email": "tklauser@distanz.ch",
        "time": "Fri Jul 01 13:44:51 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:43 2011 -0400"
      },
      "message": "VFS: Fixup kerneldoc for generic_permission()\n\nThe flags parameter went away in\nd749519b444db985e40b897f73ce1898b11f997e\n\nSigned-off-by: Tobias Klauser \u003ctklauser@distanz.ch\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e46ebd27823b27273da780376d54c080250ff1a2",
      "tree": "cbc3b65326f1fe006284869bd180481fa195340c",
      "parents": [
        "8daaa83145ef1f0a146680618328dbbd0fa76939"
      ],
      "author": {
        "name": "Tomasz Stanislawski",
        "email": "t.stanislaws@samsung.com",
        "time": "Tue Jul 12 11:27:20 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:43 2011 -0400"
      },
      "message": "anonfd: fix missing declaration\n\nThe forward declaration of struct file_operations is\nadded to avoid compilation warnings.\n\nSigned-off-by: Tomasz Stanislawski \u003ct.stanislaws@samsung.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8daaa83145ef1f0a146680618328dbbd0fa76939",
      "tree": "8ca49f03ed2fc4dada7283a6e109b13e3fb5501e",
      "parents": [
        "8ab47664d51a69ea79fe70bb07ca80664f74f76b"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:46 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:42 2011 -0400"
      },
      "message": "xfs: make use of new shrinker callout for the inode cache\n\nConvert the inode reclaim shrinker to use the new per-sb shrinker\noperations. This allows much bigger reclaim batches to be used, and\nallows the XFS inode cache to be shrunk in proportion with the VFS\ndentry and inode caches. This avoids the problem of the VFS caches\nbeing shrunk significantly before the XFS inode cache is shrunk\nresulting in imbalances in the caches during reclaim.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8ab47664d51a69ea79fe70bb07ca80664f74f76b",
      "tree": "a0cc73a909840edfb23b4b4490c39fd222cce0fa",
      "parents": [
        "0e1fdafd93980eac62e778798549ce0f6073905c"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:45 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:41 2011 -0400"
      },
      "message": "vfs: increase shrinker batch size\n\nNow that the per-sb shrinker is responsible for shrinking 2 or more\ncaches, increase the batch size to keep econmies of scale for\nshrinking each cache.  Increase the shrinker batch size to 1024\nobjects.\n\nTo allow for a large increase in batch size, add a conditional\nreschedule to prune_icache_sb() so that we don\u0027t hold the LRU spin\nlock for too long. This mirrors the behaviour of the\n__shrink_dcache_sb(), and allows us to increase the batch size\nwithout needing to worry about problems caused by long lock hold\ntimes.\n\nTo ensure that filesystems using the per-sb shrinker callouts don\u0027t\ncause problems, document that the object freeing method must\nreschedule appropriately inside loops.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0e1fdafd93980eac62e778798549ce0f6073905c",
      "tree": "a8b21525d195d436fa738e9a470e64eaa21e6736",
      "parents": [
        "4f8c19fdf3f97402b68f058b1c72a6c7166c9e59"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:44 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:41 2011 -0400"
      },
      "message": "superblock: add filesystem shrinker operations\n\nNow we have a per-superblock shrinker implementation, we can add a\nfilesystem specific callout to it to allow filesystem internal\ncaches to be shrunk by the superblock shrinker.\n\nRather than perpetuate the multipurpose shrinker callback API (i.e.\nnr_to_scan \u003d\u003d 0 meaning \"tell me how many objects freeable in the\ncache), two operations will be added. The first will return the\nnumber of objects that are freeable, the second is the actual\nshrinker call.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4f8c19fdf3f97402b68f058b1c72a6c7166c9e59",
      "tree": "1e986c639955955f6191c46bcfa831e6bb466d60",
      "parents": [
        "b0d40c92adafde7c2d81203ce7c1c69275f41140"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:43 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:40 2011 -0400"
      },
      "message": "inode: remove iprune_sem\n\nNow that we have per-sb shrinkers with a lifecycle that is a subset\nof the superblock lifecycle and can reliably detect a filesystem\nbeing unmounted, there is not longer any race condition for the\niprune_sem to protect against. Hence we can remove it.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b0d40c92adafde7c2d81203ce7c1c69275f41140",
      "tree": "f75a19dcd1a37aff23dc43323b58f014b1297c6b",
      "parents": [
        "12ad3ab66103e6582ca69c0c9de18b13487eaaef"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:42 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:10 2011 -0400"
      },
      "message": "superblock: introduce per-sb cache shrinker infrastructure\n\nWith context based shrinkers, we can implement a per-superblock\nshrinker that shrinks the caches attached to the superblock. We\ncurrently have global shrinkers for the inode and dentry caches that\nsplit up into per-superblock operations via a coarse proportioning\nmethod that does not batch very well.  The global shrinkers also\nhave a dependency - dentries pin inodes - so we have to be very\ncareful about how we register the global shrinkers so that the\nimplicit call order is always correct.\n\nWith a per-sb shrinker callout, we can encode this dependency\ndirectly into the per-sb shrinker, hence avoiding the need for\nstrictly ordering shrinker registrations. We also have no need for\nany proportioning code for the shrinker subsystem already provides\nthis functionality across all shrinkers. Allowing the shrinker to\noperate on a single superblock at a time means that we do less\nsuperblock list traversals and locking and reclaim should batch more\neffectively. This should result in less CPU overhead for reclaim and\npotentially faster reclaim of items from each filesystem.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "12ad3ab66103e6582ca69c0c9de18b13487eaaef",
      "tree": "52d1ecd11d48faa7e6f8d6600c8e76807b0985a5",
      "parents": [
        "09cc9fc7a7c3d872065426d7fb0f0ad6d3eb90fc"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:41 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:38 2011 -0400"
      },
      "message": "superblock: move pin_sb_for_writeback() to fs/super.c\n\nThe per-sb shrinker has the same requirement as the writeback\nthreads of ensuring that the superblock is usable and pinned for the\ntime it takes to run the work. Both need to take a passive reference\nto the sb, take a read lock on the s_umount lock and then only\ncontinue if an unmount is not in progress.\n\npin_sb_for_writeback() does this exactly, so move it to fs/super.c\nand rename it to grab_super_passive() and exporting it via\nfs/internal.h for all the VFS code to be able to use.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "09cc9fc7a7c3d872065426d7fb0f0ad6d3eb90fc",
      "tree": "79f6f835dd009ac34bd35ee3ee61e616ec2b255a",
      "parents": [
        "98b745c647a5a90c3c21ea43cbfad9a47b0dfad7"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:40 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:36 2011 -0400"
      },
      "message": "inode: move to per-sb LRU locks\n\nWith the inode LRUs moving to per-sb structures, there is no longer\na need for a global inode_lru_lock. The locking can be made more\nfine-grained by moving to a per-sb LRU lock, isolating the LRU\noperations of different filesytsems completely from each other.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "98b745c647a5a90c3c21ea43cbfad9a47b0dfad7",
      "tree": "08917a620b6d15076223c1ef75996a1a76a13abd",
      "parents": [
        "fcb94f72d3e0f4f34b326c2986da8e5996daf72c"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:39 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:35 2011 -0400"
      },
      "message": "inode: Make unused inode LRU per superblock\n\nThe inode unused list is currently a global LRU. This does not match\nthe other global filesystem cache - the dentry cache - which uses\nper-superblock LRU lists. Hence we have related filesystem object\ntypes using different LRU reclaimation schemes.\n\nTo enable a per-superblock filesystem cache shrinker, both of these\ncaches need to have per-sb unused object LRU lists. Hence this patch\nconverts the global inode LRU to per-sb LRUs.\n\nThe patch only does rudimentary per-sb propotioning in the shrinker\ninfrastructure, as this gets removed when the per-sb shrinker\ncallouts are introduced later on.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fcb94f72d3e0f4f34b326c2986da8e5996daf72c",
      "tree": "a18da3a56f447264c0dc2501a41afc5890afc78c",
      "parents": [
        "e9299f5058595a655c3b207cda9635e28b9197e6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:38 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:34 2011 -0400"
      },
      "message": "inode: convert inode_stat.nr_unused to per-cpu counters\n\nBefore we split up the inode_lru_lock, the unused inode counter\nneeds to be made independent of the global inode_lru_lock. Convert\nit to per-cpu counters to do this.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e9299f5058595a655c3b207cda9635e28b9197e6",
      "tree": "b31a4dc5cab98ee1701313f45e92e583c2d76f63",
      "parents": [
        "3567b59aa80ac4417002bf58e35dce5c777d4164"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:37 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:32 2011 -0400"
      },
      "message": "vmscan: add customisable shrinker batch size\n\nFor shrinkers that have their own cond_resched* calls, having\nshrink_slab break the work down into small batches is not\npaticularly efficient. Add a custom batchsize field to the struct\nshrinker so that shrinkers can use a larger batch size if they\ndesire.\n\nA value of zero (uninitialised) means \"use the default\", so\nbehaviour is unchanged by this patch.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3567b59aa80ac4417002bf58e35dce5c777d4164",
      "tree": "0d450f4cd1fae3c01cbc5ccaefd4cd519029b0f6",
      "parents": [
        "acf92b485cccf028177f46918e045c0c4e80ee10"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:36 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:31 2011 -0400"
      },
      "message": "vmscan: reduce wind up shrinker-\u003enr when shrinker can\u0027t do work\n\nWhen a shrinker returns -1 to shrink_slab() to indicate it cannot do\nany work given the current memory reclaim requirements, it adds the\nentire total_scan count to shrinker-\u003enr. The idea ehind this is that\nwhenteh shrinker is next called and can do work, it will do the work\nof the previously aborted shrinker call as well.\n\nHowever, if a filesystem is doing lots of allocation with GFP_NOFS\nset, then we get many, many more aborts from the shrinkers than we\ndo successful calls. The result is that shrinker-\u003enr winds up to\nit\u0027s maximum permissible value (twice the current cache size) and\nthen when the next shrinker call that can do work is issued, it\nhas enough scan count built up to free the entire cache twice over.\n\nThis manifests itself in the cache going from full to empty in a\nmatter of seconds, even when only a small part of the cache is\nneeded to be emptied to free sufficient memory.\n\nUnder metadata intensive workloads on ext4 and XFS, I\u0027m seeing the\nVFS caches increase memory consumption up to 75% of memory (no page\ncache pressure) over a period of 30-60s, and then the shrinker\nempties them down to zero in the space of 2-3s. This cycle repeats\nover and over again, with the shrinker completely trashing the inode\nand dentry caches every minute or so the workload continues.\n\nThis behaviour was made obvious by the shrink_slab tracepoints added\nearlier in the series, and made worse by the patch that corrected\nthe concurrent accounting of shrinker-\u003enr.\n\nTo avoid this problem, stop repeated small increments of the total\nscan value from winding shrinker-\u003enr up to a value that can cause\nthe entire cache to be freed. We still need to allow it to wind up,\nso use the delta as the \"large scan\" threshold check - if the delta\nis more than a quarter of the entire cache size, then it is a large\nscan and allowed to cause lots of windup because we are clearly\nneeding to free lots of memory.\n\nIf it isn\u0027t a large scan then limit the total scan to half the size\nof the cache so that windup never increases to consume the whole\ncache. Reducing the total scan limit further does not allow enough\nwind-up to maintain the current levels of performance, whilst a\nhigher threshold does not prevent the windup from freeing the entire\ncache under sustained workloads.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "acf92b485cccf028177f46918e045c0c4e80ee10",
      "tree": "7da97439b5388d143cf414874572f1b2da7f3fe3",
      "parents": [
        "095760730c1047c69159ce88021a7fa3833502c8"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:35 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:29 2011 -0400"
      },
      "message": "vmscan: shrinker-\u003enr updates race and go wrong\n\nshrink_slab() allows shrinkers to be called in parallel so the\nstruct shrinker can be updated concurrently. It does not provide any\nexclusio for such updates, so we can get the shrinker-\u003enr value\nincreasing or decreasing incorrectly.\n\nAs a result, when a shrinker repeatedly returns a value of -1 (e.g.\na VFS shrinker called w/ GFP_NOFS), the shrinker-\u003enr goes haywire,\nsometimes updating with the scan count that wasn\u0027t used, sometimes\nlosing it altogether. Worse is when a shrinker does work and that\nupdate is lost due to racy updates, which means the shrinker will do\nthe work again!\n\nFix this by making the total_scan calculations independent of\nshrinker-\u003enr, and making the shrinker-\u003enr updates atomic w.r.t. to\nother updates via cmpxchg loops.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "095760730c1047c69159ce88021a7fa3833502c8",
      "tree": "7cee34087a3e0d3d14691075b0ea614846c87d7c",
      "parents": [
        "a9049376ee05bf966bfe2b081b5071326856890a"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:34 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:27 2011 -0400"
      },
      "message": "vmscan: add shrink_slab tracepoints\n\nIt is impossible to understand what the shrinkers are actually doing\nwithout instrumenting the code, so add a some tracepoints to allow\ninsight to be gained.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a9049376ee05bf966bfe2b081b5071326856890a",
      "tree": "efb3cbfc7760537f201bb28dacbb0d39ec39f04c",
      "parents": [
        "0c1aa9a952c3608eb17bf990466f1491d1ee8b6c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jul 08 21:20:11 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:26 2011 -0400"
      },
      "message": "make d_splice_alias(ERR_PTR(err), dentry) \u003d ERR_PTR(err)\n\n... and simplify the living hell out of callers\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0c1aa9a952c3608eb17bf990466f1491d1ee8b6c",
      "tree": "93c044f5700db46f056fb7f57924ff9f9f8fee98",
      "parents": [
        "5b4b299cc7b6adfb9401bf7f826a80f190b971be"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jul 08 20:57:47 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:24 2011 -0400"
      },
      "message": "deuglify squashfs_lookup()\n\nd_splice_alias(NULL, dentry) is equivalent to d_add(dentry, NULL), NULL\nso no need for that if (inode) ... in there (or ERR_PTR(0), for that\nmatter)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5b4b299cc7b6adfb9401bf7f826a80f190b971be",
      "tree": "f897ca34aa49f28292f4951ca00a71efac7f24aa",
      "parents": [
        "e7f59097071f2e193e900093742a4be85839f3d9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 07 18:43:21 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:23 2011 -0400"
      },
      "message": "nfsd4_list_rec_dir(): don\u0027t bother with reopening rec_file\n\njust rewind it to the beginning before vfs_readdir() and be\ndone with that...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e7f59097071f2e193e900093742a4be85839f3d9",
      "tree": "35cc747b65d29fdc4f6dea472bf75b540da20453",
      "parents": [
        "0ee5dc676a5f8fadede608c7281dfedb1ae714ea"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 07 15:45:59 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:21 2011 -0400"
      },
      "message": "kill useless checks for sb-\u003es_op \u003d\u003d NULL\n\nnever is...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0ee5dc676a5f8fadede608c7281dfedb1ae714ea",
      "tree": "887896f0e1b51f39e9be21a1e8d960ec50a817a7",
      "parents": [
        "fb408e6ccc32404a05783911b6f3fed56bd17b06"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 07 15:44:25 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:20 2011 -0400"
      },
      "message": "btrfs: kill magical embedded struct superblock\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fb408e6ccc32404a05783911b6f3fed56bd17b06",
      "tree": "ad19408c2e4b2f8eaac9e3dc541f432fc85bc2fd",
      "parents": [
        "a4464dbc0ca6a3ab8e9d1206bc05059dae2a559d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 07 15:12:51 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:19 2011 -0400"
      },
      "message": "get rid of pointless checks for dentry-\u003esb \u003d\u003d NULL\n\nit never is...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a4464dbc0ca6a3ab8e9d1206bc05059dae2a559d",
      "tree": "d3c9332ab72cf5a4eba483ba1ff83c54ca4c42a0",
      "parents": [
        "e3c3d9c838d48c0341c40ea45ee087e3d8c8ea39"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 07 15:03:58 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:17 2011 -0400"
      },
      "message": "Make -\u003ed_sb assign-once and always non-NULL\n\nNew helper (non-exported, fs/internal.h-only): __d_alloc(sb, name).\nAllocates dentry, sets its -\u003ed_sb to given superblock and sets\n-\u003ed_op accordingly.  Old d_alloc(NULL, name) callers are converted\nto that (all of them know what superblock they want).  d_alloc()\nitself is left only for parent !\u003d NULl case; uses __d_alloc(),\ninserts result into the list of parent\u0027s children.\n\nNote that now -\u003ed_sb is assign-once and never NULL *and*\n-\u003ed_parent is never NULL either.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e3c3d9c838d48c0341c40ea45ee087e3d8c8ea39",
      "tree": "4ed2993e4c1af8aa725b2bd138c0a6967d33384b",
      "parents": [
        "e0a0124936171af6156b80fe8ac8799f039e767f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 27 17:14:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:16 2011 -0400"
      },
      "message": "unexport kern_path_parent()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e0a0124936171af6156b80fe8ac8799f039e767f",
      "tree": "5eed31f5b5dbf43f9a4d0e14fb4f9e1f9bcfd6d0",
      "parents": [
        "ed75e95de574c99575e5f3e1d9ca59ea8c12a9cb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 27 17:00:37 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:14 2011 -0400"
      },
      "message": "switch vfs_path_lookup() to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ed75e95de574c99575e5f3e1d9ca59ea8c12a9cb",
      "tree": "9b79ea8f3b30f2589d2edf773307bdc6528ef3e3",
      "parents": [
        "5da4e689449ad99ab31cf2208d99eddfce0498ba"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 27 16:53:43 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:12 2011 -0400"
      },
      "message": "kill lookup_create()\n\nfolded into the only caller (kern_path_create())\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5da4e689449ad99ab31cf2208d99eddfce0498ba",
      "tree": "5cd8ccc145b8b29b3a63dd6252ee921d8e01379b",
      "parents": [
        "69753a0f14d3cb2e8a70e559ef8d409e4deeac8a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 27 16:37:12 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:11 2011 -0400"
      },
      "message": "devtmpfs: get rid of bogus mkdir in create_path()\n\nWe do _NOT_ want to mkdir the path itself - we are preparing to\nmknod it, after all.  Normally it\u0027ll fail with -ENOENT and\njust do nothing, but if somebody has created the parent in\nthe meanwhile, we\u0027ll get buggered...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "69753a0f14d3cb2e8a70e559ef8d409e4deeac8a",
      "tree": "e00ca40e65892ff9383bbf2d301d4269dd9327e9",
      "parents": [
        "2780f1ff6aec0cf708a61c022d475bfcaa648965"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 27 16:35:45 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:10 2011 -0400"
      },
      "message": "switch devtmpfs to kern_path_create()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2780f1ff6aec0cf708a61c022d475bfcaa648965",
      "tree": "c8c65497d2ab7c56bde6fc6166489d9caf9386e9",
      "parents": [
        "6657719390cd05be45f4e3b501d8bb46889c0a19"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 27 16:25:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:09 2011 -0400"
      },
      "message": "switch devtmpfs object creation/removal to separate kernel thread\n\n... and give it a namespace where devtmpfs would be mounted on root,\nthus avoiding abuses of vfs_path_lookup() (it was never intended to\nbe used with LOOKUP_PARENT).  Games with credentials are also gone.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6657719390cd05be45f4e3b501d8bb46889c0a19",
      "tree": "8d2d97f645b05badd134526659f5d9adc7ab9234",
      "parents": [
        "1ba106818615faddb63ba782f85f3498b9eb61c6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 28 15:41:10 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:07 2011 -0400"
      },
      "message": "make sure that nsproxy_cache is initialized early enough\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1ba106818615faddb63ba782f85f3498b9eb61c6",
      "tree": "45454702de65167453ebb873e8503456b2d0c640",
      "parents": [
        "dae6ad8f37529963ae7df52baaccf056b38f210e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 26 11:54:58 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:06 2011 -0400"
      },
      "message": "switch do_spufs_create() to user_path_create(), fix double-unlock\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dae6ad8f37529963ae7df52baaccf056b38f210e",
      "tree": "1bfc6f766601e744c2c2c064b97cdefdcca4ad5c",
      "parents": [
        "49084c3bb2055c401f3493c13edae14d49128ca0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 26 11:50:15 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:05 2011 -0400"
      },
      "message": "new helpers: kern_path_create/user_path_create\n\ncombination of kern_path_parent() and lookup_create().  Does *not*\nexpose struct nameidata to caller.  Syscalls converted to that...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "49084c3bb2055c401f3493c13edae14d49128ca0",
      "tree": "354b13abe17f898bdcb24c11b961095f5023b832",
      "parents": [
        "8aeb376ca0fe61038166c3b8243c678addb80abf"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:59:52 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:03 2011 -0400"
      },
      "message": "kill LOOKUP_CONTINUE\n\nLOOKUP_PARENT is equivalent to it now\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8aeb376ca0fe61038166c3b8243c678addb80abf",
      "tree": "daae94f5aebe5decd67ad37dc642090ebaa9dba5",
      "parents": [
        "4352780386139ff33d2203868b392e6535deff61"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:48:43 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:02 2011 -0400"
      },
      "message": "nfs: LOOKUP_{OPEN,CREATE,EXCL} is set only on the last step\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4352780386139ff33d2203868b392e6535deff61",
      "tree": "5bfc19790fa4c70b9153753d68e3dc11e49f7483",
      "parents": [
        "a127e0af59ab610e8b37ac2dfa4cdb2ec8c8f604"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:45:21 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:00 2011 -0400"
      },
      "message": "cifs_lookup(): LOOKUP_OPEN is set only on the last component\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a127e0af59ab610e8b37ac2dfa4cdb2ec8c8f604",
      "tree": "9184b632a82441d8f4d8c19514dfad15072d1718",
      "parents": [
        "5c0f360b083fb33d05d1bff4b138b82d715eb419"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:43:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:59 2011 -0400"
      },
      "message": "ceph: LOOKUP_OPEN is set only when it\u0027s the last component\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5c0f360b083fb33d05d1bff4b138b82d715eb419",
      "tree": "3bb7116ffd8613587918501a73fb858c364c6b10",
      "parents": [
        "407938e79edcadba1b5a17cf928584d8a191a8d7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:41:09 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:57 2011 -0400"
      },
      "message": "jfs_ci_revalidate() is safe from RCU mode\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "407938e79edcadba1b5a17cf928584d8a191a8d7",
      "tree": "2d8abfe7d1fb12e6c28370ab44c77516d7b2f3a1",
      "parents": [
        "dd7dd556e45133ef13f2c4bddc0e0b1ac23bc0e4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:37:18 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:56 2011 -0400"
      },
      "message": "LOOKUP_CREATE and LOOKUP_RENAME_TARGET can be set only on the last step\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dd7dd556e45133ef13f2c4bddc0e0b1ac23bc0e4",
      "tree": "4884b6af570a2a0cb01d11f39a38a3a9c73e49ba",
      "parents": [
        "bf6c7f6c7bd0ea779757d35b5fdc9f9157f056b3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:17:17 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:56 2011 -0400"
      },
      "message": "no need to check for LOOKUP_OPEN in -\u003ecreate() instances\n\n... it will be set in nd-\u003eflag for all cases with non-NULL nd\n(i.e. when called from do_last()).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bf6c7f6c7bd0ea779757d35b5fdc9f9157f056b3",
      "tree": "aed90f298856f286f84af6774ea30ade62c95294",
      "parents": [
        "8a5e929dd2e05ab4d3d89f58c5e8fca596af8f3a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:08:31 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:54 2011 -0400"
      },
      "message": "don\u0027t pass nameidata to vfs_create() from ecryptfs_create()\n\nInstead of playing with removal of LOOKUP_OPEN, mangling (and\nrestoring) nd-\u003epath, just pass NULL to vfs_create().  The whole\npoint of what\u0027s being done there is to suppress any attempts\nto open file by underlying fs, which is what nd \u003d\u003d NULL indicates.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8a5e929dd2e05ab4d3d89f58c5e8fca596af8f3a",
      "tree": "8cbed05fcd99d24e881e5ea12d8a954865e31085",
      "parents": [
        "554a8b9f54cd7ca2b89f5dc227df08be082fae0d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 19:15:54 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:52 2011 -0400"
      },
      "message": "don\u0027t transliterate lower bits of -\u003eintent.open.flags to FMODE_...\n\n-\u003ecreate() instances are much happier that way...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "554a8b9f54cd7ca2b89f5dc227df08be082fae0d",
      "tree": "d8188a1503e744fa64dbabe6e585065e5234683b",
      "parents": [
        "f7c85868fcacc331dd3454a4f08f006d7942521f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 23 12:35:50 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:49 2011 -0400"
      },
      "message": "Don\u0027t pass nameidata when calling vfs_create() from mknod()\n\nAll instances can cope with that now (and ceph one actually\nstarts working properly).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f7c85868fcacc331dd3454a4f08f006d7942521f",
      "tree": "03e01b3f96684911c353ce22c1cc757a36616977",
      "parents": [
        "511415980ace0ceecd71088dbe1c7ce4ca7c79fe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:53:18 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:46 2011 -0400"
      },
      "message": "fix mknod() on nfs4 (hopefully)\n\na) check the right flags in -\u003ecreate() (LOOKUP_OPEN, not LOOKUP_CREATE)\nb) default (!LOOKUP_OPEN) open_flags is O_CREAT|O_EXCL|FMODE_READ, not 0\nc) lookup_instantiate_filp() should be done only with LOOKUP_OPEN;\notherwise we need to issue CLOSE, lest we leak stateid on server.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "511415980ace0ceecd71088dbe1c7ce4ca7c79fe",
      "tree": "153510403c8053f3287d304c02609c17d07801d3",
      "parents": [
        "3d4ff43d895c50319af45eb4bf04a4618eccdf76"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:47:28 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:45 2011 -0400"
      },
      "message": "nameidata_to_nfs_open_context() doesn\u0027t need nameidata, actually...\n\njust open flags; switched to passing just those and\nrenamed to create_nfs_open_context()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3d4ff43d895c50319af45eb4bf04a4618eccdf76",
      "tree": "b412cd076920a903a854a20bceed4a0ce511fd13",
      "parents": [
        "82a2c1b77ada3b81911deeb871719ec5ff77f83c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:40:12 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:44 2011 -0400"
      },
      "message": "nfs_open_context doesn\u0027t need struct path either\n\njust dentry, please...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "82a2c1b77ada3b81911deeb871719ec5ff77f83c",
      "tree": "89b0329a54274e51c19c342048e80639bc489129",
      "parents": [
        "643168c2dc0d04cb884ae7bcd1ee19d9ecdff6a8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:30:55 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:42 2011 -0400"
      },
      "message": "nfs4_opendata doesn\u0027t need struct path either\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "643168c2dc0d04cb884ae7bcd1ee19d9ecdff6a8",
      "tree": "68c75e2a53096b2f6fe12b3f43b9fdb91d6dc484",
      "parents": [
        "7c97c200e2c5aa8b1067bebb99df0a7c2e12ebf3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:20:23 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:41 2011 -0400"
      },
      "message": "nfs4_closedata doesn\u0027t need to mess with struct path\n\ninstead of path_get()/path_put(), we can just use nfs_sb_{,de}active()\nto pin the superblock down.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7c97c200e2c5aa8b1067bebb99df0a7c2e12ebf3",
      "tree": "bc486a32cb322a58730be30f5c61d272e3fee54f",
      "parents": [
        "beefebf1aa611242e022e71bae87034f415d3314"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 21 08:51:28 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:39 2011 -0400"
      },
      "message": "cifs: fix the type of cifs_demultiplex_thread()\n\n... and get rid of a bogus typecast, while we are at it; it\u0027s not\njust that we want a function returning int and not void, but cast\nto pointer to function taking void * and returning void would be\n(void (*)(void *)) and not (void *)(void *), TYVM...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "beefebf1aa611242e022e71bae87034f415d3314",
      "tree": "87f7aaeda400872f42a3ff5560e8ac995bb08970",
      "parents": [
        "729cdb3a1ee03a4363f9c7e66ddd979727e99e1f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 21 01:01:59 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:38 2011 -0400"
      },
      "message": "ecryptfs_inode_permission() doesn\u0027t need to bail out on RCU\n\n... now that inode_permission() can take MAY_NOT_BLOCK and handle it\nproperly.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "729cdb3a1ee03a4363f9c7e66ddd979727e99e1f",
      "tree": "6b2e6947e1f58ebcb1aaa2a0f0710ae1fb2d6a1d",
      "parents": [
        "76fe3276be26cff2e609cdcfbc1265cf1dd72b2c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 21 01:01:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:36 2011 -0400"
      },
      "message": "kill IPERM_FLAG_RCU\n\nnot used anymore\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "76fe3276be26cff2e609cdcfbc1265cf1dd72b2c",
      "tree": "67e25ccf9a76e5cad7bee3087d8f305a9cc1ec8d",
      "parents": [
        "d2d9e9fbc2f8f492dae373482da61d34475c53c1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 21:56:31 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:36 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: document API changes\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d2d9e9fbc2f8f492dae373482da61d34475c53c1",
      "tree": "5d881318daae1c85d9544d18500eca4d175e76e7",
      "parents": [
        "4ad5abb3d01a2c10854969b00982fadb130784a6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 10:55:26 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:34 2011 -0400"
      },
      "message": "merge do_revalidate() into its only caller\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4ad5abb3d01a2c10854969b00982fadb130784a6",
      "tree": "757ad9baeab65982e8c8ed61b222c8969b3dbf43",
      "parents": [
        "d594e7ec4da6c1a527dea4965eee37cd785792b8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:57:03 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:32 2011 -0400"
      },
      "message": "no reason to keep exec_permission() separate now\n\ncache footprint alone makes it a bad idea...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d594e7ec4da6c1a527dea4965eee37cd785792b8",
      "tree": "b1c50c217309934a25449052625747927cbe4b45",
      "parents": [
        "eecdd358b467405a084d400d5ec571bbdbfe97a3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:55:42 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:30 2011 -0400"
      },
      "message": "massage generic_permission() to treat directories on a separate path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "eecdd358b467405a084d400d5ec571bbdbfe97a3",
      "tree": "357332873b909a19964e77dbae3c4aed5c100dc6",
      "parents": [
        "cf1dd1dae851ce5765cda5de16aa965eef7c2dbf"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:48:41 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:29 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to exec_permission()\n\npass mask instead; kill security_inode_exec_permission() since we can use\nsecurity_inode_permission() instead.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cf1dd1dae851ce5765cda5de16aa965eef7c2dbf",
      "tree": "5ee564e56eca307701ce155e30a2cbb05b9937e3",
      "parents": [
        "e74f71eb78a4a8b9eaf1bc65f20f761648e85f76"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:44:08 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:27 2011 -0400"
      },
      "message": "selinux: don\u0027t transliterate MAY_NOT_BLOCK to IPERM_FLAG_RCU\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e74f71eb78a4a8b9eaf1bc65f20f761648e85f76",
      "tree": "7bc7fc1344f5ed6e3ce8132b36125ef5cec6407c",
      "parents": [
        "10556cb21a0d0b24d95f00ea6df16f599a3345b2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:38:15 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:26 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003einode_permission()\n\npass that via mask instead.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "10556cb21a0d0b24d95f00ea6df16f599a3345b2",
      "tree": "3d7d8dfba807805a55c154f1850717bf3b49f343",
      "parents": [
        "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:28:19 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:24 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003epermission()\n\nnot used by the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890",
      "tree": "bbcebc14bffd000f1dfcbf37e64f56d2f49581ac",
      "parents": [
        "7e40145eb111a5192e6d819f764db9d6828d1abb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:16:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:22 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to generic_permission()\n\nredundant; all callers get it duplicated in mask \u0026 MAY_NOT_BLOCK and none of\nthem removes that bit.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7e40145eb111a5192e6d819f764db9d6828d1abb",
      "tree": "3249952a751de12465e8d66c63328445e9242f3a",
      "parents": [
        "9c2c703929e4c41210cfa6e3f599514421bab8dc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:12:17 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:21 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003echeck_acl()\n\nnot used in the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9c2c703929e4c41210cfa6e3f599514421bab8dc",
      "tree": "2086738f22755ad18ba18ab2ee0f2b23d651da60",
      "parents": [
        "1fc0f78ca9f311c6277e2f1b7655bb4d43ceb311"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:06:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:19 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: pass MAY_NOT_BLOCK to -\u003echeck_acl()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1fc0f78ca9f311c6277e2f1b7655bb4d43ceb311",
      "tree": "9c6a5879558b7a189f94eae97ac80268e63fe29b",
      "parents": [
        "178ea73521d64ba41d7aa5488fb9f549c6d4507d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 18:59:02 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:18 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: MAY_NOT_BLOCK\n\nDuplicate the flags argument into mask bitmap.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "178ea73521d64ba41d7aa5488fb9f549c6d4507d",
      "tree": "7fb6bfb6483577752e307a5bb2e3905658d44294",
      "parents": [
        "07b8ce1ee87d291ff564c02cf878fae973317a52"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 11:31:30 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:16 2011 -0400"
      },
      "message": "kill check_acl callback of generic_permission()\n\nits value depends only on inode and does not change; we might as\nwell store it in -\u003ei_op-\u003echeck_acl and be done with that.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "07b8ce1ee87d291ff564c02cf878fae973317a52",
      "tree": "94f07ed2b5d18aef71f1b28193375f88c0c947bc",
      "parents": [
        "f4d6ff89d8e54b68a4322388d26d518d6133fa4e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 10:52:57 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:14 2011 -0400"
      },
      "message": "lockless get_write_access/deny_write_access\n\nnew helpers: atomic_inc_unless_negative()/atomic_dec_unless_positive()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f4d6ff89d8e54b68a4322388d26d518d6133fa4e",
      "tree": "57f4113a7e5ac2cc0e5a713ac31339f72de797ba",
      "parents": [
        "3bfa784a6539f91a27d7ffdd408efdb638e3bebd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 19 13:14:21 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:13 2011 -0400"
      },
      "message": "move exec_permission() up to the rest of permission-related functions\n\n... and convert the comment before it into linuxdoc form.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    }
  ],
  "next": "3bfa784a6539f91a27d7ffdd408efdb638e3bebd"
}
