)]}'
{
  "log": [
    {
      "commit": "1788ea6e3b2a58cf4fb00206e362d9caff8d86a7",
      "tree": "24846fddf8b55f516f365a735defd79b6ea6d28a",
      "parents": [
        "1583171492eb514e267c7b51e96846b38de0f544"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Nov 04 13:31:21 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 16:39:04 2011 -0400"
      },
      "message": "nfs: when attempting to open a directory, fall back on normal lookup (try #5)\n\ncommit d953126 changed how nfs_atomic_lookup handles an -EISDIR return\nfrom an OPEN call. Prior to that patch, that caused the client to fall\nback to doing a normal lookup. When that patch went in, the code began\nreturning that error to userspace. The d_revalidate codepath however\nnever had the corresponding change, so it was still possible to end up\nwith a NULL ctx-\u003estate pointer after that.\n\nThat patch caused a regression. When we attempt to open a directory that\ndoes not have a cached dentry, that open now errors out with EISDIR. If\nyou attempt the same open with a cached dentry, it will succeed.\n\nFix this by reverting the change in nfs_atomic_lookup and allowing\nattempts to open directories to fall back to a normal lookup\n\nAlso, add a NFSv4-specific f_ops-\u003eopen routine that just returns\n-ENOTDIR. This should never be called if things are working properly,\nbut if it ever is, then the dprintk may help in debugging.\n\nTo facilitate this, a new file_operations field is also added to the\nnfs_rpc_ops struct.\n\nCc: stable@kernel.org\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "374e4e3ec347d4f70e1417ce3e1c454f133dab72",
      "tree": "9309b00af4c76c2f24854a15ce9e3d3f14741862",
      "parents": [
        "0c0308066ca53fdf1423895f3a42838b67b3a5a8"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Fri Jul 29 11:49:06 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 30 14:37:14 2011 -0400"
      },
      "message": "Additional readdir cookie loop information\n\nPrint out the name of the file that triggers the cookie loop  message to\nmake it slightly easier to track down the cause.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0c0308066ca53fdf1423895f3a42838b67b3a5a8",
      "tree": "4c6f0d852456581a7ca17286601d18d7bb030632",
      "parents": [
        "ed1e6211a0a134ff23592c6f057af982ad5dab52"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 30 12:45:35 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 30 14:34:50 2011 -0400"
      },
      "message": "NFS: Fix spurious readdir cookie loop messages\n\nIf the directory contents change, then we have to accept that the\nfile-\u003ef_pos value may shrink if we do a \u0027search-by-cookie\u0027. In that\ncase, we should turn off the loop detection and let the NFS client\ntry to recover.\n\nThe patch also fixes a second loop detection bug by ensuring\nthat after turning on the ctx-\u003eduped flag, we read at least one new\ncookie into ctx-\u003edir_cookie before attempting to match with\nctx-\u003edup_cookie.\n\nReported-by: Petr Vandrovec \u003cpetr@vandrovec.name\u003e\nCc: stable@kernel.org [2.6.39+]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\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": "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": "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": "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": "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": "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": "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": "cd1acdf1723d71b28175f95b04305f1cc74ce363",
      "tree": "7ab58883eccd314be3d8efafd59a124d4ffbb861",
      "parents": [
        "fac04863cef53a69830590b2e1c54345068a9747",
        "9342077011d54f42fa1b88b7bc1f7008dcf5fff9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 29 14:10:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 29 14:10:13 2011 -0700"
      },
      "message": "Merge branch \u0027pnfs-submit\u0027 of git://git.open-osd.org/linux-open-osd\n\n* \u0027pnfs-submit\u0027 of git://git.open-osd.org/linux-open-osd: (32 commits)\n  pnfs-obj: pg_test check for max_io_size\n  NFSv4.1: define nfs_generic_pg_test\n  NFSv4.1: use pnfs_generic_pg_test directly by layout driver\n  NFSv4.1: change pg_test return type to bool\n  NFSv4.1: unify pnfs_pageio_init functions\n  pnfs-obj: objlayout_encode_layoutcommit implementation\n  pnfs: encode_layoutcommit\n  pnfs-obj: report errors and .encode_layoutreturn Implementation.\n  pnfs: encode_layoutreturn\n  pnfs: layoutret_on_setattr\n  pnfs: layoutreturn\n  pnfs-obj: osd raid engine read/write implementation\n  pnfs: support for non-rpc layout drivers\n  pnfs-obj: define per-inode private structure\n  pnfs: alloc and free layout_hdr layoutdriver methods\n  pnfs-obj: objio_osd device information retrieval and caching\n  pnfs-obj: decode layout, alloc/free lseg\n  pnfs-obj: pnfs_osd XDR client implementation\n  pnfs-obj: pnfs_osd XDR definitions\n  pnfs-obj: objlayoutdriver module skeleton\n  ...\n"
    },
    {
      "commit": "f7da7a129d57bfe0f74573dc03531c63e1360fae",
      "tree": "6efcd0fbdde9bb816ebc70731f1c47b8335ccfe3",
      "parents": [
        "35c8bb543c9e83197e6375142d1d1c2ee3cf017d"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Thu May 19 14:16:47 2011 -0400"
      },
      "committer": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Sun May 29 20:52:32 2011 +0300"
      },
      "message": "SUNRPC: introduce xdr_init_decode_pages\n\nInitialize xdr_stream and xdr_buf using an array of page pointers\nand length of buffer.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n"
    },
    {
      "commit": "1495f230fa7750479c79e3656286b9183d662077",
      "tree": "e5e233bb9fe1916ccc7281e7dcc71b1572fb22c5",
      "parents": [
        "a09ed5e00084448453c8bada4dcd31e5fbfc2f21"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue May 24 17:12:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:26 2011 -0700"
      },
      "message": "vmscan: change shrinker API by passing shrink_control struct\n\nChange each shrinker\u0027s API by consolidating the existing parameters into\nshrink_control struct.  This will simplify any further features added w/o\ntouching each file of shrinker.\n\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: fix warning]\n[kosaki.motohiro@jp.fujitsu.com: fix up new shrinker API]\n[akpm@linux-foundation.org: fix xfs warning]\n[akpm@linux-foundation.org: update gfs2]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@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": "0acd2201920d0968919f4f5797d63f7b6f2b19d4",
      "tree": "9b241d264f42eff3ff4eeffb67616fca0490e460",
      "parents": [
        "8f70e95f9f4159184f557a1db60c909d7c1bd2e3",
        "35124a0994fc02545b14b9fa3aad000b3331f1c0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "message": "Merge branch \u0027nfs-for-2.6.39\u0027 into nfs-for-next\n"
    },
    {
      "commit": "7c5130588d691a3b34d02312f1bd1b6d56fe0100",
      "tree": "154ccea3a837ca1aae2c5676e0946b79fb4bb671",
      "parents": [
        "e73b83f270828630a9ce33728f6ef61c37a82340"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:24 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:41 2011 -0400"
      },
      "message": "NFS: lookup supports alternate client\n\nA later patch will need to perform a lookup using an\nalternate client with a different security flavor.\nThis patch adds support for doing that on NFS v4.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8ef2ce3e16d9bec6cf015207c1c82a5b864046ac",
      "tree": "35441fd695c4f5215ab0061d8df26b4cfd9a44f5",
      "parents": [
        "480c2006ebb44ae03165695db7b3e38c04e0d102"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Mar 23 15:04:31 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:14:27 2011 -0400"
      },
      "message": "NFS: Detect loops in a readdir due to bad cookies\n\nSome filesystems (such as ext4) can return the same cookie value for\nmultiple files.  If we try to start a readdir with one of these cookies,\nthe server will return the first file found with a cookie of the same\nvalue.  This can cause the client to enter an infinite loop.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "480c2006ebb44ae03165695db7b3e38c04e0d102",
      "tree": "20bb22ea6db986e91017734f6c0390e1211b1765",
      "parents": [
        "e47c085afb3d16cbc6a4bfb10a3b074bb7c58998"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Mar 23 14:48:29 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:13:11 2011 -0400"
      },
      "message": "NFS: Create nfs_open_dir_context\n\nnfs_opendir() created a context that held much more information than we\nneed for a readdir.  This patch introduces a slimmed-down\nnfs_open_dir_context that contains only the cookie and the cred used for\nRPC operations.  The new context will eventually be used to help detect\nreaddir loops.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e47c085afb3d16cbc6a4bfb10a3b074bb7c58998",
      "tree": "67472d29b894b285bc6cc3bb7802b57c3d295bca",
      "parents": [
        "51e816564db151f7f08c739ad69b9d1dbd166663"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 08:43:09 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:12:12 2011 -0400"
      },
      "message": "NFS: Ensure that we update the readdir filp-\u003ef_pos correctly\n\nIf we\u0027re doing a search by readdir cookie, we need to ensure that the\nresulting f_pos is updated. To do so, we need to update the\ndesc-\u003ecurrent_index, in the same way that we do in the search by\nfile offset case.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b1942c5f8cf3bea3a3c88a7498ae4c4361f31afe",
      "tree": "0ff98cbdf75b23104df97344dcd6a35a86bbe9ec",
      "parents": [
        "0d5839ad05acd0fe2a84a39f33ac5efdf634a5a5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 05:44:14 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:44:24 2011 -0400"
      },
      "message": "nfs: store devname at disconnected NFS roots\n\npart 2: make sure that disconnected roots have corresponding mnt_devname\nvalues stashed into them.\n\nHave nfs*_get_root() stuff a copy of devname into -\u003ed_fsdata of the\nfound root, provided that it is disconnected.\n\nHave -\u003ed_release() free it when dentry goes away.\n\nHave the places where NFS uses -\u003ed_fsdata for sillyrename (and that\ncan *never* happen to a disconnected root - dentry will be attached\nto its parent) free old devname copies if they find those.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "36d43a43761b004ad1879ac21471d8fc5f3157ec",
      "tree": "6cb6c6d978f4e58de7f9bf901707d6929f098345",
      "parents": [
        "d18610b0ce9eb48c60649d8fcbf68374c84349d3"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jan 14 18:45:42 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:34 2011 -0500"
      },
      "message": "NFS: Use d_automount() rather than abusing follow_link()\n\nMake NFS use the new d_automount() dentry operation rather than abusing\nfollow_link() on directories.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "db9effe99adc67c53e6aedadadd2aa9a02342e48",
      "tree": "efe7ebfe951972568189ef2548130f0abd515210",
      "parents": [
        "9c4bc1c2befbbdce4b9fd526e67a7a2ea143ffa2",
        "f20877d94a74557b7c28b4ed8920d834c31e0ea5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 20:14:13 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 20:14:13 2011 -0800"
      },
      "message": "Merge branch \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin\n\n* \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin:\n  fs: fix do_last error case when need_reval_dot\n  nfs: add missing rcu-walk check\n  fs: hlist UP debug fixup\n  fs: fix dropping of rcu-walk from force_reval_path\n  fs: force_reval_path drop rcu-walk before d_invalidate\n  fs: small rcu-walk documentation fixes\n\nFixed up trivial conflicts in Documentation/filesystems/porting\n"
    },
    {
      "commit": "657e94b673a805b427903c5628e95348235fad06",
      "tree": "0c174e387cb5d3fd3a2b55e154219cc67b644637",
      "parents": [
        "2c6755988afc003a0332406a134fb6a1626f9b28"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 02:48:39 2011 +0000"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 02:48:39 2011 +0000"
      },
      "message": "nfs: add missing rcu-walk check\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "8a0eebf66e3b1deae036553ba641a9c2bdbae678",
      "tree": "642d4367dd30a55f78244891479cc08f2983eb7e",
      "parents": [
        "581548db3b3c0f6e25b500329eb02e3c72e7acbe"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 13 14:15:50 2011 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 12:06:29 2011 -0800"
      },
      "message": "NFS: Fix NFSv3 exclusive open semantics\n\nCommit c0204fd2b8fe047b18b67e07e1bf2a03691240cd (NFS: Clean up\nnfs4_proc_create()) broke NFSv3 exclusive open by removing the code\nthat passes the O_EXCL flag down to nfs3_proc_create(). This patch\nreverts that offending hunk from the original commit.\n\nReported-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org    [2.6.37]\nTested-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8b244ff2fa58f81f84aa03c82c2c23307a778ce7",
      "tree": "39c913ed4e529084a856c9c80cab9d173d251863",
      "parents": [
        "96e1391414f80a8a3bae74ddf58d3c2870e304f0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Dec 18 11:29:39 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:02:45 2011 -0500"
      },
      "message": "switch nfs to -\u003es_d_op\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b9d919a4ac6cf031b8e065f82ad8f1b0c9ed74b1",
      "tree": "3139b066396956fd3794df0cb1aa74dcc9f1cb28",
      "parents": [
        "7c955fca3e1d8132982148267d9efcafae849bb6",
        "357f54d6b38252737116a6d631f6ac28ded018ed"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 15:11:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 15:11:56 2011 -0800"
      },
      "message": "Merge branch \u0027nfs-for-2.6.38\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.38\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (89 commits)\n  NFS fix the setting of exchange id flag\n  NFS: Don\u0027t use vm_map_ram() in readdir\n  NFSv4: Ensure continued open and lockowner name uniqueness\n  NFS: Move cl_delegations to the nfs_server struct\n  NFS: Introduce nfs_detach_delegations()\n  NFS: Move cl_state_owners and related fields to the nfs_server struct\n  NFS: Allow walking nfs_client.cl_superblocks list outside client.c\n  pnfs: layout roc code\n  pnfs: update nfs4_callback_recallany to handle layouts\n  pnfs: add CB_LAYOUTRECALL handling\n  pnfs: CB_LAYOUTRECALL xdr code\n  pnfs: change lo refcounting to atomic_t\n  pnfs: check that partial LAYOUTGET return is ignored\n  pnfs: add layout to client list before sending rpc\n  pnfs: serialize LAYOUTGET(openstateid)\n  pnfs: layoutget rpc code cleanup\n  pnfs: change how lsegs are removed from layout list\n  pnfs: change layout state seqlock to a spinlock\n  pnfs: add prefix to struct pnfs_layout_hdr fields\n  pnfs: add prefix to struct pnfs_layout_segment fields\n  ...\n"
    },
    {
      "commit": "68c404b18f6fba404b2753622d0459c68ee128ae",
      "tree": "c1ec0bb12f19d91071b461cc2831d9d3dd4c74f3",
      "parents": [
        "d035c36c58dd9183ad6aa7875dea89893faedb55",
        "6650239a4b01077e80d5a4468562756d77afaa59"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 10 14:48:02 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 10 14:48:02 2011 -0500"
      },
      "message": "Merge branch \u0027bugfixes\u0027 into nfs-for-2.6.38\n\nConflicts:\n\tfs/nfs/nfs2xdr.c\n\tfs/nfs/nfs3xdr.c\n\tfs/nfs/nfs4xdr.c\n"
    },
    {
      "commit": "6650239a4b01077e80d5a4468562756d77afaa59",
      "tree": "505c9a1dc26c26608ce6a5981093a6357d4f3638",
      "parents": [
        "3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jan 08 17:45:38 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jan 10 14:45:01 2011 -0500"
      },
      "message": "NFS: Don\u0027t use vm_map_ram() in readdir\n\nvm_map_ram() is not available on NOMMU platforms, and causes trouble\non incoherrent architectures such as ARM when we access the page data\nthrough both the direct and the virtual mapping.\n\nThe alternative is to use the direct mapping to access page data\nfor the case when we are not crossing a page boundary, but to copy\nthe data into a linear scratch buffer when we are accessing data\nthat spans page boundaries.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nTested-by: Marc Kleine-Budde \u003cmkl@pengutronix.de\u003e\nCc: stable@kernel.org  [2.6.37]\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\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": "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": "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": "fe15ce446beb3a33583af81ffe6c9d01a75314ed",
      "tree": "bc8af66b6dd2d0f21a2a3f48a19975ae2cdbae4e",
      "parents": [
        "5eef7fa905c814826f518aca2d414ca77508ce30"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:23 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:18 2011 +1100"
      },
      "message": "fs: change d_delete semantics\n\nChange d_delete from a dentry deletion notification to a dentry caching\nadvise, more like -\u003edrop_inode. Require it to be constant and idempotent,\nand not take d_lock. This is how all existing filesystems use the callback\nanyway.\n\nThis makes fine grained dentry locking of dput and dentry lru scanning\nmuch simpler.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "64c2ce8b72eceec4030b04bca32d098b3d1431bb",
      "tree": "d296c9282da04017457e44d36cf1bbda3451e2ac",
      "parents": [
        "a8a5da996df7d2d91b5aef2752da9adcefea4bc6"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Dec 09 11:35:25 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 04 13:10:41 2011 -0500"
      },
      "message": "nfsv4: Switch to generic xattr handling code\n\nThis patch make nfsv4 use the generic xattr handling code\nto get the nfsv4 acl. This will help us to add richacl\nsupport to nfsv4 in later patches\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a8a5da996df7d2d91b5aef2752da9adcefea4bc6",
      "tree": "605be5f4af59d5cc324ae11c18a8b34db7ab3c6a",
      "parents": [
        "bf0c84f1614bffc59565d04f09b9ac6b1aa269a9"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Dec 09 11:35:14 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 04 13:10:40 2011 -0500"
      },
      "message": "nfs: Set MS_POSIXACL always\n\nWe want to skip VFS applying mode for NFS. So set MS_POSIXACL always\nand selectively use umask. Ideally we would want to use umask only\nwhen we don\u0027t have inheritable ACEs set. But NFS currently don\u0027t\nallow to send umask to the server. So this is best what we can do\nand this is consistent with NFSv3\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bf0c84f1614bffc59565d04f09b9ac6b1aa269a9",
      "tree": "cf310f5baaa323fe902320047f32e0d0c4a8f2a9",
      "parents": [
        "5f3e97c9ee6290befb5a2e78baf95ff951a8a34a"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Dec 28 17:02:46 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 04 13:10:39 2011 -0500"
      },
      "message": "NFS: use ERR_CAST()\n\nUse ERR_CAST() intead of wierd-looking cast.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "573c4e1ef53a6b891b73cc2257e1604da754a2e4",
      "tree": "b1e01ca46472ac6c936c4a144c3a160d8e1595bb",
      "parents": [
        "8111f373600cd43b3198b48b9238e3ad2fd9908d"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Dec 14 14:58:11 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 16 12:37:24 2010 -0500"
      },
      "message": "NFS: Simplify -\u003edecode_dirent() calling sequence\n\nClean up.\n\nThe pointer returned by -\u003edecode_dirent() is no longer used as a\npointer.  The only call site (xdr_decode() in fs/nfs/dir.c) simply\nextracts the errno value encoded in the pointer.  Replace the\nreturned pointer with a standard integer errno return value.\n\nAlso, pass the \"server\" argument as part of the nfs_entry instead of\nas a separate parameter.  It\u0027s faster to derive \"server\" in\nnfs_readdir_xdr_to_array() since we already have the directory\u0027s inode\nhandy.  \"server\" ought to be invariant for a set of entries in the\nsame directory, right?\n\nThe legacy versions of decode_dirent() don\u0027t use \"server\" anyway, so\nit\u0027s wasted work for them to derive and pass \"server\" for each entry.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nTested-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "47c716cbf638a16583441d78be3fc24345eab636",
      "tree": "ee06a3e432e9fdc12438423745674442acbbeb0f",
      "parents": [
        "18fb5fe40ce7f789b5cfc3aa81ff1e6175b0a5be"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 12:44:56 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 14:09:02 2010 -0500"
      },
      "message": "NFS: Readdir cleanups\n\nNo functional changes, but clarify the code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "18fb5fe40ce7f789b5cfc3aa81ff1e6175b0a5be",
      "tree": "e7d191c921142ecb1cb2eba0634cb0c6ba89459d",
      "parents": [
        "11de3b11e08cac26d59e88efaf4e316701883552"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 12:41:58 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 12:41:58 2010 -0500"
      },
      "message": "NFS: nfs_readdir_search_for_cookie() don\u0027t mark as eof if cookie not found\n\nIf we\u0027re searching for a specific cookie, and it isn\u0027t found in the page\ncache, we should try an uncached_readdir(). To do so, we return EBADCOOKIE,\nbut we don\u0027t set desc-\u003eeof.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "11de3b11e08cac26d59e88efaf4e316701883552",
      "tree": "e4cc282e692560897c42c5fbc8df227d5da669d4",
      "parents": [
        "6072d13c429373c5d63b69dadbbef40a9b035552"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 01 14:17:06 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 02 09:58:00 2010 -0500"
      },
      "message": "NFS: Fix a memory leak in nfs_readdir\n\nWe need to ensure that the entries in the nfs_cache_array get cleared\nwhen the page is removed from the page cache. To do so, we use the\nfreepage address_space operation.\n\nChange nfs_readdir_clear_array to use kmap_atomic(), so that the\nfunction can be safely called from all contexts.\n\nFinally, modify the cache_page_release helper to call\nnfs_readdir_clear_array directly, when dealing with an anonymous\npage from \u0027uncached_readdir\u0027.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0aded708d125a3ff7e5abaea9c2d9c6d7ebbfdcd",
      "tree": "124bb3e0e1cd8104f9310f7df224ca00301c10c7",
      "parents": [
        "22a5b566c8c442b0b35b3b106795e2f2b3578096"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Nov 30 21:56:32 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 01 08:16:16 2010 -0500"
      },
      "message": "NFS: Ensure we use the correct cookie in nfs_readdir_xdr_filler\n\nWe need to use the cookie from the previous array entry, not the\nactual cookie that we are searching for (except for the case of\nuncached_readdir).\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "37a09f07459753e7c98d4e21f1c61e8756923f81",
      "tree": "eecab05dc4b4c2de61f4b31f51d301fdcf210737",
      "parents": [
        "e8a7e48bb248a1196484d3f8afa53bded2b24e71"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Nov 30 12:42:34 2010 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 30 10:18:49 2010 -0800"
      },
      "message": "NFS: Fix a readdirplus bug\n\nWhen comparing filehandles in the helper nfs_same_file(), we should not be\nusing \u0027strncmp()\u0027: filehandles are not null terminated strings.\n\nInstead, we should just use the existing helper nfs_compare_fh().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b26a0bf6ff398185546432420bb772bcfdf8d94",
      "tree": "705b94c8662cf18cf8cd18c6b8c68d751d87acb7",
      "parents": [
        "3020093f578fb6c9acc6914dfd887a1ebd1db659"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 14:26:44 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:48 2010 -0500"
      },
      "message": "NFS: Ensure we return the dirent-\u003ed_type when it is known\n\nStore the dirent-\u003ed_type in the struct nfs_cache_array_entry so that we\ncan use it in getdents() calls.\n\nThis fixes a regression with the new readdir code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3020093f578fb6c9acc6914dfd887a1ebd1db659",
      "tree": "473af4f139dcb3975b20bcd9d2e04fb1cadc97b3",
      "parents": [
        "ece0b4233b6b915d1f63add2bd9f2733aec6317a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 15:18:22 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:47 2010 -0500"
      },
      "message": "NFS: Correct the array bound calculation in nfs_readdir_add_to_array\n\nIt looks as if the array size calculation in MAX_READDIR_ARRAY does not\ntake the alignment of struct nfs_cache_array_entry into account.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ece0b4233b6b915d1f63add2bd9f2733aec6317a",
      "tree": "f0f9a2ec50079ccd0c95ddce082648ab25923cfe",
      "parents": [
        "85f8607e163f8d281fb407357279cb4ac6df12e6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 13:55:33 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:47 2010 -0500"
      },
      "message": "NFS: Don\u0027t ignore errors from nfs_do_filldir()\n\nWe should ignore the errors from the filldir callback, and just interpret\nthem as meaning we should exit, however we should definitely pass back\nENOMEM errors.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "85f8607e163f8d281fb407357279cb4ac6df12e6",
      "tree": "abfa44658e17b4c3522aac999c7736f5d4782ff6",
      "parents": [
        "7a8e1dc34f52fd2927dbf7e520d7cd8eadc51336"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 13:24:49 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:46 2010 -0500"
      },
      "message": "NFS: Fix the error handling in \"uncached_readdir()\"\n\nCurrently, uncached_readdir() is broken because if fails to handle\nthe results from nfs_readdir_xdr_to_array() correctly.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7a8e1dc34f52fd2927dbf7e520d7cd8eadc51336",
      "tree": "de5e01e628e0fec4a20e335ef5a3163e307ba3fa",
      "parents": [
        "e7c58e974a0318fcca5368e7b3570e10e9ae9028"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 13:24:46 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:45 2010 -0500"
      },
      "message": "NFS: Fix a page leak in uncached_readdir()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e7c58e974a0318fcca5368e7b3570e10e9ae9028",
      "tree": "de7c5bf4d565ce0365af6fe1d82bd035deb37024",
      "parents": [
        "5c346854d8ce6ca91931f8fc9177934257a667d0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 13:22:24 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:44 2010 -0500"
      },
      "message": "NFS: Fix a page leak in nfs_do_filldir()\n\nnfs_do_filldir() must always free desc-\u003epage when it is done, otherwise\nwe end up leaking the page.\n\nAlso remove unused variable \u0027dentry\u0027.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5c346854d8ce6ca91931f8fc9177934257a667d0",
      "tree": "de10054f20a2bc3a2fc58ca394854d40aebc8654",
      "parents": [
        "463a376eae1c92a66c912af539bfd4bbefa37673"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Nov 20 12:43:45 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 22 13:24:44 2010 -0500"
      },
      "message": "NFS: Assume eof if the server returns no readdir records\n\nSome servers are known to be buggy w.r.t. this. Deal with them...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "04e4bd1c67f941d81bff78a3b6b94194f081b7df",
      "tree": "7f6cd633219bc19d7a716a0c2af4eaae2b5170ba",
      "parents": [
        "94f58df8e545657f0b2d16eca1ac7a4ec39ed6be"
      ],
      "author": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Thu Nov 11 12:53:47 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Nov 16 12:03:14 2010 -0500"
      },
      "message": "nfs: Ignore kmemleak false positive in nfs_readdir_make_qstr\n\nStrings allocated via kmemdup() in nfs_readdir_make_qstr() are\nreferenced from the nfs_cache_array which is stored in a page cache\npage. Kmemleak does not scan such pages and it reports several false\npositives. This patch annotates the string-\u003ename pointer so that\nkmemleak does not consider it a real leak.\n\nSigned-off-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nCc: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ac39612824e1fad8baf82c2841e42b2142af3445",
      "tree": "12a841ca751a50f324dc97963579002943d0c3c9",
      "parents": [
        "8cd51a0ccd1beda4482507769887c0be9d70f8c1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:26:22 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:44:29 2010 -0500"
      },
      "message": "NFS: readdir shouldn\u0027t read beyond the reply returned by the server\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8cd51a0ccd1beda4482507769887c0be9d70f8c1",
      "tree": "3fe5c05dcc6e532641d1be4e797ab869c71c36ad",
      "parents": [
        "23ebbd9acf5756b6eb783df84403e3ab668a6bce"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:26:22 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:44:28 2010 -0500"
      },
      "message": "NFS: Fix a couple of regressions in readdir.\n\nFix up the issue that array-\u003eeof_index needs to be able to be set\neven if array-\u003esize \u003d\u003d 0.\n\nEnsure that we catch all important memory allocation error conditions\nand/or kmap() failures.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "23ebbd9acf5756b6eb783df84403e3ab668a6bce",
      "tree": "11f632c35ccd0569b70811ad7b78c14831697041",
      "parents": [
        "1e657bd51f313d87fbbb22d1edf625dba87ef353"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Nov 03 10:24:16 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 15 20:44:27 2010 -0500"
      },
      "message": "Revert \"NFSv4: Fall back to ordinary lookup if nfs4_atomic_open() returns EISDIR\"\n\nThis reverts commit 80e60639f1b7c121a7fea53920c5a4b94009361a.\n\nThis change requires further fixes to ensure that the open doesn\u0027t\nsucceed if the lookup later results in a regular file being created.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "426e1f5cec4821945642230218876b0e89aafab1",
      "tree": "2728ace018d0698886989da586210ef1543a7098",
      "parents": [
        "9e5fca251f44832cb996961048ea977f80faf6ea",
        "63997e98a3be68d7cec806d22bf9b02b2e1daabb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)\n  split invalidate_inodes()\n  fs: skip I_FREEING inodes in writeback_sb_inodes\n  fs: fold invalidate_list into invalidate_inodes\n  fs: do not drop inode_lock in dispose_list\n  fs: inode split IO and LRU lists\n  fs: switch bdev inode bdi\u0027s correctly\n  fs: fix buffer invalidation in invalidate_list\n  fsnotify: use dget_parent\n  smbfs: use dget_parent\n  exportfs: use dget_parent\n  fs: use RCU read side protection in d_validate\n  fs: clean up dentry lru modification\n  fs: split __shrink_dcache_sb\n  fs: improve DCACHE_REFERENCED usage\n  fs: use percpu counter for nr_dentry and nr_dentry_unused\n  fs: simplify __d_free\n  fs: take dcache_lock inside __d_path\n  fs: do not assign default i_ino in new_inode\n  fs: introduce a per-cpu last_ino allocator\n  new helper: ihold()\n  ...\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4a201d6e3f4253f918555cc7c27c418f8ac1bb65",
      "tree": "9424a999b43f8c4d397f513a32258a64f3bed61a",
      "parents": [
        "82f2e5472e2304e531c2fa85e457f4a71070044e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 14:53:23 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:38 2010 -0400"
      },
      "message": "NFS: Ensure we check all allocation return values in new readdir code\n\nAlso some clean ups.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "82f2e5472e2304e531c2fa85e457f4a71070044e",
      "tree": "45e170b0ec64bcc07e51ae36919ca6cba1163703",
      "parents": [
        "ae42c70a60fe330d9c2af7c4b92ce78484308e37"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Oct 21 16:33:18 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:37 2010 -0400"
      },
      "message": "NFS: Readdir plus in v4\n\nBy requsting more attributes during a readdir, we can mimic the readdir plus\noperation that was in NFSv3.\n\nTo test, I ran the command `ls -lU --color\u003dnone` on directories with various\nnumbers of files.  Without readdir plus, I see this:\n\nn files |    100    |   1,000   |  10,000   |  100,000  | 1,000,000\n--------+-----------+-----------+-----------+-----------+----------\nreal    | 0m00.153s | 0m00.589s | 0m05.601s | 0m56.691s | 9m59.128s\nuser    | 0m00.007s | 0m00.007s | 0m00.077s | 0m00.703s | 0m06.800s\nsys     | 0m00.010s | 0m00.070s | 0m00.633s | 0m06.423s | 1m10.005s\naccess  | 3         | 1         | 1         | 4         | 31\ngetattr | 2         | 1         | 1         | 1         | 1\nlookup  | 104       | 1,003     | 10,003    | 100,003   | 1,000,003\nreaddir | 2         | 16        | 158       | 1,575     | 15,749\ntotal   | 111       | 1,021     | 10,163    | 101,583   | 1,015,784\n\nWith readdir plus enabled, I see this:\n\nn files |    100    |   1,000   |  10,000   |  100,000  | 1,000,000\n--------+-----------+-----------+-----------+-----------+----------\nreal    | 0m00.115s | 0m00.206s | 0m01.079s | 0m12.521s | 2m07.528s\nuser    | 0m00.003s | 0m00.003s | 0m00.040s | 0m00.290s | 0m03.296s\nsys     | 0m00.007s | 0m00.020s | 0m00.120s | 0m01.357s | 0m17.556s\naccess  | 3         | 1         | 1         | 1         | 7\ngetattr | 2         | 1         | 1         | 1         | 1\nlookup  | 4         | 3         | 3         | 3         | 3\nreaddir | 6         | 62        | 630       | 6,300     | 62,993\ntotal   | 15        | 67        | 635       | 6,305     | 63,004\n\nReaddir plus disabled has about a 16x increase in the number of rpc calls and\nis 4 - 5 times slower on large directories.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9942438089d5c0e3adecdcb7bc360b8fe0ce7e62",
      "tree": "6c6fa331811f6c8e5217193276602bd353613061",
      "parents": [
        "3c8a1aeed8fd7f89bd0400fad72cbc1ac3460217"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Oct 21 16:33:16 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:36 2010 -0400"
      },
      "message": "NFS: check xdr_decode for errors\n\nCheck if the decoded entry has the eof bit set when returning from xdr_decode\nwith an error.  If it does, we should set the eof bits in the array before\nreturning.  This should keep us from looping when we expect more data but the\nserver doesn\u0027t give us anything new.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3c8a1aeed8fd7f89bd0400fad72cbc1ac3460217",
      "tree": "7483a41703dafcbc8526c112e3e625c3a881fc99",
      "parents": [
        "56e4ebf877b6043c289bda32a5a7385b80c17dee"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Oct 21 16:33:16 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:35 2010 -0400"
      },
      "message": "NFS: nfs_readdir_filler catch all errors\n\nCheck for all errors, not a specific one.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "56e4ebf877b6043c289bda32a5a7385b80c17dee",
      "tree": "160ae8d5b5ee3871d02a9f5283187430c9ec5ffe",
      "parents": [
        "afa8ccc978c24d8ab22e3b3b8cbd1054c84c070b"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Oct 20 15:44:37 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:35 2010 -0400"
      },
      "message": "NFS: readdir with vmapped pages\n\nWe can use vmapped pages to read more information from the network at once.\nThis will reduce the number of calls needed to complete a readdir.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\n[trondmy: Added #include for linux/vmalloc.h\u003e in fs/nfs/dir.c]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "babddc72a9468884ce1a23db3c3d54b0afa299f0",
      "tree": "b176e5795b47c73c47543acdc546da0c38619ddc",
      "parents": [
        "ba8e452a4fe64a51b74d43761e14d99f0666cc45"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Oct 20 15:44:29 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:33 2010 -0400"
      },
      "message": "NFS: decode_dirent should use an xdr_stream\n\nConvert nfs*xdr.c to use an xdr stream in decode_dirent.  This will prevent a\nkernel oops that has been occuring when reading a vmapped page.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d39ab9de3b80da5835049b1c3b49da4e84e01c07",
      "tree": "8ffd7947d927f94bc467fd509c64d563b6f0110d",
      "parents": [
        "baf57a09e9d87b14be5e2788828169394a2525ab"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Fri Sep 24 18:50:01 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:31 2010 -0400"
      },
      "message": "NFS: re-add readdir plus\n\nThis patch adds readdir plus support to the cache array.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "baf57a09e9d87b14be5e2788828169394a2525ab",
      "tree": "77b35fe3ef7868f3c642093a4a8c01ed6be584cd",
      "parents": [
        "d1bacf9eb2fd0e7ef870acf84b9e3b157dcfa7dc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 24 18:49:43 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:30 2010 -0400"
      },
      "message": "NFS: Optimise the readdir searches\n\nIf we\u0027re going through the loop in nfs_readdir() more than once, we usually\ndo not want to restart searching from the beginning of the pages cache.\n\nWe only want to do that if the previous search failed...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d1bacf9eb2fd0e7ef870acf84b9e3b157dcfa7dc",
      "tree": "8b6746ade07c71f0d40c29b76dbe65e999c038f7",
      "parents": [
        "8c7597f6ce212bbc8ca05090e21820ffe9792b3d"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Fri Sep 24 14:48:42 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:30 2010 -0400"
      },
      "message": "NFS: add readdir cache array\n\nThis patch adds the readdir cache array and functions to retreive the array\nstored on a cache page, clear the array by freeing allocated memory, add an\nentry to the array, and search the array for a given cookie.\n\nIt then modifies readdir to make use of the new cache array.\nWith the new cache array method, we no longer need some of this code.\n\nFinally, nfs_llseek_dir() will set file-\u003ef_pos to a value greater than 0 and\ndesc-\u003edir_cookie to zero.  When we see this, readdir needs to find the file\nat position file-\u003ef_pos from the start of the directory.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "898f635c4297e91ceac675d83c4a460f26118342",
      "tree": "1e6e1d3fb179fffa8f78a094a0db1e31e841ad19",
      "parents": [
        "6eaa61496fb3b93cceface7a296415fc4c030bce"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 11:24:25 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:17 2010 -0400"
      },
      "message": "NFSv4: Don\u0027t ignore the error return codes from nfs_intent_set_file\n\nIf nfs_intent_set_file() returns an error, we usually want to pass that\nback up the stack.\n\nAlso ensure that nfs_open_revalidate() returns \u00271\u0027 on success.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "aa510da5bfe1dfe263215fd0e05dac96e738a782",
      "tree": "23653cea38532e688f593e36295c312158558a79",
      "parents": [
        "a00dd6c03dd97a777c291a8af8682be4b5fadf8d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 29 15:11:56 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 29 15:16:25 2010 -0400"
      },
      "message": "NFS: We must use list_for_each_entry_safe in nfs_access_cache_shrinker\n\nWe may end up removing the current entry from nfs_access_lru_list.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "779c51795bfb35c2403c924b9de90ca9356bc693",
      "tree": "6bdd2e6896425b58df4ec457c583a15af21cb0c4",
      "parents": [
        "e8582a8b96f329083b4da29aa87bc43cc0d80dd1"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Sep 17 17:31:30 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 17:31:30 2010 -0400"
      },
      "message": "nfs: move nfs_sillyrename to unlink.c\n\n...since that\u0027s where most of the sillyrenaming code lives. A comment\nblock is added to the beginning as well to clarify how sillyrenaming\nworks. Also, make nfs_async_unlink static as nfs_sillyrename is the only\ncaller.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2b484297e48c3fbb1846fc6ea10036d9465273e7",
      "tree": "bfd8f5cfba73b597d5277ba48e02fd2c13ece9b3",
      "parents": [
        "c0204fd2b8fe047b18b67e07e1bf2a03691240cd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "message": "NFS: Add an \u0027open_context\u0027 element to struct nfs_rpc_ops\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c0204fd2b8fe047b18b67e07e1bf2a03691240cd",
      "tree": "d6cf75bc11d08f190c0757ba98b5ae6baef49402",
      "parents": [
        "535918f14176396646b5547b7d1353c932f24f5e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "message": "NFS: Clean up nfs4_proc_create()\n\nRemove all remaining references to the struct nameidata from the low level\nNFS layers. Again pass down a partially initialised struct nfs_open_context\nwhen we want to do atomic open+create.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "535918f14176396646b5547b7d1353c932f24f5e",
      "tree": "0736137c736ac8c35cfbdd99a1de68eb556e4b4a",
      "parents": [
        "b8d4caddd871758ffa156be51b4c8be82fea470d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "message": "NFSv4: Further cleanups for nfs4_open_revalidate()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b8d4caddd871758ffa156be51b4c8be82fea470d",
      "tree": "c388304ca2f1163b2737409ccc4cbc2d29ad3f41",
      "parents": [
        "f46e0bd34ec002d0727761da52b8fd47f06d4440"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:51 2010 -0400"
      },
      "message": "NFSv4: Clean up nfs4_open_revalidate\n\nRemove references to \u0027struct nameidata\u0027 from the low-level open_revalidate\ncode, and replace them with a struct nfs_open_context which will be\ncorrectly initialised upon success.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f46e0bd34ec002d0727761da52b8fd47f06d4440",
      "tree": "bb4ce4d00a9857b370765abf6faf89a09f4c4ff4",
      "parents": [
        "cd9a1c0e5ac681871d64804f82291649e2a0accb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "message": "NFSv4: Further minor cleanups for nfs4_atomic_open()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd9a1c0e5ac681871d64804f82291649e2a0accb",
      "tree": "900c2bf6ba75c2a02af07091afcf4ba4cfdb2396",
      "parents": [
        "859d5024f450686ad0a42ed3c06f2fa20295c9e6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "message": "NFSv4: Clean up nfs4_atomic_open\n\nStart moving the \u0027struct nameidata\u0027 dependent code out of the lower level\nNFS code in preparation for the removal of open intents.\n\nInstead of the struct nameidata, we pass down a partially initialised\nstruct nfs_open_context that will be fully initialised by the atomic open\nupon success.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0a377cff9428af2da2b293d11e07bc4dbf064ee5",
      "tree": "af97cd65f7e662bef87866b6a876831416f60a1f",
      "parents": [
        "df486a25900f4dba9cdc3886c4ac871951c6aef3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 18 09:25:42 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 18 09:25:42 2010 -0400"
      },
      "message": "NFS: Fix an Oops in the NFSv4 atomic open code\n\nAdam Lackorzynski reports:\n\nwith 2.6.35.2 I\u0027m getting this reproducible Oops:\n\n[  110.825396] BUG: unable to handle kernel NULL pointer dereference at\n(null)\n[  110.828638] IP: [\u003cffffffff811247b7\u003e] encode_attrs+0x1a/0x2a4\n[  110.828638] PGD be89f067 PUD bf18f067 PMD 0\n[  110.828638] Oops: 0000 [#1] SMP\n[  110.828638] last sysfs file: /sys/class/net/lo/operstate\n[  110.828638] CPU 2\n[  110.828638] Modules linked in: rtc_cmos rtc_core rtc_lib amd64_edac_mod\ni2c_amd756 edac_core i2c_core dm_mirror dm_region_hash dm_log dm_snapshot\nsg sr_mod usb_storage ohci_hcd mptspi tg3 mptscsih mptbase usbcore nls_base\n[last unloaded: scsi_wait_scan]\n[  110.828638]\n[  110.828638] Pid: 11264, comm: setchecksum Not tainted 2.6.35.2 #1\n[  110.828638] RIP: 0010:[\u003cffffffff811247b7\u003e]  [\u003cffffffff811247b7\u003e]\nencode_attrs+0x1a/0x2a4\n[  110.828638] RSP: 0000:ffff88003bf5b878  EFLAGS: 00010296\n[  110.828638] RAX: ffff8800bddb48a8 RBX: ffff88003bf5bb18 RCX:\n0000000000000000\n[  110.828638] RDX: ffff8800be258800 RSI: 0000000000000000 RDI:\nffff88003bf5b9f8\n[  110.828638] RBP: 0000000000000000 R08: ffff8800bddb48a8 R09:\n0000000000000004\n[  110.828638] R10: 0000000000000003 R11: ffff8800be779000 R12:\nffff8800be258800\n[  110.828638] R13: ffff88003bf5b9f8 R14: ffff88003bf5bb20 R15:\nffff8800be258800\n[  110.828638] FS:  0000000000000000(0000) GS:ffff880041e00000(0063)\nknlGS:00000000556bd6b0\n[  110.828638] CS:  0010 DS: 002b ES: 002b CR0: 000000008005003b\n[  110.828638] CR2: 0000000000000000 CR3: 00000000be8ef000 CR4:\n00000000000006e0\n[  110.828638] DR0: 0000000000000000 DR1: 0000000000000000 DR2:\n0000000000000000\n[  110.828638] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7:\n0000000000000400\n[  110.828638] Process setchecksum (pid: 11264, threadinfo\nffff88003bf5a000, task ffff88003f232210)\n[  110.828638] Stack:\n[  110.828638]  0000000000000000 ffff8800bfbcf920 0000000000000000\n0000000000000ffe\n[  110.828638] \u003c0\u003e 0000000000000000 0000000000000000 0000000000000000\n0000000000000000\n[  110.828638] \u003c0\u003e 0000000000000000 0000000000000000 0000000000000000\n0000000000000000\n[  110.828638] Call Trace:\n[  110.828638]  [\u003cffffffff81124c1f\u003e] ? nfs4_xdr_enc_setattr+0x90/0xb4\n[  110.828638]  [\u003cffffffff81371161\u003e] ? call_transmit+0x1c3/0x24a\n[  110.828638]  [\u003cffffffff813774d9\u003e] ? __rpc_execute+0x78/0x22a\n[  110.828638]  [\u003cffffffff81371a91\u003e] ? rpc_run_task+0x21/0x2b\n[  110.828638]  [\u003cffffffff81371b7e\u003e] ? rpc_call_sync+0x3d/0x5d\n[  110.828638]  [\u003cffffffff8111e284\u003e] ? _nfs4_do_setattr+0x11b/0x147\n[  110.828638]  [\u003cffffffff81109466\u003e] ? nfs_init_locked+0x0/0x32\n[  110.828638]  [\u003cffffffff810ac521\u003e] ? ifind+0x4e/0x90\n[  110.828638]  [\u003cffffffff8111e2fb\u003e] ? nfs4_do_setattr+0x4b/0x6e\n[  110.828638]  [\u003cffffffff8111e634\u003e] ? nfs4_do_open+0x291/0x3a6\n[  110.828638]  [\u003cffffffff8111ed81\u003e] ? nfs4_open_revalidate+0x63/0x14a\n[  110.828638]  [\u003cffffffff811056c4\u003e] ? nfs_open_revalidate+0xd7/0x161\n[  110.828638]  [\u003cffffffff810a2de4\u003e] ? do_lookup+0x1a4/0x201\n[  110.828638]  [\u003cffffffff810a4733\u003e] ? link_path_walk+0x6a/0x9d5\n[  110.828638]  [\u003cffffffff810a42b6\u003e] ? do_last+0x17b/0x58e\n[  110.828638]  [\u003cffffffff810a5fbe\u003e] ? do_filp_open+0x1bd/0x56e\n[  110.828638]  [\u003cffffffff811cd5e0\u003e] ? _atomic_dec_and_lock+0x30/0x48\n[  110.828638]  [\u003cffffffff810a9b1b\u003e] ? dput+0x37/0x152\n[  110.828638]  [\u003cffffffff810ae063\u003e] ? alloc_fd+0x69/0x10a\n[  110.828638]  [\u003cffffffff81099f39\u003e] ? do_sys_open+0x56/0x100\n[  110.828638]  [\u003cffffffff81027a22\u003e] ? ia32_sysret+0x0/0x5\n[  110.828638] Code: 83 f1 01 e8 f5 ca ff ff 48 83 c4 50 5b 5d 41 5c c3 41\n57 41 56 41 55 49 89 fd 41 54 49 89 d4 55 48 89 f5 53 48 81 ec 18 01 00 00\n\u003c8b\u003e 06 89 c2 83 e2 08 83 fa 01 19 db 83 e3 f8 83 c3 18 a8 01 8d\n[  110.828638] RIP  [\u003cffffffff811247b7\u003e] encode_attrs+0x1a/0x2a4\n[  110.828638]  RSP \u003cffff88003bf5b878\u003e\n[  110.828638] CR2: 0000000000000000\n[  112.840396] ---[ end trace 95282e83fd77358f ]---\n\nWe need to ensure that the O_EXCL flag is turned off if the user doesn\u0027t\nset O_CREAT.\n\nCc: stable@kernel.org\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f5a73672d1811f2fb1dcb62ca90ceb12b2050ae7",
      "tree": "f9d8798abbcbb6df399dea3d718ded7b2b2b5270",
      "parents": [
        "669502ff31d7dba1849aec7ee2450a3c61f57d39"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 10 10:20:05 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 10 10:20:05 2010 -0400"
      },
      "message": "NFS: allow close-to-open cache semantics to apply to root of NFS filesystem\n\n\n\nTo obey NFS cache semantics, the client must verify the cached\nattributes when a file is opened.  In most cases this is done by a call to\nd_validate as one of the last steps in path_walk.\n\nHowever for the root of a filesystem, d_validate is only ever called\non the mounted-on filesystem (except when the path ends \u0027.\u0027 or \u0027..\u0027).\nSo NFS has no chance to validate the attributes.\n\nSo, in nfs_opendir, we revalidate the attributes if the opened\ndirectory is the mountpoint.  This may cause double-validation for \".\"\nand \"..\" lookups, but that is better than missing regular /path/name\nlookups completely.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5df6b8e65ad0f2eaee202ff002ac00d1ac605315",
      "tree": "2eff6606f8e39dc1fd7eb8a05feb2a9927151805",
      "parents": [
        "fe21ea18c742ab0eb8f6f8ebc543374839a02a87",
        "3dce9a5c3a39a664e372886ea86c42ae7ae33dfc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:19:36 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:19:36 2010 -0700"
      },
      "message": "Merge branch \u0027nfs-for-2.6.36\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.36\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (42 commits)\n  NFS: NFSv4.1 is no longer a \"developer only\" feature\n  NFS: NFS_V4 is no longer an EXPERIMENTAL feature\n  NFS: Fix /proc/mount for legacy binary interface\n  NFS: Fix the locking in nfs4_callback_getattr\n  SUNRPC: Defer deleting the security context until gss_do_free_ctx()\n  SUNRPC: prevent task_cleanup running on freed xprt\n  SUNRPC: Reduce asynchronous RPC task stack usage\n  SUNRPC: Move the bound cred to struct rpc_rqst\n  SUNRPC: Clean up of rpc_bindcred()\n  SUNRPC: Move remaining RPC client related task initialisation into clnt.c\n  SUNRPC: Ensure that rpc_exit() always wakes up a sleeping task\n  SUNRPC: Make the credential cache hashtable size configurable\n  SUNRPC: Store the hashtable size in struct rpc_cred_cache\n  NFS: Ensure the AUTH_UNIX credcache is allocated dynamically\n  NFS: Fix the NFS users of rpc_restart_call()\n  SUNRPC: The function rpc_restart_call() should return success/failure\n  NFSv4: Get rid of the bogus RPC_ASSASSINATED(task) checks\n  NFSv4: Clean up the process of renewing the NFSv4 lease\n  NFSv4.1: Handle NFS4ERR_DELAY on SEQUENCE correctly\n  NFS: nfs_rename() should not have to flush out writebacks\n  ...\n"
    },
    {
      "commit": "0a8ebba943dd89bdd57c5dab5a66932f690847d9",
      "tree": "b7ef484c9ecb62ebae09c6739fe016d9954cf243",
      "parents": [
        "1b924e5f878e3cd62a20bd8dbf3b911a40185a99"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 31 14:29:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 03 22:06:41 2010 -0400"
      },
      "message": "NFS: nfs_rename() should not have to flush out writebacks\n\nWe don\u0027t really support nfs servers that invalidate the file handle after a\nrename, so precautions such as flushing out dirty data before renaming the\nfile are superfluous.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9cfcac810e8993fa7a5bfd24b1a21f1dbbb03a7b",
      "tree": "86fae80c744e46b15b8eb9aa23fead7e63a64159",
      "parents": [
        "692a8a231b212dfc68f612956d63f34abf098e0f"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Jul 23 11:43:51 2010 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Aug 02 15:35:06 2010 +1000"
      },
      "message": "vfs: re-introduce MAY_CHDIR\n\nCurrently MAY_ACCESS means that filesystems must check the permissions\nright then and not rely on cached results or the results of future\noperations on the object.  This can be because of a call to sys_access() or\nbecause of a call to chdir() which needs to check search without relying on\nany future operations inside that dir.  I plan to use MAY_ACCESS for other\npurposes in the security system, so I split the MAY_ACCESS and the\nMAY_CHDIR cases.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by:  Stephen D. Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "7f8275d0d660c146de6ee3017e1e2e594c49e820",
      "tree": "884db927118b44102750b5168ee36ef4b8b5cb4e",
      "parents": [
        "d0c6f6258478e1dba532bf7c28e2cd6e1047d3a4"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "message": "mm: add context argument to shrinker callback\n\nThe current shrinker implementation requires the registered callback\nto have global state to work from. This makes it difficult to shrink\ncaches that are not global (e.g. per-filesystem caches). Pass the shrinker\nstructure to the callback so that users can embed the shrinker structure\nin the context the shrinker needs to operate on and get back to it in the\ncallback via container_of().\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "7ea8085910ef3dd4f3cad6845aaa2b580d39b115",
      "tree": "d9c1edb5906f943f7d70bfb4b65106e29772d379",
      "parents": [
        "cc967be54710d97c05229b2e5ba2d00df84ddd64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:25 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:05:02 2010 -0400"
      },
      "message": "drop unused dentry argument to -\u003efsync\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "59844a9bd73e084b0ffefc0e13226098e28c71ad",
      "tree": "7b897c2530fe7083d57755df684d1d808fb18f8b",
      "parents": [
        "0a68b0bed08eeb7ec62e0125f17856b1ccb1ea4b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:42:24 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:43:51 2010 -0400"
      },
      "message": "NFS: Fix a lock imbalance typo in nfs_access_cache_shrinker\n\nCommit 9c7e7e23371e629dbb3b341610a418cdf1c19d91 (NFS: Don\u0027t call iput() in\nnfs_access_cache_shrinker) unintentionally removed the spin unlock for the\ninode-\u003ei_lock.\n\nReported-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9c7e7e23371e629dbb3b341610a418cdf1c19d91",
      "tree": "c211183b99860d232500bf99d12775e47c4f0f9c",
      "parents": [
        "1a81bb8a1fa62ccb9b2411ac10ce702ca4ed302a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:36 2010 -0400"
      },
      "message": "NFS: Don\u0027t call iput() in nfs_access_cache_shrinker\n\niput() can potentially attempt to allocate memory, so we should avoid\ncalling it in a memory shrinker. Instead, rely on the fact that iput() will\ncall nfs_access_zap_cache().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1a81bb8a1fa62ccb9b2411ac10ce702ca4ed302a",
      "tree": "7a4d29a36c2646b8cdd67d50f3b7778636e1dfbe",
      "parents": [
        "61d5eb2985b3b1d69fd53d7dc9789037c27f8d91"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:35 2010 -0400"
      },
      "message": "NFS: Clean up nfs_access_zap_cache()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "61d5eb2985b3b1d69fd53d7dc9789037c27f8d91",
      "tree": "6e73d0e7adcda510ec47d0cd50c57d4461e7fbdf",
      "parents": [
        "20673406534176ead9b984a84b662928110f77b1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 13 12:51:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:35 2010 -0400"
      },
      "message": "NFS: Don\u0027t run nfs_access_cache_shrinker() when the mask is GFP_NOFS\n\nBoth iput() and put_rpccred() might allocate memory under certain\ncircumstances, so make sure that we don\u0027t recurse and deadlock...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "aa49b4cf7dbf45438563f0ff6a2d23a68b70a7b9",
      "tree": "39304ffe1812f5407dc20bc77c6dccfa2d060912",
      "parents": [
        "011fff7239eb90e33e7bebba48bf596fced06eb9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:49 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:25 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs_readdir()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e1fb4d05d5a3265f1f6769bee034175f91ecc2dd",
      "tree": "b5a1d30b2f57e0b9c1d021ed653030fb5c699147",
      "parents": [
        "364d015e5208e4669a4ae9fab2ab104ff26bc159"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:47 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:23 2010 -0400"
      },
      "message": "NFS: Reduce the stack footprint of nfs_lookup\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "27fb8d7b1fe7c2fa2d7c1f243b899793e1b080e0",
      "tree": "25a8ca59a3743459bbd48674731becea89a16318",
      "parents": [
        "f80a0ca6ad8f2800453e819dafa09a0ed9e56850",
        "9699eda6bc1f708a28acb716e1477aa351362fe2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 10:23:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 10:23:44 2010 -0700"
      },
      "message": "Merge branch \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:\n  nfs: fix memory leak in nfs_get_sb with CONFIG_NFS_V4\n  nfs: fix some issues in nfs41_proc_reclaim_complete()\n  NFS: Ensure that nfs_wb_page() waits for Pg_writeback to clear\n  NFS: Fix an unstable write data integrity race\n  nfs: testing for null instead of ERR_PTR()\n  NFS: rsize and wsize settings ignored on v4 mounts\n  NFSv4: Don\u0027t attempt an atomic open if the file is a mountpoint\n  SUNRPC: Fix a bug in rpcauth_prune_expired\n"
    },
    {
      "commit": "d9e80b7de91db05c1c4d2e5ebbfd70b3b3ba0e0f",
      "tree": "0ca15a8b9250337c810e18756422c17b5f651b08",
      "parents": [
        "1d16b0f2f3edf05f12a9e3960588e0d4854157bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Thu Apr 29 03:10:43 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 28 20:40:03 2010 -0700"
      },
      "message": "nfs d_revalidate() is too trigger-happy with d_drop()\n\nIf dentry found stale happens to be a root of disconnected tree, we\ncan\u0027t d_drop() it; its d_hash is actually part of s_anon and d_drop()\nwould simply hide it from shrink_dcache_for_umount(), leading to\nall sorts of fun, including busy inodes on umount and oopsen after\nthat.\n\nBug had been there since at least 2006 (commit c636eb already has it),\nso it\u0027s definitely -stable fodder.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1f063d2cdf332a8a5722006b1345d15d16007c6e",
      "tree": "4295c3fd46390f12e1ed2354998a91007f85fb13",
      "parents": [
        "3d7b08945e54a3a5358d5890240619a013cb7388"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 22 15:35:55 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 22 15:35:55 2010 -0400"
      },
      "message": "NFSv4: Don\u0027t attempt an atomic open if the file is a mountpoint\n\nFix https://bugzilla.kernel.org/show_bug.cgi?id\u003d15789\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "80e60639f1b7c121a7fea53920c5a4b94009361a",
      "tree": "ee7f01512859dd5d5ff5d46b37a79d88bfc3af4c",
      "parents": [
        "0eddb519b9127c73d53db4bf3ec1d45b13f844d1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 25 13:51:05 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:08:16 2010 -0400"
      },
      "message": "NFSv4: Fall back to ordinary lookup if nfs4_atomic_open() returns EISDIR\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b4d2314bb88b07e5a04e6c75b442a1dfcd60e340",
      "tree": "9727944bf30a47cf02f9b9547adcaeafeee25843",
      "parents": [
        "49697ee79242d5f8ac88f1ebc62e583d16bcc687"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 10 15:21:44 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 10 15:21:44 2010 -0500"
      },
      "message": "NFSv4: Don\u0027t ignore the NFS_INO_REVAL_FORCED flag in nfs_revalidate_inode()\n\nIf the NFS_INO_REVAL_FORCED flag is set, that means that we don\u0027t yet have\nan up to date attribute cache. Even if we hold a delegation, we must\nput a GETATTR on the wire.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "1cda707d52e51a6cafac0aef12d2bd7052d572e6",
      "tree": "7a63b005631cca98f62ea199fef739eddce85d32",
      "parents": [
        "5cf95214ccb915591e2214f81de4659302d3e452"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:30 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:56 2010 -0500"
      },
      "message": "NFS: Remove requirement for inode-\u003ei_mutex from nfs_invalidate_mapping\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "56335936de1a41c8978fde62b2158af77ddc7258",
      "tree": "f0061bef629a1c6a14e08f1b660b3beca0adc7cd",
      "parents": [
        "6c8530993e1fdf1d6af0403e796fe14d80b4b097"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Wed Jan 06 18:48:26 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 06 18:48:26 2010 -0500"
      },
      "message": "nfs: fix oops in nfs_rename()\n\nRecent change is missing to update \"rehash\".  With that change, it will\nbecome the cause of adding dentry to hash twice.\n\nThis explains the reason of Oops (dereference the freed dentry in\n__d_lookup()) on my machine.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nReported-by: Marvin \u003cmarvin24@gmx.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "24e93025ee434a58d35e5abb283c5bcc9a13e477",
      "tree": "f187100fdb63afb537e209c62e9c6bb5a95fc46b",
      "parents": [
        "27226104e60964f21717e0f452cecd45c85a64c6"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "message": "nfs: clean up sillyrenaming in nfs_rename()\n\nThe d_instantiate(new_dentry, NULL) is superfluous, the dentry is\nalready negative.  Rehashing this dummy dentry isn\u0027t needed either,\nd_move() works fine on an unhashed target.\n\nThe re-checking for busy after a failed nfs_sillyrename() is bogus\ntoo: new_dentry-\u003ed_count \u003c 2 would be a bug here.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "27226104e60964f21717e0f452cecd45c85a64c6",
      "tree": "fc0bf5aea3d316034a9d51ce00a135e9ddbce5f2",
      "parents": [
        "28f79a1a695e7a5b00af3b6713b449e08581ffbb"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "message": "nfs: dont unhash target if renaming a directory\n\nMove unhashing the target to after the check for existence and being a\nnon-directory.\n\nIf renaming a directory then the VFS already unhashes the target if it\nis not busy.  If it\u0027s busy then acquiring more references during the\nrename makes no difference.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "28f79a1a695e7a5b00af3b6713b449e08581ffbb",
      "tree": "e843f269eebb716a69a71dd51fec769c30d6efc9",
      "parents": [
        "e48de5ec25b37d42292c876c1d3337766aae89bd"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "message": "nfs: fix comments in nfs_rename()\n\nComments are wrong or out of date.  In particular d_drop() doesn\u0027t\nfree the inode it just unhashes the dentry.  And if target is a\ndirectory then it is not checked for being busy.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e48de5ec25b37d42292c876c1d3337766aae89bd",
      "tree": "de35cc77f7d99de0c3962a213a2b4c5385065987",
      "parents": [
        "9c4c761a629caa5572c1a29a8288416070d5d6b7"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 03 15:58:56 2009 -0500"
      },
      "message": "nfs: remove unnecessary check from nfs_rename()\n\nVFS already checks if both source and target are directories.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "9a3936aac133037f65124fcb2d676a6c201a90a4"
}
