)]}'
{
  "log": [
    {
      "commit": "d7cf8dd01289b3c64057e38d34c2857f6633d52c",
      "tree": "600143a42314da064fc0b8dec236c85f2f45d16b",
      "parents": [
        "a8ce4a8f37fef0a09a1e920c2e09f67a80426c7e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:42:46 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:30 2010 -0400"
      },
      "message": "NFSv4: Allow attribute caching with \u0027noac\u0027 mounts if client holds a delegation\n\nIf the server has given us a delegation on a file, we _know_ that we can\ncache the attribute information even when the user has specified \u0027noac\u0027.\n\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "987f8dfc9862f2c7b59594089793dedeebf0cf5e",
      "tree": "2aa0d3687898edcf26b81770e356a90a3358f9df",
      "parents": [
        "0ab64e0e147e45c07e33d344401cf898a6c181c0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:52 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:27 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs_setattr()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a3cba2aad9c0a63279716d377efbf37c176ed400",
      "tree": "fdd2291d67c611947bb93022ff8e2d17a093f4ae",
      "parents": [
        "c407d41a1612aa487f5a9cb5338ed7dc60fe1da2"
      ],
      "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:24 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs_revalidate_inode()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2d36bfde8565b315e624302d12da5a7c9d195522",
      "tree": "5760ff58853027df0343c6bab0530025cd7a6fa1",
      "parents": [
        "fc54a0c65fc8cae6b0355512f0b619c1515e7d7f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:45 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:21 2010 -0400"
      },
      "message": "NFS: Add helper functions for allocating filehandles and fattr structs\n\nNFS Filehandles and struct fattr are really too large to be allocated on\nthe stack. This patch adds in a couple of helper functions to allocate them\ndynamically instead.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1544fa0f7a46241582abc48f07b74f3d846379e4",
      "tree": "2557435df56c5beadf9ad8c3dabc93b07a78aed9",
      "parents": [
        "80e60639f1b7c121a7fea53920c5a4b94009361a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 25 13:54:49 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:08:16 2010 -0400"
      },
      "message": "NFS: Fix the mode calculation in nfs_find_open_context\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "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": "3fa04ecd72780da31ba8b329e148179bc24a9c7d",
      "tree": "f5d462fd4aee086952d18f159f737c450ab46b3b",
      "parents": [
        "180b62a3d837613fcac3ce89576526423926c3c3",
        "1cda707d52e51a6cafac0aef12d2bd7052d572e6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:46:18 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:46:18 2010 -0500"
      },
      "message": "Merge branch \u0027writeback-for-2.6.34\u0027 into nfs-for-2.6.34\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": "5cf95214ccb915591e2214f81de4659302d3e452",
      "tree": "3afcc0d8db911b117a3537846d81d5a5172827cc",
      "parents": [
        "7f2f12d963e7c33a93bfb0b22f0178eb1e6a4196"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:29 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:56 2010 -0500"
      },
      "message": "NFS: Clean up nfs_sync_mapping\n\nRemove the redundant call to filemap_write_and_wait().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "acdc53b2146c7ee67feb1f02f7bc3020126514b8",
      "tree": "3d8b087e8526c4caed87229fe12c2a2b261dd0a5",
      "parents": [
        "c988950eb6dd6f8e6d98503ca094622729e9aa13"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:26 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:55 2010 -0500"
      },
      "message": "NFS: Replace __nfs_write_mapping with sync_inode()\n\nNow that we have correct COMMIT semantics in writeback_single_inode, we can\nreduce and simplify nfs_wb_all(). Also replace nfs_wb_nocommit() with a\ncall to filemap_write_and_wait(), which doesn\u0027t need to hold the\ninode-\u003ei_mutex.\n\nWith that done, we can eliminate nfs_write_mapping() altogether.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ff778d02bf867e1733a09b34ad6dbb723b024814",
      "tree": "d22e33628b93f31c08089a3bf0ec4cc00a409b7a",
      "parents": [
        "8fc795f703c5138e1a8bfb88c69f52632031aa6a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 16:53:39 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:54 2010 -0500"
      },
      "message": "NFS: Add a count of the number of unstable writes carried by an inode\n\nIn order to know when we should do opportunistic commits of the unstable\nwrites, when the VM is doing a background flush, we add a field to count\nthe number of unstable writes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8fc795f703c5138e1a8bfb88c69f52632031aa6a",
      "tree": "aed975562fe5557ff552bc0fe45b5d2b6f5e56c9",
      "parents": [
        "9467c4fdd66f6810cecef0f1173330f3c6e67d45"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 16:46:56 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:53 2010 -0500"
      },
      "message": "NFS: Cleanup - move nfs_write_inode() into fs/nfs/write.c\n\nThe sole purpose of nfs_write_inode is to commit unstable writes, so\nmove it into fs/nfs/write.c, and make nfs_commit_inode static.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a9185b41a4f84971b930c519f0c63bd450c4810d",
      "tree": "268cf4e206cca12fb9e1dd68984e7c190e465b46",
      "parents": [
        "26821ed40b4230259e770c9911180f38fcaa6f59"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:37 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:52 2010 -0500"
      },
      "message": "pass writeback_control to -\u003ewrite_inode\n\nThis gives the filesystem more information about the writeback that\nis happening.  Trond requested this for the NFS unstable write handling,\nand other filesystems might benefit from this too by beeing able to\ndistinguish between the different callers in more detail.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "26821ed40b4230259e770c9911180f38fcaa6f59",
      "tree": "40cd0fed705ec59dd3c909b96452bae1fc532796",
      "parents": [
        "64ba9926759792cf7b95f823402e2781edd1b5d4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:21 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:10 2010 -0500"
      },
      "message": "make sure data is on disk before calling -\u003ewrite_inode\n\nSimilar to the fsync issue fixed a while ago in commit\n2daea67e966dc0c42067ebea015ddac6834cef88 we need to write for data to\nactually hit the disk before writing out the metadata to guarantee\ndata integrity for filesystems that modify the inode in the data I/O\ncompletion path.  Currently XFS and NFS handle this manually, and AFS\nhas a write_inode method that does nothing but waiting for data, while\nothers are possibly missing out on this.\n\nFortunately this change has a lot less impact than the fsync change\nas none of the write_inode methods starts data writeout of any form\nby itself.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6eae7974d0490a9dbc3091f702ea1650871652a9",
      "tree": "0882fbc397ee3b54d12a78b256354fc9f2b4cc96",
      "parents": [
        "2096f759abcb42200a81d776f597362fd9265024"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 30 13:44:07 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 14:07:56 2010 -0500"
      },
      "message": "Switch alloc_nfs_open_context() to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f895c53f8ace3c3e49ebf9def90e63fc6d46d2bf",
      "tree": "93a6c17949a0e0bf194127be7cd0fa2a3bdd300f",
      "parents": [
        "7e381172cf6e0282a56374e50667515aed55166a"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Feb 01 14:17:50 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 10 08:31:05 2010 -0500"
      },
      "message": "NFS: Make close(2) asynchronous when closing NFS O_DIRECT files\n\nFor NFSv2 and v3:\n\nO_DIRECT writes are always synchronous, and aren\u0027t cached, so nothing\nshould be flushed when closing an NFS O_DIRECT file descriptor.  Thus\nthere are no write errors to report on close(2).\n\nIn addition, there\u0027s no cached data to verify on the next open(2),\nso we don\u0027t need clean GETATTR results at close time to compare with.\n\nThus, there\u0027s no need for the nfs_revalidate_inode() call when closing\nan NFS O_DIRECT file.  This reduces the number of synchronous\non-the-wire requests for a simple open-write-close of an NFS O_DIRECT\nfile by roughly 20%.\n\nFor NFSv4:\n\nCall nfs4_do_close() with wait set to zero when closing an NFS\nO_DIRECT file.  The CLOSE will go on the wire, but the application\nwon\u0027t wait for it to complete.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9b4b351346b41d923d69adec865814fdaac4dba9",
      "tree": "b35229c40aa9e3b3ac4806f64b2fc941974cf270",
      "parents": [
        "387c149b54b4321cbc790dadbd4f8eedb5a90468"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 03 08:27:35 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 03 08:27:35 2010 -0500"
      },
      "message": "NFS: Don\u0027t clobber the attribute type in nfs_update_inode()\n\nIf the NFS_ATTR_FATTR_TYPE field isn\u0027t set in fattr-\u003evalid, then we should\nnot set the S_IFMT part of inode-\u003ei_mode.\n\nReported-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c08d3b0e33edce28e9cfa7b64f7fe5bdeeb29248",
      "tree": "6c161cc57a2873e6f91335113192a99531901cd8",
      "parents": [
        "25d9e2d15286281ec834b829a4aaf8969011f1cd"
      ],
      "author": {
        "name": "npiggin@suse.de",
        "email": "npiggin@suse.de",
        "time": "Fri Aug 21 02:35:06 2009 +1000"
      },
      "committer": {
        "name": "al",
        "email": "al@dizzy.pdmi.ras.ru",
        "time": "Thu Sep 24 08:41:47 2009 -0400"
      },
      "message": "truncate: use new helpers\n\nUpdate some fs code to make use of new helper functions introduced\nin the previous patch. Should be no significant change in behaviour\n(except CIFS now calls send_sig under i_lock, via inode_newsize_ok).\n\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: linux-nfs@vger.kernel.org\nCc: Trond.Myklebust@netapp.com\nCc: linux-cifs-client@lists.samba.org\nCc: sfrench@samba.org\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e571cbf1a4f8d8b6cfd4898df718dae84c75a8e1",
      "tree": "0fc9da9692a1e63cff03053fc87cc807fab5e266",
      "parents": [
        "96c61cbd0f30496bfa57ed80f7131a57aea3e4de"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 19 18:12:27 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 19 18:22:15 2009 -0400"
      },
      "message": "NFS: Add a dns resolver for use with NFSv4 referrals and migration\n\nThe NFSv4 and NFSv4.1 protocols both allow for the redirection of a client\nfrom one server to another in order to support filesystem migration and\nreplication. For full protocol support, we need to add the ability to\nconvert a DNS host name into an IP address that we can feed to the RPC\nclient.\n\nWe\u0027ll reuse the sunrpc cache, now that it has been converted to work with\nrpc_pipefs.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "62ab460cf5e450e1d207a98a9c6cf2e4a6a78fd1",
      "tree": "595ca70261f46b93bda1998285e5f5c7da684cbc",
      "parents": [
        "a78cb57a106fceeba26da2907db9d8886700e1dc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:06:19 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:06:19 2009 -0400"
      },
      "message": "NFSv4: Add \u0027server capability\u0027 flags for NFSv4 recommended attributes\n\nIf the NFSv4 server doesn\u0027t support a POSIX attribute, the generic NFS code\nneeds to know that, so that it don\u0027t keep trying to poll for it.\n\nHowever, by the same count, if the NFSv4 server does support that\nattribute, then we should ensure that the inode metadata is appropriately\nlabelled as being untrusted. For instance, if we don\u0027t know the correct\nvalue of the file\u0027s uid, we should certainly not be caching ACLs or ACCESS\nresults.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef79c097bbe9724e13937271b3457df560e00370",
      "tree": "a8671781cc0c9deb85fa76a8b4211c5e693b4343",
      "parents": [
        "10329a5d48f5abc14a37d30b706e330f8598297a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "message": "NFS: Use local disk inode cache\n\nBind data storage objects in the local cache to NFS inodes.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "8ec442ae4c6577ed181682e534d4eef524e30b3c",
      "tree": "44fb9013929f7227781525d1904ac16d6723ce6e",
      "parents": [
        "3b9ce977b2f31b6c396b6fb620df9881a30fac9d"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:42 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:42 2009 +0100"
      },
      "message": "NFS: Register NFS for caching and retrieve the top-level index\n\nRegister NFS for caching and retrieve the top-level cache index object cookie.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "7fe5c398fc2186ed586db11106a6692d871d0d58",
      "tree": "1133bd775a23fb07ca759e4d6c44132c14576b75",
      "parents": [
        "b1e4adf4ea41bb8b5a7bfc1a7001f137e65495df"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:35:50 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:35:50 2009 -0400"
      },
      "message": "NFS: Optimise NFS close()\n\nClose-to-open cache consistency rules really only require us to flush out\nwrites on calls to close(), and require us to revalidate attributes on the\nvery last close of the file.\n\nCurrently we appear to be doing a lot of extra attribute revalidation\nand cache flushes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "72cb77f4a5ace37b12dcb47a0e8637a2c28ad881",
      "tree": "62fbdd7a34884f3ea9e1b0ba6bd5a4d78263f847",
      "parents": [
        "fb8a1f11b64e213d94dfa1cebb2a42a7b8c115c4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:30 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:30 2009 -0400"
      },
      "message": "NFS: Throttle page dirtying while we\u0027re flushing to disk\n\nThe following patch is a combination of a patch by myself and Peter\nStaubach.\n\nTrond: If we allow other processes to dirty pages while a process is doing\na consistency sync to disk, we can end up never making progress.\n\nPeter: Attached is a patch which addresses a continuing problem with\nthe NFS client generating out of order WRITE requests.  While\nthis is compliant with all of the current protocol\nspecifications, there are servers in the market which can not\nhandle out of order WRITE requests very well.  Also, this may\nlead to sub-optimal block allocations in the underlying file\nsystem on the server.  This may cause the read throughputs to\nbe reduced when reading the file from the server.\n\nPeter: There has been a lot of work recently done to address out of\norder issues on a systemic level.  However, the NFS client is\nstill susceptible to the problem.  Out of order WRITE\nrequests can occur when pdflush is in the middle of writing\nout pages while the process dirtying the pages calls\ngeneric_file_buffered_write which calls\ngeneric_perform_write which calls\nbalance_dirty_pages_rate_limited which ends up calling\nwriteback_inodes which ends up calling back into the NFS\nclient to writes out dirty pages for the same file that\npdflush happens to be working with.\n\nSigned-off-by: Peter Staubach \u003cstaubach@redhat.com\u003e\n[modification by Trond to merge the two similar patches]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fb8a1f11b64e213d94dfa1cebb2a42a7b8c115c4",
      "tree": "4b21038fae0e1a8a763d4118bd6543dc77e9b5aa",
      "parents": [
        "a65318bf3afc93ce49227e849d213799b072c5fd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:29 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:29 2009 -0400"
      },
      "message": "NFS: cleanup - remove struct nfs_inode-\u003encommit\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9e6e70f8d8b6698e0017c56b86525aabe9c7cd4c",
      "tree": "3364c61dc3fdb1cc69b18e0cf16947abc49c0be5",
      "parents": [
        "78f945f88ef83dcc7c962614a080e0a9a2db5889"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:24 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:24 2009 -0400"
      },
      "message": "NFSv4: Support NFSv4 optional attributes in the struct nfs_fattr\n\nCurrently, filling struct nfs_fattr is more or less an all or nothing\noperation, since NFSv2 and NFSv3 have only mandatory attributes.\nIn NFSv4, some attributes are optional, and so we may simply not be able to\nfill in those fields. Furthermore, NFSv4 allows you to specify which\nattributes you are interested in retrieving, thus permitting you to\noptimise away retrieval of attributes that you know will no change...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "37d9d76d8b3a2ac5817e1fa3263cfe0fdb439e51",
      "tree": "ccbf57ce8f85ad8277838c50f723cbe79950eebc",
      "parents": [
        "2b57dc6cf9bf31edc0df430ea18dd1dbd3028975"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Mar 11 14:10:23 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:23 2009 -0400"
      },
      "message": "NFS: flush cached directory information slightly more readily.\n\nIf cached directory contents becomes incorrect, there is no way to\nflush the contents.  This contrasts with files where file locking is\nthe recommended way to ensure cache consistency between multiple\napplications (a read-lock always flushes the cache).\n\nAlso while changes to files often change the size of the file (thus\ntriggering a cache flush), changes to directories often do not change\nthe apparent size (as the size is often rounded to a block size).\n\nSo it is particularly important with directories to avoid the\npossibility of an incorrect cache wherever possible.\n\nWhen the link count on a directory changes it implies a change in the\nnumber of child directories, and so a change in the contents of this\ndirectory.  So use that as a trigger to flush cached contents.\n\nWhen the ctime changes but the mtime does not, there are two possible\nreasons.\n 1/ The owner/mode information has been changed.\n 2/ utimes has been used to set the mtime backwards.\n\nIn the first case, a data-cache flush is not required.\nIn the second case it is.\n\nSo on the basis that correctness trumps performance, flush the\ndirectory contents cache in this case also.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2b57dc6cf9bf31edc0df430ea18dd1dbd3028975",
      "tree": "3d70e9e220fd665fa08b2d0566eb35bf593cfcd7",
      "parents": [
        "fe315e76fc3a3f9f7e1581dc22fec7e7719f0896"
      ],
      "author": {
        "name": "Suresh Jayaraman",
        "email": "sjayaraman@suse.de",
        "time": "Wed Mar 11 14:10:22 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:22 2009 -0400"
      },
      "message": "NFS: Minor __nfs_revalidate_inode cleanup\n\nRemove redundant NFS_STALE() check, a leftover due to the commit\n691beb13cdc88358334ef0ba867c080a247a760f\n\nSigned-off-by: Suresh Jayaraman \u003csjayaraman@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "64672d55d93c26fb4035fd1a84a803cbc09cb058",
      "tree": "6873f9335b925e4c6a5336544a6f6fc1d789604f",
      "parents": [
        "dc0b027dfadfcb8a5504f7d8052754bf8d501ab9"
      ],
      "author": {
        "name": "Peter Staubach",
        "email": "staubach@redhat.com",
        "time": "Tue Dec 23 15:21:56 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:56 2008 -0500"
      },
      "message": "optimize attribute timeouts for \"noac\" and \"actimeo\u003d0\"\n\nHi.\n\nI\u0027ve been looking at a bugzilla which describes a problem where\na customer was advised to use either the \"noac\" or \"actimeo\u003d0\"\nmount options to solve a consistency problem that they were\nseeing in the file attributes.  It turned out that this solution\ndid not work reliably for them because sometimes, the local\nattribute cache was believed to be valid and not timed out.\n(With an attribute cache timeout of 0, the cache should always\nappear to be timed out.)\n\nIn looking at this situation, it appears to me that the problem\nis that the attribute cache timeout code has an off-by-one\nerror in it.  It is assuming that the cache is valid in the\nregion, [read_cache_jiffies, read_cache_jiffies + attrtimeo].  The\ncache should be considered valid only in the region,\n[read_cache_jiffies, read_cache_jiffies + attrtimeo).  With this\nchange, the options, \"noac\" and \"actimeo\u003d0\", work as originally\nexpected.\n\nThis problem was previously addressed by special casing the\nattrtimeo \u003d\u003d 0 case.  However, since the problem is only an off-\nby-one error, the cleaner solution is address the off-by-one\nerror and thus, not require the special case.\n\n    Thanx...\n\n        ps\n\nSigned-off-by: Peter Staubach \u003cstaubach@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dc0b027dfadfcb8a5504f7d8052754bf8d501ab9",
      "tree": "f27f81794950b8a159e8045b7b6a74f19f2ac26e",
      "parents": [
        "7a50c60e461f6ff97428da9448c3dad5b7bef491"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:56 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 23 15:21:56 2008 -0500"
      },
      "message": "NFSv4: Convert the open and close ops to use fmode\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ae05f269400533cbb32bfba131ab528d78dffd16",
      "tree": "ff18dae710bf73c32b77953222b994a36afbe8e8",
      "parents": [
        "2a9e1cfa23fb62da37739af81127dab5af095d99"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 28 15:21:40 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 28 15:21:40 2008 -0400"
      },
      "message": "NFS: Convert nfs_attr_generation_counter into an atomic_long\n\nThe most important property we need from nfs_attr_generation_counter is\nmonotonicity, which is not guaranteed by the current system of smp memory\nbarriers. We should convert it to an atomic_long_t, and drop the memory\nbarriers.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "526719ba51e7d7bd31f7af9ab04b015b70096685",
      "tree": "ccbacb533487b9f0b9e475050b3804fa506e7faf",
      "parents": [
        "77122d0b5d1fb2276b1fe7bce6366f22b2f96606"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@lxorguk.ukuu.org.uk",
        "time": "Mon Oct 27 15:19:48 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 27 08:40:17 2008 -0700"
      },
      "message": "Switch to a valid email address...\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "011935a0a710c20bb7ae63523b78856848db1926",
      "tree": "aabfb595ce38eabd95ae1f79546d604aba663b7d",
      "parents": [
        "4704f0e274829e3af00737d2d9adace2d71a9605"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 14 19:24:50 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 14 19:24:50 2008 -0400"
      },
      "message": "NFS: Fix a resolution problem with nfs_inode-\u003ecache_change_attribute\n\nThe cache_change_attribute is used to decide whether or not a directory has\nchanged, in which case we may need to look it up again. Again, the use of\n\u0027jiffies\u0027 leads to an issue of resolution.\n\nOnce again, the fix is to change nfs_inode-\u003ecache_change_attribute, and\njust make it a simple counter.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4704f0e274829e3af00737d2d9adace2d71a9605",
      "tree": "048404f927dc210f1d7c695cb39e28e4e7d49030",
      "parents": [
        "921615f111108258820226a3258a047d9bf1d96a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 14 19:16:07 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 14 19:23:17 2008 -0400"
      },
      "message": "NFS: Fix the resolution problem with nfs_inode_attrs_need_update()\n\nIt appears that \u0027jiffies\u0027 timestamps do not have high enough resolution for\nnfs_inode_attrs_need_update(). One problem is that a GETATTR can be\nlaunched within \u003c 1 jiffy of the last operation that updated the attribute.\nAnother problem is that RPC calls can take \u003c 1 jiffy to execute.\n\nWe can fix this by switching the variables to use a simple global counter\nthat gets incremented every time we start another GETATTR call.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "921615f111108258820226a3258a047d9bf1d96a",
      "tree": "c78cd59a6b5c2eed79f6f9fa28498996f7147c33",
      "parents": [
        "c055551e97e1ca00781bc41523f829e05a8afed7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 14 19:23:07 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 14 19:23:07 2008 -0400"
      },
      "message": "NFS: Changes to inode-\u003ei_nlinks must set the NFS_INO_INVALID_ATTR flag\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "03254e65a60d3113164672dbbadc023c4a56ecd1",
      "tree": "789d1e66b9af896ad113009dd1a4e3ced0c4ca4d",
      "parents": [
        "19d771f3caccaf66ce2fb539319222139e5b4e88"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 09 13:27:55 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 09 13:34:07 2008 -0400"
      },
      "message": "NFS: Fix attribute updates\n\nThis fixes a regression seen when running the Connectathon testsuite\nagainst an ext3 filesystem. The reason was that the inode was constantly\nbeing marked as \u0027just updated\u0027 by the jiffy wraparound test.\nThis again meant that newer GETATTR calls were failing to pass the\nnfs_inode_attrs_need_update() test unless the changes caused a ctime update\non the server, since they were perceived as having been started before the\nlatest inode update.\n\nGiven that nfs_inode_attrs_need_update() already checks for wraparound\nof nfsi-\u003elast_updated, we can drop the buggy \"protection\" in\nnfs_update_inode().\n\nAlso make a slight micro-optimisation of nfs_inode_attrs_need_update(): we\nare more often going to see time_after(fattr-\u003etime_start, nfsi-\u003elast_updated)\nbe true, rather than seeing an update of ctime/size, so put that test\nfirst to ensure that we optimise away the ctime/size tests.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "691beb13cdc88358334ef0ba867c080a247a760f",
      "tree": "35e0bb75f726f32962418902f33c5f779711dddc",
      "parents": [
        "2f28ea614ff497202d5a52af82da523ae4a20718"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Oct 05 14:48:22 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 07 17:59:43 2008 -0400"
      },
      "message": "NFS: Allow concurrent inode revalidation\n\nCurrently, if two processes are both trying to revalidate metadata for the\nsame inode, they will find themselves being serialised. There is no good\njustification for this now that we have improved our ability to detect\nstale attribute data, so we should remove that serialisation.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2f28ea614ff497202d5a52af82da523ae4a20718",
      "tree": "9793e6d84b4d33fbd552b377e0b4e12a21484794",
      "parents": [
        "076f1fc94c44be2664172c63b4a2b51ae2d265ea"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Oct 05 14:26:11 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 07 17:41:46 2008 -0400"
      },
      "message": "NFS: Fix up nfs_setattr_update_inode()\n\nEnsure that it sets the inode metadata under the correct spinlock.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "076f1fc94c44be2664172c63b4a2b51ae2d265ea",
      "tree": "a2b0c6b28deb0d283ff754df90801cc1483ec41d",
      "parents": [
        "4dc05efb86239321d43a9d74fd2ecd5c21bfc2ad"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Oct 05 13:31:21 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 07 17:41:33 2008 -0400"
      },
      "message": "NFS: Don\u0027t clear nfsi-\u003ecache_validity in nfs_check_inode_attributes()\n\nIf we\u0027re merely checking the inode attributes because we suspect that the\n\u0027updated\u0027 attributes returned by the RPC call are stale, then we shouldn\u0027t\nbe doing weak cache consistency updates or clearing the cache_validity\nflags.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4dc05efb86239321d43a9d74fd2ecd5c21bfc2ad",
      "tree": "3075ff7f73fd2cd85d2fcf055ec201e9ffac1cff",
      "parents": [
        "d65f557f39448c2d9e58cd564037b81e646aed2c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 23 17:28:42 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 07 17:41:17 2008 -0400"
      },
      "message": "NFS: Convert __nfs_revalidate_inode() to use nfs_refresh_inode()\n\nIn the case where there are parallel RPC calls to the same inode, we may\nreceive stale metadata due to the lack of ordering, hence the sanity\nchecking of metadata in nfs_refresh_inode().\nCurrently, __nfs_revalidate_inode() is calling nfs_update_inode() directly,\nwithout any further sanity checks, and hence may end up setting the inode\nup with stale metadata.\n\nFix is to use nfs_refresh_inode() instead of nfs_update_inode().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d65f557f39448c2d9e58cd564037b81e646aed2c",
      "tree": "8837231b55453405e40b2b8bd22470f3314cfa11",
      "parents": [
        "a10ad17630024bf7aae8e7f18352f816ee483091"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Oct 05 12:27:55 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 07 17:41:00 2008 -0400"
      },
      "message": "NFS: Fix nfs_post_op_update_inode_force_wcc()\n\nIf we believe that the attributes are old (see nfs_refresh_inode()), then\nwe shouldn\u0027t force an update.\nAlso ensure that we hold the inode-\u003ei_lock across attribute checks and the\ncall to nfs_refresh_inode_locked() to ensure that we don\u0027t race with other\nattribute updates.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a10ad17630024bf7aae8e7f18352f816ee483091",
      "tree": "a290be6e6660766ceac3d06f022d2bc5d15a1602",
      "parents": [
        "870a5be8b92151332da65021b7b21104e9c1de07"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 23 17:28:41 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 07 17:34:17 2008 -0400"
      },
      "message": "NFS: Fix the NFS attribute update\n\nCurrently nfs_refresh_inode() will only update the inode metadata if it\nsees that the RPC call that returned the nfs_fattr was started\nafter the last update of the inode. This means that if we have parallel\nRPC calls to the same inode (when sending WRITE calls, for instance), we\nmay often miss updates.\n\nThis patch attempts to recover those missed updates by also accepting\nthem if the ctime in the nfs_fattr is more recent than the inode\u0027s\ncached ctime.\nIt also recovers the case where the file size has increased, but the\nctime has not been updated due to limited ctime resolution.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "870a5be8b92151332da65021b7b21104e9c1de07",
      "tree": "041ec4a0c5304ff74b7b1cd2c09a7d92e08d6cac",
      "parents": [
        "7973c1f15a0687f47ed70e591e4642d6fc4334d0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Oct 05 12:07:23 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 07 17:29:49 2008 -0400"
      },
      "message": "NFS: Clean up nfs_refresh_inode() and nfs_post_op_update_inode()\n\nTry to avoid taking and dropping the inode-\u003ei_lock more than once. Do so by\nmoving the code in nfs_refresh_inode() that needs to be done under the\nspinlock into a function nfs_refresh_inode_locked(), and then having both\nnfs_refresh_inode() and nfs_post_op_update_inode() call it directly.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "51cc50685a4275c6a02653670af9f108a64e01cf",
      "tree": "819d47bd2b0c8a9d1835d863853804b0a0242b97",
      "parents": [
        "d91958815d214ea365b98cbff6215383897edcb6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Jul 25 19:45:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:07 2008 -0700"
      },
      "message": "SL*B: drop kmem cache argument from constructor\n\nKmem cache passed to constructor is only needed for constructors that are\nthemselves multiplexeres.  Nobody uses this \"feature\", nor does anybody uses\npassed kmem cache in non-trivial way, so pass only pointer to object.\n\nNon-trivial places are:\n\tarch/powerpc/mm/init_64.c\n\tarch/powerpc/mm/hugetlbpage.c\n\nThis is flag day, yes.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\n[akpm@linux-foundation.org: fix arch/powerpc/mm/hugetlbpage.c]\n[akpm@linux-foundation.org: fix mm/slab.c]\n[akpm@linux-foundation.org: fix ubifs]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fa6dc9dc59c3a76fd209a97c8cf37395980fb903",
      "tree": "3af530da9d0a21f385007afb34bc058e3f6cab21",
      "parents": [
        "a3d01454bc58b5a211ef64a7670572a40b71e682"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 13:26:14 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:51 2008 -0400"
      },
      "message": "NFS: Remove attribute update related BKL references\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a3d01454bc58b5a211ef64a7670572a40b71e682",
      "tree": "68c1ba383fb2c6702a8cc02bc81d51da6fb2920b",
      "parents": [
        "1b83d707032a1be40a60ed0a9bd841662cc04a5d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 12:21:19 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:51 2008 -0400"
      },
      "message": "NFS: Remove BKL requirement from attribute updates\n\nThe main problem is dealing with inode-\u003ei_size: we need to set the\ninode-\u003ei_lock on all attribute updates, and so vmtruncate won\u0027t cut it.\nMake an NFS-private version of vmtruncate that has the necessary locking\nsemantics.\n\nThe result should be that the following inode attribute updates are\nprotected by inode-\u003ei_lock\n\tnfsi-\u003ecache_validity\n\tnfsi-\u003eread_cache_jiffies\n\tnfsi-\u003eattrtimeo\n\tnfsi-\u003eattrtimeo_timestamp\n\tnfsi-\u003echange_attr\n\tnfsi-\u003elast_updated\n\tnfsi-\u003ecache_change_attribute\n\tnfsi-\u003eaccess_cache\n\tnfsi-\u003eaccess_cache_entry_lru\n\tnfsi-\u003eaccess_cache_inode_lru\n\tnfsi-\u003eacl_access\n\tnfsi-\u003eacl_default\n\tnfsi-\u003enfs_page_tree\n\tnfsi-\u003encommit\n\tnfsi-\u003enpages\n\tnfsi-\u003eopen_files\n\tnfsi-\u003esilly_list\n\tnfsi-\u003eacl\n\tnfsi-\u003eopen_states\n\tinode-\u003ei_size\n\tinode-\u003ei_atime\n\tinode-\u003ei_mtime\n\tinode-\u003ei_ctime\n\tinode-\u003ei_nlink\n\tinode-\u003ei_uid\n\tinode-\u003ei_gid\n\nThe following is protected by dir-\u003ei_mutex\n\tnfsi-\u003ecookieverf\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f41f741838480aeaa3a189cff6e210503cf9c42d",
      "tree": "fc4509d47132c28ca211e57d8f59b56accb6db8b",
      "parents": [
        "2e96d2867245668dbdb973729288cf69b9fafa66"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 17:39:04 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:19 2008 -0400"
      },
      "message": "NFS: Ensure we zap only the access and acl caches when setting new acls\n\n...and ensure that we obey the NFS_INO_INVALID_ACL flag when retrieving the\nacls.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "659bfcd6dd88919a5ad453f62afbeffcb3106847",
      "tree": "e3996d809e9ae4860a8adac71474e6ea8850c3b5",
      "parents": [
        "a486aeda9b2b0d944aecce7871b3186379b898de"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 10 19:39:41 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:14 2008 -0400"
      },
      "message": "NFS: Fix the ftruncate() credential problem\n\nftruncate() access checking is supposed to be performed at open() time,\njust like reads and writes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "31f31db1a15671513df9cd9fbe56ef45ee1e9a2a",
      "tree": "ad4015fb8159aaa18041791c2c85e272c5565dd7",
      "parents": [
        "3110ff8048fb757b36112b044b384aea9c44d6e4"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Fri May 02 13:42:45 2008 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:30 2008 -0700"
      },
      "message": "nfs: path_{get,put}() cleanups\n\nHere are some more places where path_{get,put}() can be used instead of\ndput()/mntput() pair.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3110ff8048fb757b36112b044b384aea9c44d6e4",
      "tree": "5260f4973bd0848ddef3fb3c111386e59616abbc",
      "parents": [
        "46c8ac74250a396aca855e494f49a960797a6b5e"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri May 02 13:42:44 2008 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:29 2008 -0700"
      },
      "message": "nfs: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b0b539739fe9b7d75002412a787cfdf4efddbc33",
      "tree": "0b20f42bb8cdef9bba26c7ca0e4afe883e5c9c25",
      "parents": [
        "f26a3988917913b3d11b2bd741601a2c64ab9204"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 05 11:45:41 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:21 2008 -0700"
      },
      "message": "NFS: Ensure that \u0027noac\u0027 and/or \u0027actimeo\u003d0\u0027 turn off attribute caching\n\nBoth the \u0027noac\u0027 and \u0027actimeo\u003d0\u0027 mount options should ensure that attributes\nare not cached, however a bug in nfs_attribute_timeout() means that\ncurrently, the attributes may in fact get cached for up to one jiffy. This\nhas been seen to cause corruption in some applications.\n\nThe reason for the bug is that the time_in_range() test returns \u0027true\u0027 as\nlong as the current time lies between nfsi-\u003eread_cache_jiffies and\nnfsi-\u003eread_cache_jiffies + nfsi-\u003eattrtimeo. In other words, if jiffies\nequals nfsi-\u003eread_cache_jiffies, then we still cache the attribute data.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "233607dbbc823caf685e778cabc49fb7f679900b",
      "tree": "13840137ee10788061cbec60fcfe8ea4c274558e",
      "parents": [
        "3dc5063786b273f1aee545844f6bd4e9651ebffe",
        "b48633bd086d21f4a2a5bea96c7e6c7ba58eb60c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 24 14:01:02 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 24 14:01:02 2008 -0400"
      },
      "message": "Merge branch \u0027devel\u0027\n"
    },
    {
      "commit": "66d3aac04175c35564cc5982934b68bc4f89a76d",
      "tree": "0b71ad81894f9d0beb0384691d50db71788f5504",
      "parents": [
        "daeba89d43af0fa469d38a4ccdc32fff8ca17c2e"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Mon Mar 31 15:01:58 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 08 21:06:53 2008 -0400"
      },
      "message": "NFS: initialize flags field in nfs_open_context\n\nThe nfs_open_context struct had a \"flags\" field added recently, but the\nallocator isn\u0027t initializing it. It also looks like the allocator isn\u0027t\ninitializing the mode or list either, but they seem to be overwritten\nby the caller, so that\u0027s less of an issue.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "98a8e3239427051f5d44f2025b398bdcc3918f37",
      "tree": "aa3e6ba69dbf8575c2c6e10c013aa23d7d638af0",
      "parents": [
        "5c691044ecbca04dd558fca4c754121689fe1b34"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 12 12:25:28 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 14 13:42:49 2008 -0400"
      },
      "message": "SUNRPC: Add a helper rpcauth_lookup_generic_cred()\n\nThe NFSv4 protocol allows clients to negotiate security protocols on the\nfly in the case where an administrator on the server changes the export\nsettings and/or in the case where we may have a filesystem migration event.\n\nInstead of having the NFS client code cache credentials that are tied to a\nparticular AUTH method it is therefore preferable to have a generic credential\nthat can be converted into whatever AUTH is in use by the RPC client when\nthe read/write/sillyrename/... is put on the wire.\n\nWe do this by means of the new \"generic\" credential, which basically just\ncaches the minimal information that is needed to look up an RPCSEC_GSS,\nAUTH_SYS, or AUTH_NULL credential.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9446389ef612096704fdf18fa79bab423d4110f0",
      "tree": "3e4fda7270be58ae176d20d318e61fb115b325b5",
      "parents": [
        "cdd0972945dbcb8ea24db365d9b0e100af2a27bb",
        "84c6f6046c5a2189160a8f0dca8b90427bf690ea"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 08 11:49:24 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 08 11:49:24 2008 -0500"
      },
      "message": "Merge commit \u0027origin\u0027 into devel\n"
    },
    {
      "commit": "c37dcd334c0b0a46a90cfa13b9f69e2aaa89bc09",
      "tree": "0792bbc64fff676c76a696a76a9f703cd9500145",
      "parents": [
        "ee1a2c564f67407947e89f1dac75ac0af0ba88c7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 06 12:34:50 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 07 14:35:37 2008 -0500"
      },
      "message": "NFS: Fix the fsid revalidation in nfs_update_inode()\n\nWhen we detect that we\u0027ve crossed a mountpoint on the remote server, we\nmust take care not to use that inode to revalidate the fsid on our\ncurrent superblock. To do so, we label the inode as a remote mountpoint,\nand check for that in nfs_update_inode().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5746006f1d17d9d5a3015051ea54de4341cb31f9",
      "tree": "fc1d03a1e58a0a0a3cc03c46cbebdebf8cfe054e",
      "parents": [
        "32bfb5c0f495dd88ef6bac4b76885d0820563739"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 19 20:04:22 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:40:36 2008 -0800"
      },
      "message": "NFS: Add an nfsiod workqueue\n\nNFS post-rpciod cleanups often involve tasks that cannot be safely\nperformed within the rpciod context (due to deadlock concerns). We\ntherefore add a dedicated NFS workqueue that can perform tasks like\ncleaning up state after an interrupted NFSv4 open() call, or calling\nput_nfs_open_context() after an asynchronous read or write call.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "383ba71938519959be8e0b598ec658f0c211ff45",
      "tree": "01eb0155676fe69d40f01dc137ea3be952d88997",
      "parents": [
        "4b5621f6b127bce9218998c187bd25bf7f9fc371"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 19 20:04:20 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:40:33 2008 -0800"
      },
      "message": "NFS: Fix a deadlock with lazy umount\n\nWe can\u0027t allow rpc callback functions like task-\u003etk_ops-\u003erpc_call_prepare()\nand task-\u003etk_ops-\u003erpc_call_done() to call mntput() in any way, since\nthat will cause a deadlock when the call to rpc_shutdown_client() attempts\nto wait on \u0027task\u0027 to complete.\n\nWe can avoid the above deadlock by moving calls to mntput to\ntask-\u003etk_ops-\u003erpc_release() callback, since at that time the task will be\nmarked as completed, and so rpc_shutdown_client won\u0027t attempt to wait on\nit.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "75659ca0c10992dcb39258518368a0f6f56e935d",
      "tree": "5d014ceb2f10158061a23d0d976f9a613d85e659",
      "parents": [
        "fbdde7bd274d74729954190f99afcb1e3d9bbfba",
        "2dfe485a2c8afa54cb069fcf48476f6c90ea3fdf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 11:45:47 2008 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 11:45:47 2008 +1100"
      },
      "message": "Merge branch \u0027task_killable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc\n\n* \u0027task_killable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc: (22 commits)\n  Remove commented-out code copied from NFS\n  NFS: Switch from intr mount option to TASK_KILLABLE\n  Add wait_for_completion_killable\n  Add wait_event_killable\n  Add schedule_timeout_killable\n  Use mutex_lock_killable in vfs_readdir\n  Add mutex_lock_killable\n  Use lock_page_killable\n  Add lock_page_killable\n  Add fatal_signal_pending\n  Add TASK_WAKEKILL\n  exit: Use task_is_*\n  signal: Use task_is_*\n  sched: Use task_contributes_to_load, TASK_ALL and TASK_NORMAL\n  ptrace: Use task_is_*\n  power: Use task_is_*\n  wait: Use TASK_NORMAL\n  proc/base.c: Use task_is_*\n  proc/array.c: Use TASK_REPORT\n  perfmon: Use task_is_*\n  ...\n\nFixed up conflicts in NFS/sunrpc manually..\n"
    },
    {
      "commit": "e6f810759505bc86c009854b82cc495ffd8eb020",
      "tree": "1590631fe3b222d49015dd53b421a5547e13e4dc",
      "parents": [
        "99fadcd76465842c014c88b8c9c19b457e9debc0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 24 18:14:34 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:12 2008 -0500"
      },
      "message": "NFS: Add an asynchronous delegreturn operation for use in nfs_clear_inode\n\nOtherwise, there is a potential deadlock if the last dput() from an NFSv4\nclose() or other asynchronous operation leads to nfs_clear_inode calling\nthe synchronous delegreturn.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "99fadcd76465842c014c88b8c9c19b457e9debc0",
      "tree": "34b61c6444beacc58bc643285441a553af420dc4",
      "parents": [
        "3a10c30acc4821ca000b52ed0edafd0d3bf26a52"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jan 23 08:59:08 2008 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:11 2008 -0500"
      },
      "message": "nfs: convert NFS_*(inode) helpers to static inline\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3a10c30acc4821ca000b52ed0edafd0d3bf26a52",
      "tree": "535fe870e12f9a032112b16d4e31fe1d813ea2c3",
      "parents": [
        "fc6014771bde8a215a9a4ea24b45f76afeb3c922"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jan 23 08:58:59 2008 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:11 2008 -0500"
      },
      "message": "nfs: obliterate NFS_FLAGS macro\n\nuse NFS_I(inode)-\u003eflags instead\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bfc69a456642a51c89dfd8e5184468857cb44f32",
      "tree": "0853b31afcc2c8bd24a0e94e9280d1c1083501de",
      "parents": [
        "5cce428d953cc3843b100e078dbc3c01c6411b85"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 15 18:18:29 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:47 2008 -0500"
      },
      "message": "NFS: define a function to update nfsi-\u003ecache_change_attribute\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "28c494c5c8d425e15b7b82571e4df6d6bc34594d",
      "tree": "cbd7902da8f467182b1d5faed90349329cb8d042",
      "parents": [
        "464ad6b1ade186b53a1dae863361853326b85694"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 26 13:32:13 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:45 2008 -0500"
      },
      "message": "NFS: Prevent nfs_getattr() hang during heavy write workloads\n\nPOSIX requires that ctime and mtime, as reported by the stat(2) call,\nreflect the activity of the most recent write(2).  To that end, nfs_getattr()\nflushes pending dirty writes to a file before doing a GETATTR to allow the\nNFS server to set the file\u0027s size, ctime, and mtime properly.\n\nHowever, nfs_getattr() can be starved when a constant stream of application\nwrites to a file prevents nfs_wb_nocommit() from completing.  This usually\nresults in hangs of programs doing a stat against an NFS file that is being\nwritten.  \"ls -l\" is a common victim of this behavior.\n\nTo prevent starvation, hold the file\u0027s i_mutex in nfs_getattr() to\nfreeze applications writes temporarily so the client can more quickly obtain\nclean values for a file\u0027s size, mtime, and ctime.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8a8c74bf94fcdec058062d331b3d9777910778ab",
      "tree": "66dd009e6d11a1bfa15d294aa2458086f80c963f",
      "parents": [
        "9b45b74ce2234ca15131ec0725010c1da818df05"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 26 13:31:47 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:43 2008 -0500"
      },
      "message": "NFS: Ensure nfs_wcc_update_inode always converts file size to loff_t\n\nThe nfs_wcc_update_inode() function omits logic to convert the type of\nthe NFS on-the-wire value of a file\u0027s size (__u64) to the type of file\nsize value stored in struct inode (loff_t, which is signed).\n\nEverywhere else in the NFS client I checked already correctly converts the\nfile size type.\n\nThis effects only very large files.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "150030b78a454ba50d5e267b0dcf01b162809192",
      "tree": "4de766e7abbfd73a052f14f8efd3a26eb7b59d87",
      "parents": [
        "009e577e079656d51d0fe9b15e61e41b00816c29"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Thu Dec 06 16:24:39 2007 -0500"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@linux.intel.com",
        "time": "Thu Dec 06 17:40:25 2007 -0500"
      },
      "message": "NFS: Switch from intr mount option to TASK_KILLABLE\n\nBy using the TASK_KILLABLE infrastructure, we can get rid of the \u0027intr\u0027\nmount option.  We have to use _killable everywhere instead of _interruptible\nas we get rid of rpc_clnt_sigmask/sigunmask.\n\nSigned-off-by: Liam R. Howlett \u003chowlett@gmail.com\u003e\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\n"
    },
    {
      "commit": "a49c3c7736a2e77931dabc5bc4a83fb4b2da013e",
      "tree": "1921900be210540ee53a4011c9e8f781deb0367e",
      "parents": [
        "565277f63c616e11c37309a1e98c052d18ebbb55"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 18 18:03:27 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Oct 19 17:19:25 2007 -0400"
      },
      "message": "NFSv4: Ensure that we wait for the CLOSE request to complete\n\nOtherwise, we do end up breaking close-to-open semantics. We also end up\nbreaking some of the silly-rename tests in Connectathon on some setups.\n\nPlease refer to the bug-report at\n\thttp://bugzilla.linux-nfs.org/show_bug.cgi?id\u003d150\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "565277f63c616e11c37309a1e98c052d18ebbb55",
      "tree": "60fdddc5a1c97df696392e47ead71d33d39e487f",
      "parents": [
        "61e930a904966cc37e0a3404276f0b73037e57ca"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 15 18:17:53 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Oct 19 17:19:16 2007 -0400"
      },
      "message": "NFS: Fix a race in sillyrename\n\nlookup() and sillyrename() can race one another because the sillyrename()\ncompletion cannot take the parent directory\u0027s inode-\u003ei_mutex since the\nlatter may be held by whoever is calling dput().\n\nWe therefore have little option but to add extra locking to ensure that\nnfs_lookup() and nfs_atomic_open() do not race with the sillyrename\ncompletion.\nIf somebody has looked up the sillyrenamed file in the meantime, we just\ntransfer the sillydelete information to the new dentry.\n\nPlease refer to the bug-report at\n\thttp://bugzilla.linux-nfs.org/show_bug.cgi?id\u003d150\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "188b95dd8ecb02dd6c6e5534cddc5a89aa4e2852",
      "tree": "30c840426da519a2eabdb23d369e1c5bfb7b6d1c",
      "parents": [
        "6de0ec00ba8db84d7c452e65e502989455ecb6ea"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Oct 18 03:05:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Oct 18 14:37:22 2007 -0700"
      },
      "message": "NFS: if ATTR_KILL_S*ID bits are set, then skip mode change\n\nIf the ATTR_KILL_S*ID bits are set then any mode change is only for clearing\nthe setuid/setgid bits.  For NFS, skip the mode change and let the server\nhandle it.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ba9b9d0ba0a49d91fa6417c7510ee36f48cf957",
      "tree": "191b4f45f926e44b882b1e87a9a85dc12230b892",
      "parents": [
        "b811c202a0edadaac7242ab834fe7ba409978ae7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Oct 16 23:25:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "Slab API: remove useless ctor parameter and reorder parameters\n\nSlab constructors currently have a flags parameter that is never used.  And\nthe order of the arguments is opposite to other slab functions.  The object\npointer is placed before the kmem_cache pointer.\n\nConvert\n\n        ctor(void *object, struct kmem_cache *s, unsigned long flags)\n\nto\n\n        ctor(struct kmem_cache *s, void *object)\n\nthroughout the kernel\n\n[akpm@linux-foundation.org: coupla fixes]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f43bf0bebed7c33b698a8a25f95812f9e87c3843",
      "tree": "20c527153cde564ca3517cf6f214fa32727542bb",
      "parents": [
        "2a3f5fd45938bd86ce8faf4cb26be4f7e9ae2941"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 12:01:04 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:52 2007 -0400"
      },
      "message": "NFS: Add a boot parameter to disable 64 bit inode numbers\n\nThis boot parameter will allow legacy 32-bit applications which call stat()\nto continue to function even if the NFSv3/v4 server uses 64-bit inode\nnumbers.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2a3f5fd45938bd86ce8faf4cb26be4f7e9ae2941",
      "tree": "84ed5c302b9a126fae440faa6cda0494ce4ca36b",
      "parents": [
        "40d24704091c8a29a4c99d25670f1996749aea6f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 08 14:26:13 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:50 2007 -0400"
      },
      "message": "NFS: nfs_refresh_inode should clear cache_validity flags on success\n\nIf the cached attributes match the ones supplied in the fattr, then assume\nwe\u0027ve revalidated the inode.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "40d24704091c8a29a4c99d25670f1996749aea6f",
      "tree": "511140e99865bd1610a6df1bd81c9321b7749005",
      "parents": [
        "9e08a3c5aec5b745e844328bcbc16458b6118faf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 08 09:24:22 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:47 2007 -0400"
      },
      "message": "NFS: Fix a connectathon regression in NFSv3 and NFSv4\n\nWe\u0027re failing basic test6 against Linux servers because they lack a correct\nchange attribute. The fix is to assume that we always want to invalidate\nthe readdir caches when we call update_changeattr and/or\nnfs_post_op_update_inode on a directory.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c7c209730d635226b81e9aeae63b6dc8f445569f",
      "tree": "0817778cf1b0504839f8a3e83797826fbf9acccc",
      "parents": [
        "4f48af45842c6e78ab958c90344d3c940db4da15"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 19:22:40 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:23 2007 -0400"
      },
      "message": "NFS: Get rid of some obsolete macros\n\n- NFS_READTIME, NFS_CHANGE_ATTR are completely unused.\n- Inline the few remaining uses of NFS_ATTRTIMEO, and remove.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6d2b2966869142660f46d1e06cf9d15c3debcf77",
      "tree": "21520382d3ca7ac3720bcf84dd76a1c3fb94331a",
      "parents": [
        "60ccd4ec4170c9487e3792322626acd160197bce"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 18:57:50 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:55 2007 -0400"
      },
      "message": "NFS: Reset nfsi-\u003elast_updated only if the attribute changed\n\nOtherwise set it to nfsi-\u003eread_cache_jiffies in order to prevent jiffy\nwraparound issues.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "60ccd4ec4170c9487e3792322626acd160197bce",
      "tree": "b35353518bd7945a40e39edfa543ce80aaa3f8b4",
      "parents": [
        "80eb209def76d375677840800eb838abce1e6639"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:48:19 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:53 2007 -0400"
      },
      "message": "NFS: Remove nfs_begin_data_update/nfs_end_data_update\n\nThe lower level routines in fs/nfs/proc.c, fs/nfs/nfs3proc.c and\nfs/nfs/nfs4proc.c should already be dealing with the revalidation issues.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "80eb209def76d375677840800eb838abce1e6639",
      "tree": "30b249f3c3bd61712ee2c0f52f79adb025a56862",
      "parents": [
        "a1643a92f6de92074116922a2d2906dd33499ff4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:34:46 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:50 2007 -0400"
      },
      "message": "NFS: Remove NFS_I(inode)-\u003edata_updates\n\nWe have no more users...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7668fdbe9aaeab705d1169ac86d0d18a12906d06",
      "tree": "ebd55a76f4bafa1ff2accaa8ad4c6605b7eb0fa9",
      "parents": [
        "12b373ebf05485d4937dd63a00c16f8efeaa79ba"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 09:59:15 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:37 2007 -0400"
      },
      "message": "NFS: nfs_post_op_update_inode don\u0027t update cache_change_attribute\n\nIf nfs_post_op_update_inode fails because the server didn\u0027t return any\nattributes, then we let the subsequent inode revalidation update\ncache_change_attribute.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "12b373ebf05485d4937dd63a00c16f8efeaa79ba",
      "tree": "d9a50191cecd59cec36b8dc6b2257c9098681a32",
      "parents": [
        "2f78e4313afd34a4ded591ec5687843113fbaa01"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 09:56:59 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:35 2007 -0400"
      },
      "message": "NFS: Don\u0027t revalidate dentries on directory size or ctime changes\n\nWe only need to look at the mtime changes...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2f78e4313afd34a4ded591ec5687843113fbaa01",
      "tree": "6c5364d61ab96979312b506167beca17fcdbc533",
      "parents": [
        "446e534985bada0ad7451c08cf213c06695f9b67"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 30 15:31:19 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:32 2007 -0400"
      },
      "message": "NFS: Don\u0027t set cache_change_attribute in nfs_revalidate_mapping\n\nThe attribute revalidation code will already have taken care of resetting\nnfsi-\u003ecache_change_attribute.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "70ca88521fc7bee8ef0fc22033a439d4b9a2c70d",
      "tree": "8e3943bfac55b59dc127393f8da0ecfc4aba424b",
      "parents": [
        "b64e8a5ef758888cb42b7c105dcfaaf51aab1baf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 30 15:21:24 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:15 2007 -0400"
      },
      "message": "NFS: Fake up \u0027wcc\u0027 attributes to prevent cache invalidation after write\n\nNFSv2 and v4 don\u0027t offer weak cache consistency attributes on WRITE calls.\nIn NFSv3, returning wcc data is optional. In all cases, we want to prevent\nthe client from invalidating our cached data whenever -\u003ewrite_done()\nattempts to update the inode attributes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b64e8a5ef758888cb42b7c105dcfaaf51aab1baf",
      "tree": "a8555028da59911132f4677ddabc73f4b88dc41c",
      "parents": [
        "7fdc49c4e49ba926348f71844cda7f5e12709738"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 30 15:13:17 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:11 2007 -0400"
      },
      "message": "NFS: Remove bogus check of cache_change_attribute in nfs_update_inode\n\nRemove the bogus \u0027data_stable\u0027 check in nfs_update_inode. The\ncache_change_attribute tells you if the directory changed on the server,\nand should have nothing to do with the file length.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7fdc49c4e49ba926348f71844cda7f5e12709738",
      "tree": "acd0344bf0bdb7318be81d25d4a479044d6f5e22",
      "parents": [
        "8850df999cd16aa141098e2e8be04a590276f3cc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 19:11:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:08 2007 -0400"
      },
      "message": "NFS: Fix the ESTALE \"revalidation\" in _nfs_revalidate_inode()\n\nFor one thing, the test NFS_ATTRTIMEO() \u003d\u003d 0 makes no sense: we\u0027re\ntesting whether or not the cache timeout length is zero, which is totally\nunrelated to the issue of whether or not we trust the file staleness.\n\nSecondly, we do not want to retry the GETATTR once a file has been declared\nstale by the server: we rather want to discard that inode as soon as\npossible, since there are broken servers still in use out there that reuse\nfilehandles on new files.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c4812998398d9cbce8646494704c52297359ede0",
      "tree": "8c7b786779b03d1960c25800a7a27a10f8318e99",
      "parents": [
        "57fa76f2da05d0fee597b26bbc1f05242252beab"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 17:11:45 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:03 2007 -0400"
      },
      "message": "NFS: Fix atime revalidation in readdir()\n\nNFSv3 will correctly update atime on a readdir call, so there is no need to\nset the NFS_INO_INVALID_ATIME flag unless the call to nfs_refresh_inode()\nfails.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "47aabaa7e45385fee4a535a6f6e523ff944e1684",
      "tree": "7f780c414b5037b45cc1eb3fee64e083913fb45c",
      "parents": [
        "17cadc95372e28024be0874e67329c1862912c5d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 27 15:57:24 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:57 2007 -0400"
      },
      "message": "NFSv4: Don\u0027t use ctime/mtime for determining when to invalidate the caches\n\nIn NFSv4 we should only be looking at the change attribute.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "17cadc95372e28024be0874e67329c1862912c5d",
      "tree": "0785ba140643d87c23e7bca67d1f2522214a0d12",
      "parents": [
        "e323ea46d95d7f8c789effd1194dfc120284dbbd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 27 10:07:31 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:55 2007 -0400"
      },
      "message": "NFS: Don\u0027t force a dcache revalidation if nfs_wcc_update_inode succeeds\n\nThe reason is that if the weak cache consistency update was successful,\nthen we know that our client must be the only one that changed the\ndirectory, and we\u0027ve already updated the dcache to reflect the change.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e323ea46d95d7f8c789effd1194dfc120284dbbd",
      "tree": "c88ffaef5f6a6bd50a853c6acc234795a17de5ac",
      "parents": [
        "6ecc5e8fcad7ad64d68c098249359831331bd299"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 30 17:03:25 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:51 2007 -0400"
      },
      "message": "NFS: nfs_wcc_update_inode: directory caches are always invalidated\n\nWe must ensure that the readdir data is always invalidated whether or not\nthe weak cache consistency data update succeeds.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6ecc5e8fcad7ad64d68c098249359831331bd299",
      "tree": "a0880db55be695d2975eb2d993d4cc918d0d3d83",
      "parents": [
        "7957c1418f4b6c66e28d4ac3c4d7a8c19d526c48"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 14:20:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:49 2007 -0400"
      },
      "message": "NFS: Fix dcache revalidation bugs\n\nWe don\u0027t need to force a dentry lookup just because we\u0027re making changes to\nthe directory.\n\nDon\u0027t update nfsi-\u003ecache_change_attribute in nfs_end_data_update: that\noverrides the NFSv3/v4 weak consistency checking that tells us our update\nwas the only one, and that tells us the dcache is still valid.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7957c1418f4b6c66e28d4ac3c4d7a8c19d526c48",
      "tree": "5769b3af76c91866a4ccaa607635c86755239a51",
      "parents": [
        "68e8a70d3cae23716f6b2b3872eba10eccea148c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 14:20:12 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:46 2007 -0400"
      },
      "message": "NFS: fix nfs_verify_change_attribute\n\nWe always want to check that the verifier and directory\ncache_change_attribute match. This also allows us to remove the \u0027wraparound\nhack\u0027 for the cache_change_attribute. If we\u0027re only checking for equality,\nthen we don\u0027t care about wraparound issues.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "68e8a70d3cae23716f6b2b3872eba10eccea148c",
      "tree": "ae1cdf2370aa8f77e6a953d665576919699df32d",
      "parents": [
        "f2115dc9877d480392e48e3c83bc8cbb4b418fee"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 15 12:59:12 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:43 2007 -0400"
      },
      "message": "NFS: nfs_post_op_update_inode() should call nfs_refresh_inode()\n\nEnsure that we don\u0027t clobber the results from a more recent getattr call...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f2115dc9877d480392e48e3c83bc8cbb4b418fee",
      "tree": "dc32f48bd76aaa9e1ae4de8cb8ac8510f9742716",
      "parents": [
        "76b32999dfff6e59252a8af17a5671a4cf3bcf9b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 15 12:49:17 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:40 2007 -0400"
      },
      "message": "NFS: Fix over-conservative attribute invalidation in nfs_update_inode()\n\nWe should always be declaring the attribute cache as valid after having\nupdated it.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd3758e37ddea66fccca7d93c4b601e8a2e51926",
      "tree": "07566d3ee457524a97b534a4f214b9178b1278c8",
      "parents": [
        "c03025d55540bd648f2546659090140ecc835572"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Aug 10 17:44:32 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:31 2007 -0400"
      },
      "message": "NFS: Replace file-\u003eprivate_data with calls to nfs_file_open_context()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c7e15961115028b99f6142266b5fb08acca0e8dd",
      "tree": "21d6ca8d97234664f242e35430ba4f0dbf61df8e",
      "parents": [
        "4e769b934e7638038e232c05b64f644e7269a90f"
      ],
      "author": {
        "name": "Fabio Olive Leite",
        "email": "fleite@redhat.com",
        "time": "Thu Jul 26 22:59:00 2007 -0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:33 2007 -0400"
      },
      "message": "Re: [NFS] [PATCH] Attribute timeout handling and wrapping u32 jiffies\n\nI would like to discuss the idea that the current checks for attribute\ntimeout using time_after are inadequate for 32bit architectures, since\ntime_after works correctly only when the two timestamps being compared\nare within 2^31 jiffies of each other. The signed overflow caused by\ncomparing values more than 2^31 jiffies apart will flip the result,\ncausing incorrect assumptions of validity.\n\n2^31 jiffies is a fairly large period of time (~25 days) when compared\nto the lifetime of most kernel data structures, but for long lived NFS\nmounts that can sit idle for months (think that for some reason autofs\ncannot be used), it is easy to compare inode attribute timestamps with\nvery disparate or even bogus values (as in when jiffies have wrapped\nmany times, where the comparison doesn\u0027t even make sense).\n\nCurrently the code tests for attribute timeout by simply adding the\ndesired amount of jiffies to the stored timestamp and comparing that\nwith the current timestamp of obtained attribute data with time_after.\nThis is incorrect, as it returns true for the desired timeout period\nand another full 2^31 range of jiffies.\n\nIn testing with artificial jumps (several small jumps, not one big\ncrank) of the jiffies I was able to reproduce a problem found in a\nserver with very long lived NFS mounts, where attributes would not be\nrefreshed even after touching files and directories in the server:\n\nInitial uptime:\n03:42:01 up 6 min, 0 users, load average: 0.01, 0.12, 0.07\n\nNFS volume is mounted and time is advanced:\n03:38:09 up 25 days, 2 min, 0 users, load average: 1.22, 1.05, 1.08\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Dec 17 03:38 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Nov 22 00:36 /nfs/A/foo/bar\n\n# touch /local/A/foo/bar\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Dec 17 03:47 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Nov 22 00:36 /nfs/A/foo/bar\n\nWe can see the local mtime is updated, but the NFS mount still shows\nthe old value. The patch below makes it work:\n\nInitial setup...\n07:11:02 up 25 days, 1 min,  0 users,  load average: 0.15, 0.03, 0.04\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:11 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:11 /nfs/A/foo/bar\n\n# touch /local/A/foo/bar\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:14 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:14 /nfs/A/foo/bar\n\nSigned-off-by: Fabio Olive Leite \u003cfleite@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4e769b934e7638038e232c05b64f644e7269a90f",
      "tree": "6508c1d273f22d3704eb849fb90404bade7cb4a7",
      "parents": [
        "50e437d522a6cc34a882b2f740297f1b6b4c3af3"
      ],
      "author": {
        "name": "Peter Staubach",
        "email": "staubach@redhat.com",
        "time": "Fri Aug 03 15:07:10 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:29 2007 -0400"
      },
      "message": "64 bit ino support for NFS client\n\nHi.\n\nAttached is a patch to modify the NFS client code to support\n64 bit ino\u0027s, as appropriate for the system and the NFS\nprotocol version.\n\nThe code basically just expand the NFS interfaces for routines\nwhich handle ino\u0027s from using ino_t to u64 and then uses the\nfileid in the nfs_inode instead of i_ino in the inode.  The\ncode paths that were updated are in the getattr method and\nthe readdir methods.\n\nThis should be no real change on 64 bit platforms.  Since\nthe ino_t is an unsigned long, it would already be 64 bits\nwide.\n\n    Thanx...\n\n           ps\n\nSigned-off-by: Peter Staubach \u003cstaubach@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ed90ef51a33f572fa7d00c8b05f7457be727e74f",
      "tree": "4c41336dd045cd9a857454a5d8a595288d64d6e1",
      "parents": [
        "90e9a3f9b0a14198a8ae5a0a5c13ad30f0b8b40d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 20 13:13:28 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:18 2007 -0400"
      },
      "message": "NFS: Clean up NFS writeback flush code\n\nThe only user of nfs_sync_mapping_range() is nfs_getattr(), which uses it\nto flush out the entire inode without sending a commit. We therefore\nreplace nfs_sync_mapping_range with a more appropriate helper.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5e11934d13c9a3bcb0cadad6c7a7de5c32660422",
      "tree": "639e5660e9081bc16afccf0c509ff41c413b483d",
      "parents": [
        "b247bbf1da69ce376aa1ceb8057331214589e366"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 26 12:06:17 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 07 15:13:17 2007 -0400"
      },
      "message": "NFS: Fix put_nfs_open_context\n\nWe need to grab the inode-\u003ei_lock atomically with the last reference put in\norder to remove the open context that is being freed from the\nnfsi-\u003eopen_files list.\n\nFix by converting the kref to a standard atomic counter and then using\natomic_dec_and_lock()...\n\nThanks to Arnd Bergmann for pointing out the problem.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "412c77cee6d6e73fbe1dc3d67f52163efed33fc4",
      "tree": "f7ea21158a76f8b3fd6450ee66dcc053f94b3fbd",
      "parents": [
        "8383e4602c89857ef926f29ca61ac0a83a614443"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 03 16:10:55 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:41 2007 -0400"
      },
      "message": "NFSv4: Defer inode revalidation when setting up a delegation\n\nCurrently we force a synchronous call to __nfs_revalidate_inode() in\nnfs_inode_set_delegation(). This not only ensures that we cannot call\nnfs_inode_set_delegation from an asynchronous context, but it also slows\ndown any call to open().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "587142f85f796cf0b823dd3080e815f02ff6b952"
}
