)]}'
{
  "log": [
    {
      "commit": "541010e4b8921cd781ff02ae68028501457045b6",
      "tree": "58bd529d4c6e69899a0aa20afa2d7f1c23326417",
      "parents": [
        "e457f790d8b05977853aa238bbc667b3bb375671",
        "5e7fc436426b1f9e106f511a049de91c82ec2c53"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 15 16:07:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 15 16:07:40 2007 -0700"
      },
      "message": "Merge branch \u0027locks\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027locks\u0027 of git://linux-nfs.org/~bfields/linux:\n  nfsd: remove IS_ISMNDLCK macro\n  Rework /proc/locks via seq_files and seq_list helpers\n  fs/locks.c: use list_for_each_entry() instead of list_for_each()\n  NFS: clean up explicit check for mandatory locks\n  AFS: clean up explicit check for mandatory locks\n  9PFS: clean up explicit check for mandatory locks\n  GFS2: clean up explicit check for mandatory locks\n  Cleanup macros for distinguishing mandatory locks\n  Documentation: move locks.txt in filesystems/\n  locks: add warning about mandatory locking races\n  Documentation: move mandatory locking documentation to filesystems/\n  locks: Fix potential OOPS in generic_setlease()\n  Use list_first_entry in locks_wake_up_blocks\n  locks: fix flock_lock_file() comment\n  Memory shortage can result in inconsistent flocks state\n  locks: kill redundant local variable\n  locks: reverse order of posix_locks_conflict() arguments\n"
    },
    {
      "commit": "05c88babab957dfd63bd351b25042d80bd854dd0",
      "tree": "2d491ca1e3a9ce141fd367750726049eca3f01f1",
      "parents": [
        "f43bf0bebed7c33b698a8a25f95812f9e87c3843"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 11 15:11:51 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 11 15:11:51 2007 -0400"
      },
      "message": "NFSv4: Fix a typo in nfs_inode_reclaim_delegation\n\nWe were intending to put the previous instance of delegation-\u003ecred\nbefore setting a new one.\n\nThanks to David Howells for spotting this.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dfad9441be82f1eadc3fa3f1bbc93f93d48d1bdf",
      "tree": "059c9e1d075de6a800af3c95bbc837a2e0239819",
      "parents": [
        "fc5846e555177c2ae01bcded7fddf60cb10dcfd0"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Oct 01 14:41:15 2007 -0700"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Oct 09 18:32:46 2007 -0400"
      },
      "message": "NFS: clean up explicit check for mandatory locks\n\nThe __mandatory_lock(inode) macro makes the same check, but makes the code\nmore readable.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\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\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": "9e08a3c5aec5b745e844328bcbc16458b6118faf",
      "tree": "0715485e16ddee34478cdf1ac8432944f6cc354e",
      "parents": [
        "220bcc2afd7011b3e0569fc178331fa983c92c1b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 08 14:10:31 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:45 2007 -0400"
      },
      "message": "NFS: Use nfs_refresh_inode() in ops that aren\u0027t expected to change the inode\n\nnfs_post_op_update_inode() is really only meant to be used if we expect the\ninode and its attributes to have changed in some way.\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": "4f48af45842c6e78ab958c90344d3c940db4da15",
      "tree": "40f41baaf1931b47618034c21377a35b8ad926fe",
      "parents": [
        "9697d2342e1a480bc14921c52f185c2fe01016e7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 23:13:32 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:20 2007 -0400"
      },
      "message": "NFS: Simplify filehandle revalidation\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9697d2342e1a480bc14921c52f185c2fe01016e7",
      "tree": "bd4fba02d28777fc7705d8937a19740940fd5317",
      "parents": [
        "a12802cab8520f86c9a80bbf87d10ee6171687d1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 21:58:05 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:18 2007 -0400"
      },
      "message": "NFS: Ensure that nfs_link() returns a hashed dentry\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a12802cab8520f86c9a80bbf87d10ee6171687d1",
      "tree": "95e65c0541f0488b9fa6d31441cd584b2fbaf480",
      "parents": [
        "b050aa791fad6b060d6ff59305f01289e18b058c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 19:13:04 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:16 2007 -0400"
      },
      "message": "NFS: Be strict about dentry revalidation when doing exclusive create\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b050aa791fad6b060d6ff59305f01289e18b058c",
      "tree": "74786215218dfa0bb6cd45997de889a4f8526028",
      "parents": [
        "efbb06b7f98a154ef51ad41674548af5cc1fd005"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 19:02:07 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:13 2007 -0400"
      },
      "message": "NFS: Don\u0027t zap the readdir caches upon error\n\nIf necessary, the caches will get zapped under normal revalidation.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "efbb06b7f98a154ef51ad41674548af5cc1fd005",
      "tree": "7324549bd5138c1a439ebe95d1ca5149b9e4cf79",
      "parents": [
        "81c768808c78283e1b4ed4cd2cad2571294b2090"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 17:11:54 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:11 2007 -0400"
      },
      "message": "NFS: Remove the redundant nfs_reval_fsid()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "81c768808c78283e1b4ed4cd2cad2571294b2090",
      "tree": "7282d227bc8dcbaba8eacdbb62df202d66f0278f",
      "parents": [
        "d75340cc4de5c187fbf0bba234309ca86cf0a2fb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 10:30:00 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:08 2007 -0400"
      },
      "message": "NFSv3: Always use directory post-op attributes in nfs3_proc_lookup\n\nLOOKUP returns the directory post-op attributes whether or not the\noperation was successful.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d75340cc4de5c187fbf0bba234309ca86cf0a2fb",
      "tree": "aa53e3248bf3d61283f94187ffc83b18fa06bb7a",
      "parents": [
        "216d5d06883edfaf992ada0d72a2a22fdfdbd296"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 21:42:01 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:06 2007 -0400"
      },
      "message": "NFSv4: Fix nfs_atomic_open() to set the verifier on negative dentries too\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "216d5d06883edfaf992ada0d72a2a22fdfdbd296",
      "tree": "4b3ff79736cb09a2bb565383232243971a9a8e2f",
      "parents": [
        "0a5ebc148879be68acdb12fbe72b65cb88c410d9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 20:10:12 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:03 2007 -0400"
      },
      "message": "NFSv4: Use NFSv2/v3 rules for negative dentries in nfs_open_revalidate\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0a5ebc148879be68acdb12fbe72b65cb88c410d9",
      "tree": "b9fb0b5a2689b33daa97255b8b302383a304785a",
      "parents": [
        "f2c77f4e62a2290ae46b5b0449eb72d72afe691e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 12:57:24 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:01 2007 -0400"
      },
      "message": "NFSv4: Don\u0027t revalidate the directory in nfs_atomic_lookup()\n\nWhy bother, since the call to nfs4_atomic_open() will do it for us.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f2c77f4e62a2290ae46b5b0449eb72d72afe691e",
      "tree": "f0b68a5be10fdebf477c3b5af1dbdce3a6150301",
      "parents": [
        "6d2b2966869142660f46d1e06cf9d15c3debcf77"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 12:54:39 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:58 2007 -0400"
      },
      "message": "NFS: Optimise nfs_lookup_revalidate()\n\nWe don\u0027t need to call nfs_revalidate_inode() on the directory if we already\nknow that the verifiers don\u0027t match.\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": "a1643a92f6de92074116922a2d2906dd33499ff4",
      "tree": "9047e929e13d48b53a8d3512ce31ac9ab6b1832d",
      "parents": [
        "3258b4fa552c4f994b5e6490a8ad88f5d7e0e648"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:25:43 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:48 2007 -0400"
      },
      "message": "NFS: NFS_CACHEINV() should not test for nfs_caches_unstable()\n\nThe fact that we\u0027re in the process of modifying the inode does not mean\nthat we should not invalidate the attribute and data caches. The defensive\nthing is to always invalidate when we\u0027re confronted with inode\nmtime/ctime or change_attribute updates that we do not immediately\nrecognise.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3258b4fa552c4f994b5e6490a8ad88f5d7e0e648",
      "tree": "1ec891ada36618119544ae6c870665a53b120fcd",
      "parents": [
        "cf8ba45e0554f1c8838fcfe43a93114f177af839"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 13:54:51 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:45 2007 -0400"
      },
      "message": "NFS: Remove bogus nfs_mark_for_revalidate() in nfs_lookup\n\nThe parent of the newly materialised dentry has just been revalidated...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cf8ba45e0554f1c8838fcfe43a93114f177af839",
      "tree": "e8799c4eac30b4c42c2be7a02e4848aac6113f44",
      "parents": [
        "f38211100d4823be530577dc3452f838861222ec"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 13:46:53 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:42 2007 -0400"
      },
      "message": "NFS: don\u0027t cache the verifer across -\u003elookup() calls\n\nIf the -\u003elookup() call causes the directory verifier to change, then there\nis still no need to use the old verifier, since our dentry has been\nverified.\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": "446e534985bada0ad7451c08cf213c06695f9b67",
      "tree": "6f364b49ad9f6bc2c82ce28ce4fbd75aee372286",
      "parents": [
        "d4d9cdcb470784df76304f75d0ce88f20f15fa6a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Oct 03 15:58:38 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:30 2007 -0400"
      },
      "message": "NFS: Fix a bug in nfs_open_revalidate()\n\nWe want to set the verifier when the call to nfs4_open_revalidate()\n_succeeds_.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d4d9cdcb470784df76304f75d0ce88f20f15fa6a",
      "tree": "7066e4640947f078855b47501e69f76ff775a834",
      "parents": [
        "5724ab37872042176916441930e78fd353be1e5e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 02 18:38:53 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:27 2007 -0400"
      },
      "message": "NFS: Don\u0027t hash the negative dentry when optimising for an O_EXCL open\n\nWe don\u0027t want to leave an unverified hashed negative dentry if the\nexclusive create fails to complete.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5724ab37872042176916441930e78fd353be1e5e",
      "tree": "255ba54f98f20ef22584bfb7308bf80f0c4fa2ad",
      "parents": [
        "fab728e156b3cbfe31f05d6e7cdebe3d5eaff878"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 21:51:38 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:25 2007 -0400"
      },
      "message": "NFS: nfs_instantiate() should set the dentry verifier\n\nThat will also allow us to remove the calls in mknod and mkdir.\nIn addition it will ensure that symlinks set it correctly.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fab728e156b3cbfe31f05d6e7cdebe3d5eaff878",
      "tree": "4a0a9ab57867e33342119e61d52c16d0c9eb7a32",
      "parents": [
        "4b841736bc16b320bcdb1e8ece585b3ced9a8811"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:41:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:22 2007 -0400"
      },
      "message": "NFS: Ensure nfs_instantiate() invalidates the parent dir on error\n\nAlso ensure that it drops the dentry in this case.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4b841736bc16b320bcdb1e8ece585b3ced9a8811",
      "tree": "c79e4c99393b8ebfd54617f0ffa791dacc443cb5",
      "parents": [
        "8edb01828837302055a8f0afddb2256659480bc5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:15:01 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:20 2007 -0400"
      },
      "message": "NFS: Fix nfs_verify_change_attribute()\n\nWe don\u0027t care about whether or not some other process on our client is\nchanging the directory while we\u0027re in nfs_lookup_revalidate(), because the\ndcache will take care of ensuring local atomicity.\nWe can therefore remove the test for nfs_caches_unstable().\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": "8850df999cd16aa141098e2e8be04a590276f3cc",
      "tree": "de5d934bff3ae6595dcfcf6d725dd991bb242f21",
      "parents": [
        "c4812998398d9cbce8646494704c52297359ede0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 17:20:07 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:06 2007 -0400"
      },
      "message": "NFS: Fix atime revalidation in read()\n\nNFSv3 will correctly update atime on a read() 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": "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": "57fa76f2da05d0fee597b26bbc1f05242252beab",
      "tree": "c3ee6a3b75315b10bf2d1c9396d7e07c1b8f4830",
      "parents": [
        "47aabaa7e45385fee4a535a6f6e523ff944e1684"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 30 18:01:13 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:00 2007 -0400"
      },
      "message": "NFS: Don\u0027t use readdirplus data if the page cache is invalid\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": "76b32999dfff6e59252a8af17a5671a4cf3bcf9b",
      "tree": "6494e3a368e120668052e469c08c69a5d8d0b3f4",
      "parents": [
        "af22f94ae02ab9dd4fd7fe628c8434a59cc293be"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Aug 10 17:45:11 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:38 2007 -0400"
      },
      "message": "NFSv4: Make NFSv4 ACCESS calls return attributes too...\n\nIt doesn\u0027t really make sense to cache an access call without also\nrevalidating the attributes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "af22f94ae02ab9dd4fd7fe628c8434a59cc293be",
      "tree": "e3794a90fc0720c33266dfa682e264a4041e7a14",
      "parents": [
        "cd3758e37ddea66fccca7d93c4b601e8a2e51926"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Aug 10 17:45:10 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:34 2007 -0400"
      },
      "message": "NFSv4: Simplify _nfs4_do_access()\n\nCurrently, _nfs4_do_access() is just a copy of nfs_do_access() with added\nconversion of the open flags into an access mask. This patch merges the\nduplicate functionality.\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": "8fb559f87fee7f71dbf9a595095ad7d8e84c55e7",
      "tree": "1d38a0d8b750f7515390c9741b12364f6f3426c7",
      "parents": [
        "77a55a1fe8f26f7d022986a599b68002e21d968a"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Sep 24 15:40:16 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:26 2007 -0400"
      },
      "message": "NFS: Eliminate nfs_refresh_verifier()\n\nnfs_set_verifier() and nfs_refresh_verifier() do exactly the same thing, so\nreplace one with the other.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "77a55a1fe8f26f7d022986a599b68002e21d968a",
      "tree": "63e804b1105d535149e0fd558c96a8c3efcc8dce",
      "parents": [
        "92f6c178250170222f6d80c8ae725400765aa7a4"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Sep 24 15:40:11 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:24 2007 -0400"
      },
      "message": "NFS: Eliminate nfs_renew_times()\n\nThe nfs_renew_times() function plants the current time in jiffies in\ndentry-\u003ed_time.  But a call to nfs_renew_times() is always followed by\nanother call that overwrites dentry-\u003ed_time.  Get rid of the\nnfs_renew_times() calls.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "92f6c178250170222f6d80c8ae725400765aa7a4",
      "tree": "f0da7a93122db0ed40cb5175294e8492082144ba",
      "parents": [
        "1321d8d971028e796978f6a48d195c09158b3bcd"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Sep 24 15:40:06 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:22 2007 -0400"
      },
      "message": "NFS: Don\u0027t call nfs_renew_times() in nfs_dentry_iput()\n\nNegative dentries need to be reverified after an asynchronous unlink.\n\nQuoth Trond:\n\n\"Unfortunately I don\u0027t think that we can avoid revalidating the\nresulting negative dentry since the UNLINK call is asynchronous,\nand so the new verifier on the directory will only be known a\nposteriori.\"\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bcf35617a7c3474ad12892dfbb089a572e5c06d2",
      "tree": "f7fdd239743614ff8c1b00dc44b34565617689b8",
      "parents": [
        "6e88e0618cb1e354a44cc49a996df4dd89511039"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Sep 24 15:39:55 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:17 2007 -0400"
      },
      "message": "NFS: Show \"nointr\" mount option\n\nThe default \"intr\" setting is different for NFS and NFSv4.  To avoid\nconfusion on this issue, don\u0027t hide the \"nointr\" option in /proc/mounts.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6e88e0618cb1e354a44cc49a996df4dd89511039",
      "tree": "e5da37374d186cf3b6bd91ba2349675abe9d0a6d",
      "parents": [
        "113632d00acb569420b14eb7575833ac7e2eb311"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Sep 24 15:39:50 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:14 2007 -0400"
      },
      "message": "NFS: Verify server address before invoking in-kernel mount client\n\nRe-order mount option sanity checking slightly to ensure we have a valid\nserver address *before* trying to do the mountd RPC call.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2cf7ff7a37cc149bd59c4f3bad432f686a4619c8",
      "tree": "9752290f4a0cb00d10a1fae24db8ef85b85b84e7",
      "parents": [
        "c3a57ed7471a17b07844d531534d970b84b69faf"
      ],
      "author": {
        "name": "\\\"Talpey, Thomas\\",
        "email": "Thomas.Talpey@netapp.com",
        "time": "Mon Sep 10 13:49:41 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:00 2007 -0400"
      },
      "message": "NFS: support RDMA mounts\n\nAdds hooks to the string-based NFS mount to support an \"rdma\" protocol option.\n\nSigned-off-by: Tom Talpey \u003ctmt@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "56928edd5afb51d684c38c0bed56594e93ffe4c7",
      "tree": "f4b48628286f923c68727feba78b2b51a6502352",
      "parents": [
        "0896a725a1c5fdc8773a4d1ab0b73059507f5925"
      ],
      "author": {
        "name": "\\\"Talpey, Thomas\\",
        "email": "Thomas.Talpey@netapp.com",
        "time": "Mon Sep 10 13:48:47 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:55 2007 -0400"
      },
      "message": "NFS - print accurate transport protocol\n\nUse the per-transport strings to display the transport protocol accurately.\n\nSigned-off-by: Tom Talpey \u003ctmt@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0896a725a1c5fdc8773a4d1ab0b73059507f5925",
      "tree": "e8a44eecc411f0d117358752d8a2b80895d81bc0",
      "parents": [
        "4fa016eb248cac875541fa199af550a8aefa0e90"
      ],
      "author": {
        "name": "\\\"Talpey, Thomas\\",
        "email": "Thomas.Talpey@netapp.com",
        "time": "Mon Sep 10 13:48:23 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:53 2007 -0400"
      },
      "message": "NFS/SUNRPC: use transport protocol naming\n\nInstead of an { address family, raw IP protocol number }-tuple, use the\nnewly-defined RPC identifier when creating clients in the upper layers.\n\nSigned-off-by: Tom Talpey \u003ctmt@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4f22ccc3460ef65e9899ec271d36fc4ef795c68d",
      "tree": "613a7a135cd11e5254362e41ab2b05f707901c19",
      "parents": [
        "20c71f5e0f954b00d75009542db2c1f844d94a1e"
      ],
      "author": {
        "name": "\\\"Talpey, Thomas\\",
        "email": "Thomas.Talpey@netapp.com",
        "time": "Mon Sep 10 13:44:58 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:34 2007 -0400"
      },
      "message": "SUNRPC: mark bulk read/write data in xdrbuf\n\nAdds a flag word to the xdrbuf struct which indicates any bulk\ndisposition of the data. This enables RPC transport providers to\nmarshal it efficiently/appropriately, and may enable other\noptimizations.\n\nSigned-off-by: Tom Talpey \u003ctmt@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "20c71f5e0f954b00d75009542db2c1f844d94a1e",
      "tree": "0ff5e7212188238735757dd72ec746ab673ef1fd",
      "parents": [
        "91ea40b9c6303ddab5c84f078f96b29084b45817"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 20 20:23:51 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:31 2007 -0400"
      },
      "message": "NFSv4: Fix a bug in nfs4_validate_mount_data()\n\nThe previous patch introduced a bug when copying the server address.\n\nAlso clarify a copy into the auth_flavours array: currently the two\nsize calculations are equivalent, but we may decide to change the size\nof auth_flavors[] at some point.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "91ea40b9c6303ddab5c84f078f96b29084b45817",
      "tree": "b7f48effc5adbb1b9c36a7e16ce9133d7152aad9",
      "parents": [
        "2283f8d6ed21ea2221df4cc329314b93f35351b0"
      ],
      "author": {
        "name": "\\\"Talpey, Thomas\\",
        "email": "Thomas.Talpey@netapp.com",
        "time": "Mon Sep 10 13:44:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:28 2007 -0400"
      },
      "message": "NFS: use in-kernel mount argument structure for nfsv4 mounts\n\nThe user-visible nfs4_mount_data does not contain sufficient data to\ndescribe new mount options, and also is now a legacy structure. Replace\nit with the internal nfs_parsed_mount_data for nfsv4 in-kernel use.\n\nSigned-off-by: Tom Talpey \u003ctmt@netapp.com\u003e\nAcked-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2283f8d6ed21ea2221df4cc329314b93f35351b0",
      "tree": "dbf8b87e45b4fa76d50c0fd7ec0b3d4f1afd94ca",
      "parents": [
        "6b18eaa0821a559c5e2b7ed4b90f8aca5a8e6228"
      ],
      "author": {
        "name": "\\\"Talpey, Thomas\\",
        "email": "Thomas.Talpey@netapp.com",
        "time": "Mon Sep 10 13:43:56 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:26 2007 -0400"
      },
      "message": "NFS: use in-kernel mount argument structure for nfsv[23] mounts\n\nThe user-visible nfs_mount_data does not contain sufficient data to\ndescribe new mount options, and also is now a legacy structure. Replace\nit with the internal nfs_parsed_mount_data for nfsv[23] in-kernel use.\n\nSigned-off-by: Tom Talpey \u003ctmt@netapp.com\u003e\nAcked-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6b18eaa0821a559c5e2b7ed4b90f8aca5a8e6228",
      "tree": "25f02ce2813cf7bc37b73b5a14a9a037c187eab7",
      "parents": [
        "4417c8c41a51a2ae95b2a2fa2811640b368c4151"
      ],
      "author": {
        "name": "\\\"Talpey, Thomas\\",
        "email": "Thomas.Talpey@netapp.com",
        "time": "Mon Sep 10 13:43:29 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:23 2007 -0400"
      },
      "message": "NFS: move nfs_parsed_mount_data structure definition\n\nIn preparation for rearranging the nfs mount argument passing, make the\nnfs_parsed_mount_data struct visible across nfs kernel files.\n\nSigned-off-by: Tom Talpey \u003ctmt@netapp.com\u003e\nAcked-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fe82a183ca3c9188945c4ebeebc2ca45abfa24e5",
      "tree": "414f292cf5e9808359796af5d6b7c900a0aaefab",
      "parents": [
        "0ac83779fa5bffb90e32a97abc61f1840af31ee9"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Sep 11 18:01:10 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:09 2007 -0400"
      },
      "message": "NFS: Convert printk\u0027s to dprintk\u0027s in fs/nfs/nfs?xdr.c\n\nDue to recent edict to replace or remove printk\u0027s that can be triggered en\nmasse by remote misbehavior.  Left a few that only occur just before a BUG.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0ac83779fa5bffb90e32a97abc61f1840af31ee9",
      "tree": "330ecddbeaaf2ba5980bf4377c6726682751fdc8",
      "parents": [
        "aad700073557c7932ef9f81c19a5e0647f8a6850"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Sep 11 18:01:04 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:06 2007 -0400"
      },
      "message": "NFS: Add new \u0027mountaddr\u003d\u0027 mount option\n\nI got the \u0027mounthost\u003d\u0027 option wrong - it shouldn\u0027t look for an address\nvalue, but rather a hostname value.  However, the in-kernel mount client\nand NFS client cannot resolve a hostname by themselves; they rely on\nuser-land to pass in the resolved address.\n\nCreate a new mount option that does take an address so that the mount\nprogram\u0027s address can be passed in.  The mount hostname is now ignored\nby the kernel.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "aad700073557c7932ef9f81c19a5e0647f8a6850",
      "tree": "16fdf949b3c35468805e04b9b970da116bb9d220",
      "parents": [
        "efd8340bb19c26a43e77c92fee9283b1f5777204"
      ],
      "author": {
        "name": "James Lentini",
        "email": "jlentini@netapp.com",
        "time": "Mon Sep 24 17:32:49 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:04 2007 -0400"
      },
      "message": "[NFS] [PATCH] NFS: initialize default port in kernel mount client\n\nIf no mount server port number is specified, the previous change to the\nkernel mount client inadvertently allows the NFS server\u0027s port number to be\nthe used as the mount server\u0027s port number. If the user specifies an NFS\nserver port (-o port\u003dx), the mount will fail.\n\nThe fix below sets the mount server\u0027s port to 0 if no mount server\nport is specified by the user.\n\nSigned-off-by: James Lentini \u003cjlentini@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "efd8340bb19c26a43e77c92fee9283b1f5777204",
      "tree": "86cdb3fde61d900f0ba350db7c9d9586d7d2dcec",
      "parents": [
        "b79dc8ced1412e7056f3969bef40a30cc75ee530"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Sep 11 18:00:58 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:17:01 2007 -0400"
      },
      "message": "NFS: Kernel mount client should use async bind\n\nSimplify the in-kernel mount client by using autobind instead of an\nexplicit call to rpc_getport_sync.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ddc01c0813dc07ca7a2bd32c143a9b54a64915ce",
      "tree": "19bd2ac9bd5f3148879384a9017a077582de1bc6",
      "parents": [
        "f8cf3678f4885d66475b19b10ec2e9918ff2ca1c"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Mon Jul 30 08:47:38 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:39 2007 -0400"
      },
      "message": "[NFS] [PATCH] NFS: show addr\u003dipaddr in /proc/mounts rather than\n\nA minor thing, but useful when working with a server with multiple\naddrs. This looks like it might also be necessary if Miklos\u0027 effort\nto eliminate /etc/mtab ever comes to fruition.\n\nWhen displaying mount options in /proc/mounts, the kernel prints\n\"addr\u003dhostname\". This info is redundant since we already have the\nhostname displayed as part of the \"device\" section of the mount. This\npatch changes it to display the IP address to which the socket is\nconnected.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f8cf3678f4885d66475b19b10ec2e9918ff2ca1c",
      "tree": "12d25b7a715dcf68ea98edb50291bca20ae3943a",
      "parents": [
        "c7e15961115028b99f6142266b5fb08acca0e8dd"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Aug 03 16:20:32 2007 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:36 2007 -0400"
      },
      "message": "[NFS] [PATCH] nfs: tiny makefile cleanup\n\nno need to set up foo-objs these days.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\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": "7b159fc18d417980f57aef64cab3417ee6af70f8",
      "tree": "880f31179a9836ad9cd63b91dd6d77b61b01017c",
      "parents": [
        "34901f70d119d88126e7390351b8c780646628e1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 25 14:09:54 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:23 2007 -0400"
      },
      "message": "NFS: Fall back to synchronous writes when a background write errors...\n\nThis helps prevent huge queues of background writes from building up\nwhenever the server runs out of disk or quota space, or if someone changes\nthe file access modes behind our backs.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "34901f70d119d88126e7390351b8c780646628e1",
      "tree": "e7dbbc44377adfcdbf4f09331428ad4c90fc3032",
      "parents": [
        "ed90ef51a33f572fa7d00c8b05f7457be727e74f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 25 14:09:54 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:21 2007 -0400"
      },
      "message": "NFS: Writeback optimisation\n\nSchedule writes using WB_SYNC_NONE first, then come back for a second pass\nusing WB_SYNC_ALL.\n\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": "f758c885199611504ff681e3ba66c410b4e9e995",
      "tree": "8e68116aec5f0d99ce721d45f5ee299e52940284",
      "parents": [
        "9cccef95052c7169040c3577e17d4f6fa230cc28"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jul 22 19:27:32 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:13 2007 -0400"
      },
      "message": "NFS: Clean up nfs_writepages()\n\nJust call write_cache_pages directly instead of hacking the writeback\ncontrol structure in order to find out if we were called from writepages()\nor directly from the VM.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9cccef95052c7169040c3577e17d4f6fa230cc28",
      "tree": "56d0cfc610272f67bde429565d3b23b83d2df6af",
      "parents": [
        "94387fb1aa16ee853d00f959373132a181b0196b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jul 22 17:09:05 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:11 2007 -0400"
      },
      "message": "NFS: Clean up write code...\n\nThe addition of nfs_page_mkwrite means that We should no longer need to\ncreate requests inside nfs_writepage()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "94387fb1aa16ee853d00f959373132a181b0196b",
      "tree": "e41d802c5f6aa8f1d9077b6e15337e2d143098e6",
      "parents": [
        "bbf25010f1a6b761914430f5fca081ec8c7accd1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jul 22 17:09:05 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:08 2007 -0400"
      },
      "message": "NFS: Add the helper nfs_vm_page_mkwrite\n\nThis is needed in order to set up a proper nfs_page request for mmapped\nfiles.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "54af3bb543c071769141387a42deaaab5074da55",
      "tree": "d24e5b23462a51a4e932b14feb5ae943b0dbba1e",
      "parents": [
        "bd8936632475665bfd90c1180c9c1301ee838db8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 12:27:41 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Sep 28 15:36:42 2007 -0700"
      },
      "message": "NFS: Fix an Oops in encode_lookup()\n\nIt doesn\u0027t look as if the NFS file name limit is being initialised correctly\nin the struct nfs_server. Make sure that we limit whatever is being set in\nnfs_probe_fsinfo() and nfs_init_server().\n\nAlso ensure that readdirplus and nfs4_path_walk respect our file name\nlimits.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "49af7ee181f4f516ac99eba85d3f70ed42cabe76",
      "tree": "16488e4c2fb10732e87a539bb106624357f10b89",
      "parents": [
        "3d82abae9523c33d4a16fdfdfd2bdde316d7b56a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Sep 18 22:46:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Sep 19 11:24:18 2007 -0700"
      },
      "message": "nfs: fix oops re sysctls and V4 support\n\nNFS unregisters sysctls only if V4 support is compiled in.  However, sysctl\ntable is not V4 specific, so unregister it always.\n\nSteps to reproduce:\n\n\t[build nfs.ko with CONFIG_NFS_V4\u003dn]\n\tmodrobe nfs\n\trmmod nfs\n\tls /proc/sys\n\nUnable to handle kernel paging request at ffffffff880661c0 RIP:\n [\u003cffffffff802af8e3\u003e] proc_sys_readdir+0xd3/0x350\nPGD 203067 PUD 207063 PMD 7e216067 PTE 0\nOops: 0000 [1] SMP\nCPU 1\nModules linked in: lockd nfs_acl sunrpc\nPid: 3335, comm: ls Not tainted 2.6.23-rc3-bloat #2\nRIP: 0010:[\u003cffffffff802af8e3\u003e]  [\u003cffffffff802af8e3\u003e] proc_sys_readdir+0xd3/0x350\nRSP: 0018:ffff81007fd93e78  EFLAGS: 00010286\nRAX: ffffffff880661c0 RBX: ffffffff80466370 RCX: ffffffff880661c0\nRDX: 00000000000014c0 RSI: ffff81007f3ad020 RDI: ffff81007efd8b40\nRBP: 0000000000000018 R08: 0000000000000000 R09: 0000000000000000\nR10: 0000000000000001 R11: ffffffff802a8570 R12: ffffffff880661c0\nR13: ffff81007e219640 R14: ffff81007efd8b40 R15: ffff81007ded7280\nFS:  00002ba25ef03060(0000) GS:ffff81007ff81258(0000) knlGS:0000000000000000\nCS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\nCR2: ffffffff880661c0 CR3: 000000007dfaf000 CR4: 00000000000006e0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess ls (pid: 3335, threadinfo ffff81007fd92000, task ffff81007d8a0000)\nStack:  ffff81007f3ad150 ffffffff80283f30 ffff81007fd93f48 ffff81007efd8b40\n ffff81007ee00440 0000000422222222 0000000200035593 ffffffff88037e9a\n 2222222222222222 ffffffff80466500 ffff81007e416400 ffff81007e219640\nCall Trace:\n [\u003cffffffff80283f30\u003e] filldir+0x0/0xf0\n [\u003cffffffff80283f30\u003e] filldir+0x0/0xf0\n [\u003cffffffff802840c7\u003e] vfs_readdir+0xa7/0xc0\n [\u003cffffffff80284376\u003e] sys_getdents+0x96/0xe0\n [\u003cffffffff8020bb3e\u003e] system_call+0x7e/0x83\n\nCode: 41 8b 14 24 85 d2 74 dc 49 8b 44 24 08 48 85 c0 74 e7 49 3b\nRIP  [\u003cffffffff802af8e3\u003e] proc_sys_readdir+0xd3/0x350\n RSP \u003cffff81007fd93e78\u003e\nCR2: ffffffff880661c0\nKernel panic - not syncing: Fatal exception\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b3b4a1a2deb7d3e5d66063bd76304d840c966b3",
      "tree": "dfa71fe35420aa18997cabff53afcf3a0db0825a",
      "parents": [
        "7d1cca72994c0e910ca443076dcfcfd473871dda"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 28 10:29:36 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 01 10:14:54 2007 -0400"
      },
      "message": "NFS: Fix a write request leak in nfs_invalidate_page()\n\nRyusuke Konishi says:\n\nThe recent truncate_complete_page() clears the dirty flag from a page\nbefore calling a_ops-\u003einvalidatepage(),\n^^^^^^\nstatic void\ntruncate_complete_page(struct address_space *mapping, struct page *page)\n{\n        ...\n        cancel_dirty_page(page, PAGE_CACHE_SIZE);  \u003c--- Inserted here at\nkernel 2.6.20\n\n        if (PagePrivate(page))\n                do_invalidatepage(page, 0);   ---\u003e will call\na_ops-\u003einvalidatepage()\n        ...\n}\n\nand this is disturbing nfs_wb_page_priority() from calling \nnfs_writepage_locked() that is expected to handle the pending\nrequest (\u003dnfs_page) associated with the page.\n\nint nfs_wb_page_priority(struct inode *inode, struct page *page, int how)\n{\n        ...\n        if (clear_page_dirty_for_io(page)) {\n                ret \u003d nfs_writepage_locked(page, \u0026wbc);\n                if (ret \u003c 0)\n                        goto out;\n        }\n        ...\n}\n\nSince truncate_complete_page() will get rid of the page after\na_ops-\u003einvalidatepage() returns, the request (\u003dnfs_page) associated\nwith the page becomes a garbage in nfs_inode-\u003enfs_page_tree.\n------------------------\n\nFix this by ensuring that nfs_wb_page_priority() recognises that it may\nalso need to clear out non-dirty pages that have an nfs_page associated\nwith them.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7d1cca72994c0e910ca443076dcfcfd473871dda",
      "tree": "298d60951f738592c0ac19aea5cb1e5e57f113a7",
      "parents": [
        "350c73af6af51ae7654dad91874c0d30dd13bbbe"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Aug 29 17:59:03 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 01 10:14:40 2007 -0400"
      },
      "message": "NFS: change NFS mount error return when hostname/pathname too long\n\nAccording to the mount(2) man page, the proper error return code for the\nmount(2) system call when the special device name or the mounted-on\ndirectory name is too long is ENAMETOOLONG.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "350c73af6af51ae7654dad91874c0d30dd13bbbe",
      "tree": "72c706f6085b79865cca7cda7a0ae3b13d8e3fe0",
      "parents": [
        "fdc6e2c8c0dc0ac702fca0b802f5d9ae99a54bb6"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Aug 29 17:59:01 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 01 10:14:40 2007 -0400"
      },
      "message": "NFS: Off-by-one length error in string handling\n\nThe hostname was getting truncated in the new text-based NFS mount API.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fdc6e2c8c0dc0ac702fca0b802f5d9ae99a54bb6",
      "tree": "2576d28a27019a9ba7118a2291985599a44e2cc4",
      "parents": [
        "fdb66ff4ace3c4e18809b9b71dfcce1692143147"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Aug 29 17:58:59 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 01 10:14:39 2007 -0400"
      },
      "message": "NFS: Return a real error code from mount(2)\n\nDon\u0027t filter the return code from the in-kernel rpcbind or NFS mount\nclients.  Return the real error code so that callers of the new NFS\ntext-based mount API can apply a useful retry strategy.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fdb66ff4ace3c4e18809b9b71dfcce1692143147",
      "tree": "8e7db455c604ce2cfe27dcf4332fca8f4c9f8b46",
      "parents": [
        "deee9369b993b52a8e2f25683b4a67be7a65e8ae"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Aug 29 17:58:57 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 01 10:14:38 2007 -0400"
      },
      "message": "NFS: mount option parser chokes on proto\u003d\n\nThe new text-based NFS mount option parsing logic doesn\u0027t recognize any\nvalid transport protocols due to a silly mistake in the protocol token\nmatching logic.  This prevents basic mount requests such as:\n\n   mount.nfs server:/export /mnt -o proto\u003dtcp\n\nfrom working with the new text-based NFS mount API.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "deee9369b993b52a8e2f25683b4a67be7a65e8ae",
      "tree": "d5d4f56c77ac21bc4f693ceaacdd3b6c87a00e56",
      "parents": [
        "65bbf6bdbba0f74e254f706bfb00fe533974f4f1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 27 11:33:00 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 01 10:14:38 2007 -0400"
      },
      "message": "NFSv4: Ensure that we pass the correct dentry to nfs4_intent_set_file\n\nThis patch fixes an Oops that was reported by Gabriel Barazer.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "65bbf6bdbba0f74e254f706bfb00fe533974f4f1",
      "tree": "abf43f323a6320249e4dbe032fe32f2e403563cb",
      "parents": [
        "560aef74503e928f44ddbf481b8b02d9cef37dbf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 27 09:57:46 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 01 10:14:37 2007 -0400"
      },
      "message": "NFSv4: Fix a typo in _nfs4_do_open_reclaim\n\nThis should fix the following Oops reported by Jeff Garzik:\n\nkernel BUG at fs/nfs/nfs4xdr.c:1040!\ninvalid opcode: 0000 [1] SMP \nCPU 0 \nModules linked in: nfs lockd sunrpc af_packet\nipv6 cpufreq_ondemand acpi_cpufreq battery floppy nvram sg snd_hda_intel\nata_generic snd_pcm_oss snd_mixer_oss snd_pcm i2c_i801 snd_page_alloc e1000\nfirewire_ohci ata_piix i2c_core sr_mod cdrom sata_sil ahci libata sd_mod\nscsi_mod ext3 jbd ehci_hcd uhci_hcd\nPid: 16353, comm: 10.10.10.1-recl Not tainted 2.6.23-rc3 #1\nRIP: 0010:[\u003cffffffff88240980\u003e] [\u003cffffffff88240980\u003e] :nfs:encode_open+0x1c0/0x330\nRSP: 0018:ffff8100467c5c60  EFLAGS: 00010202\nRAX: ffff81000f89b8b8 RBX: 00000000697a6f6d RCX: ffff81000f89b8b8\nRDX: 0000000000000004 RSI: 0000000000000004 RDI: ffff8100467c5c80\nRBP: ffff8100467c5c80 R08: ffff81000f89bc30 R09: ffff81000f89b83f\nR10: 0000000000000001 R11: ffffffff881e79e0 R12: ffff81003cbd1808\nR13: ffff81000f89b860 R14: ffff81005fc984e0 R15: ffffffff88240af0\nFS:  0000000000000000(0000) GS:ffffffff8052a000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b\nCR2: 00002adb9e51a030 CR3: 000000007ea7e000 CR4: 00000000000006e0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess 10.10.10.1-recl (pid: 16353, threadinfo ffff8100467c4000, task ffff8100038ce780)\nStack:  ffff81004aeb6a40 ffff81003cbd1808 ffff81003cbd1808 ffffffff88240b5d\n ffff81000f89b8bc ffff81005fc984e8 ffff81000f89bc30 ffff81005fc984e8\n 0000000300000000 0000000000000000 0000000000000000 ffff81003cbd1800\nCall Trace:\n [\u003cffffffff88240b5d\u003e] :nfs:nfs4_xdr_enc_open_noattr+0x6d/0x90\n [\u003cffffffff881e74b7\u003e] :sunrpc:rpcauth_wrap_req+0x97/0xf0\n [\u003cffffffff88240af0\u003e] :nfs:nfs4_xdr_enc_open_noattr+0x0/0x90\n [\u003cffffffff881df57a\u003e] :sunrpc:call_transmit+0x18a/0x290\n [\u003cffffffff881e5e7b\u003e] :sunrpc:__rpc_execute+0x6b/0x290\n [\u003cffffffff881dff76\u003e] :sunrpc:rpc_do_run_task+0x76/0xd0\n [\u003cffffffff882373f6\u003e] :nfs:_nfs4_proc_open+0x76/0x230\n [\u003cffffffff88237a2e\u003e] :nfs:nfs4_open_recover_helper+0x5e/0xc0\n [\u003cffffffff88237b74\u003e] :nfs:nfs4_open_recover+0xe4/0x120\n [\u003cffffffff88238e14\u003e] :nfs:nfs4_open_reclaim+0xa4/0xf0\n [\u003cffffffff882413c5\u003e] :nfs:nfs4_reclaim_open_state+0x55/0x1b0\n [\u003cffffffff882417ea\u003e] :nfs:reclaimer+0x2ca/0x390\n [\u003cffffffff88241520\u003e] :nfs:reclaimer+0x0/0x390\n [\u003cffffffff8024e59b\u003e] kthread+0x4b/0x80\n [\u003cffffffff8020cad8\u003e] child_rip+0xa/0x12\n [\u003cffffffff8024e550\u003e] kthread+0x0/0x80\n [\u003cffffffff8020cace\u003e] child_rip+0x0/0x12\n\n\nCode: 0f 0b eb fe 48 89 ef c7 00 00 00 00 02 be 08 00 00 00 e8 79 \nRIP  [\u003cffffffff88240980\u003e] :nfs:encode_open+0x1c0/0x330\n RSP \u003cffff8100467c5c60\u003e\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "560aef74503e928f44ddbf481b8b02d9cef37dbf",
      "tree": "739c3f1d806d2f34b5573a5ba80d25765e38c887",
      "parents": [
        "40ffbfad6bb79a99cc7627bdaca0ee22dec526f6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 27 09:14:56 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 01 10:14:36 2007 -0400"
      },
      "message": "NFS: Fix use of cancel_delayed_work_sync in nfs_release_automount_timer\n\nDoh! We can\u0027t use cancel_delayed_work_sync because we may have been called\nfrom an unmount that was being performed by nfs_automount_task.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e89a5a43b95cdc4305b7c8e8121a380f02476636",
      "tree": "ba286205f1ad11119a06b77fb6671ce9aacac13a",
      "parents": [
        "36ad4885c47c2187822f2783fb46fde2d36bf200"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Aug 31 10:45:17 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Aug 31 20:26:45 2007 -0700"
      },
      "message": "NFS: Fix the mount regression\n\nThis avoids the recent NFS mount regression (returning EBUSY when\nmounting the same filesystem twice with different parameters).\n\nThe best I can do given the constraints appears to be to have the kernel\nfirst look for a superblock that matches both the fsid and the\nuser-specified mount options, and then spawn off a new superblock if\nthat search fails.\n\nNote that this is not the same as specifying nosharecache everywhere\nsince nosharecache will never attempt to match an existing superblock.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nTested-by: Hua Zhong \u003chzhong@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3d39c691ff486142dd9aaeac12f553f4476b7a62",
      "tree": "78ad555ea06be23933a93ec9c7c68a788f979085",
      "parents": [
        "a4deb81ba8ece75af5560d40d9bb8d242c48a111"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 07 15:28:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 07 16:12:50 2007 -0400"
      },
      "message": "NFS: Replace flush_scheduled_work with cancel_work_sync() and friends\n\nThis will avoid deadlocks of the form:\n\nstack backtrace:\n [\u003cc0104fda\u003e] show_trace_log_lvl+0x1a/0x30\n [\u003cc0105c02\u003e] show_trace+0x12/0x20\n [\u003cc0105d15\u003e] dump_stack+0x15/0x20\n [\u003cc013ee42\u003e] __lock_acquire+0xc22/0x1030\n [\u003cc013f2b1\u003e] lock_acquire+0x61/0x80\n [\u003cc012edd9\u003e] flush_workqueue+0x49/0x70\n [\u003cc012ee0d\u003e] flush_scheduled_work+0xd/0x10\n [\u003cdcf55c0c\u003e] nfs_release_automount_timer+0x2c/0x30 [nfs]\n [\u003cdcf45d8e\u003e] nfs_free_server+0x9e/0xd0 [nfs]\n [\u003cdcf4e626\u003e] nfs_kill_super+0x16/0x20 [nfs]\n [\u003cc017b38d\u003e] deactivate_super+0x7d/0xa0\n [\u003cc018f94b\u003e] mntput_no_expire+0x4b/0x80\n [\u003cc018fd94\u003e] expire_mount_list+0xe4/0x140\n [\u003cc0191219\u003e] mark_mounts_for_expiry+0x99/0xb0\n [\u003cdcf55d1d\u003e] nfs_expire_automounts+0xd/0x40 [nfs]\n [\u003cc012e61b\u003e] run_workqueue+0x12b/0x1e0\n [\u003cc012f05b\u003e] worker_thread+0x9b/0x100\n [\u003cc0131c72\u003e] kthread+0x42/0x70\n [\u003cc0104c0f\u003e] kernel_thread_helper+0x7/0x18\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "905f8d16e32fd48499e3f8b9a2d9f746af3e0949",
      "tree": "425b4fa10b788fa7f4e820890c4fac1861408340",
      "parents": [
        "45328c354e8ae16b67cb3adb72ab57459f9e5fd6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 06 12:18:34 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 07 15:15:57 2007 -0400"
      },
      "message": "NFSv4: Don\u0027t call put_rpccred() from an rcu callback\n\nDoing so would require us to introduce bh-safe locks into put_rpccred().\nThis patch fixes the lockdep complaint reported by Marc Dietrich:\n\ninconsistent {softirq-on-W} -\u003e {in-softirq-W} usage.\nswapper/0 [HC0[0]:SC1[1]:HE1:SE0] takes:\n (rpc_credcache_lock){-+..}, at: [\u003cc01dc487\u003e]\n_atomic_dec_and_lock+0x17/0x60\n{softirq-on-W} state was registered at:\n  [\u003cc013e870\u003e] __lock_acquire+0x650/0x1030\n  [\u003cc013f2b1\u003e] lock_acquire+0x61/0x80\n  [\u003cc02db9ac\u003e] _spin_lock+0x2c/0x40\n  [\u003cc01dc487\u003e] _atomic_dec_and_lock+0x17/0x60\n  [\u003cdced55fd\u003e] put_rpccred+0x5d/0x100 [sunrpc]\n  [\u003cdced56c1\u003e] rpcauth_unbindcred+0x21/0x60 [sunrpc]\n  [\u003cdced3fd4\u003e] a0 [sunrpc]\n  [\u003cdcecefe0\u003e] rpc_call_sync+0x30/0x40 [sunrpc]\n  [\u003cdcedc73b\u003e] rpcb_register+0xdb/0x180 [sunrpc]\n  [\u003cdced65b3\u003e] svc_register+0x93/0x160 [sunrpc]\n  [\u003cdced6ebe\u003e] __svc_create+0x1ee/0x220 [sunrpc]\n  [\u003cdced7053\u003e] svc_create+0x13/0x20 [sunrpc]\n  [\u003cdcf6d722\u003e] nfs_callback_up+0x82/0x120 [nfs]\n  [\u003cdcf48f36\u003e] nfs_get_client+0x176/0x390 [nfs]\n  [\u003cdcf49181\u003e] nfs4_set_client+0x31/0x190 [nfs]\n  [\u003cdcf49983\u003e] nfs4_create_server+0x63/0x3b0 [nfs]\n  [\u003cdcf52426\u003e] nfs4_get_sb+0x346/0x5b0 [nfs]\n  [\u003cc017b444\u003e] vfs_kern_mount+0x94/0x110\n  [\u003cc0190a62\u003e] do_mount+0x1f2/0x7d0\n  [\u003cc01910a6\u003e] sys_mount+0x66/0xa0\n  [\u003cc0104046\u003e] syscall_call+0x7/0xb\n  [\u003cffffffff\u003e] 0xffffffff\nirq event stamp: 5277830\nhardirqs last  enabled at (5277830): [\u003cc017530a\u003e] kmem_cache_free+0x8a/0xc0\nhardirqs last disabled at (5277829): [\u003cc01752d2\u003e] kmem_cache_free+0x52/0xc0\nsoftirqs last  enabled at (5277798): [\u003cc0124173\u003e] __do_softirq+0xa3/0xc0\nsoftirqs last disabled at (5277817): [\u003cc01241d7\u003e] do_softirq+0x47/0x50\n\nother info that might help us debug this:\nno locks held by swapper/0.\n\nstack backtrace:\n [\u003cc0104fda\u003e] show_trace_log_lvl+0x1a/0x30\n [\u003cc0105c02\u003e] show_trace+0x12/0x20\n [\u003cc0105d15\u003e] dump_stack+0x15/0x20\n [\u003cc013ccc3\u003e] print_usage_bug+0x153/0x160\n [\u003cc013d8b9\u003e] mark_lock+0x449/0x620\n [\u003cc013e824\u003e] __lock_acquire+0x604/0x1030\n [\u003cc013f2b1\u003e] lock_acquire+0x61/0x80\n [\u003cc02db9ac\u003e] _spin_lock+0x2c/0x40\n [\u003cc01dc487\u003e] _atomic_dec_and_lock+0x17/0x60\n [\u003cdced55fd\u003e] put_rpccred+0x5d/0x100 [sunrpc]\n [\u003cdcf6bf83\u003e] nfs_free_delegation_callback+0x13/0x20 [nfs]\n [\u003cc012f9ea\u003e] __rcu_process_callbacks+0x6a/0x1c0\n [\u003cc012fb52\u003e] rcu_process_callbacks+0x12/0x30\n [\u003cc0124218\u003e] tasklet_action+0x38/0x80\n [\u003cc0124125\u003e] __do_softirq+0x55/0xc0\n [\u003cc01241d7\u003e] do_softirq+0x47/0x50\n [\u003cc0124605\u003e] irq_exit+0x35/0x40\n [\u003cc0112463\u003e] smp_apic_timer_interrupt+0x43/0x80\n [\u003cc0104a77\u003e] apic_timer_interrupt+0x33/0x38\n [\u003cc02690df\u003e] cpuidle_idle_call+0x6f/0x90\n [\u003cc01023c3\u003e] cpu_idle+0x43/0x70\n [\u003cc02d8c27\u003e] rest_init+0x47/0x50\n [\u003cc03bcb6a\u003e] start_kernel+0x22a/0x2b0\n [\u003c00000000\u003e] 0x0\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "45328c354e8ae16b67cb3adb72ab57459f9e5fd6",
      "tree": "f0c4271a0c9f6b8d9b499f22fffc1804419d49c8",
      "parents": [
        "ba683031fae115d61c6b5f4c675cc27f6e9576d2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 26 17:47:34 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 07 15:13:19 2007 -0400"
      },
      "message": "NFS: Fix NFSv4 open stateid regressions\n\nDo not allow cached open for O_RDONLY or O_WRONLY unless the file has been\npreviously opened in these modes.\n\nAlso Fix the calculation of the mode in nfs4_close_prepare. We should only\nissue an OPEN_DOWNGRADE if we\u0027re sure that we will still be holding the\ncorrect open modes. This may not be the case if we\u0027ve been doing delegated\nopens.\n\nFinally, there is no need to adjust the open mode bit flags in\nnfs4_close_done(): that has already been done in nfs4_close_prepare().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ba683031fae115d61c6b5f4c675cc27f6e9576d2",
      "tree": "561bdd11d1b9c5982fa2317c6c0afeb99ab44e5b",
      "parents": [
        "5e11934d13c9a3bcb0cadad6c7a7de5c32660422"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 27 10:23:05 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 07 15:13:18 2007 -0400"
      },
      "message": "NFSv4: Fix a locking regression in nfs4_set_mode_locked()\n\nWe don\u0027t really need to clear \u0026state-\u003einode_states inside\nnfs4_set_mode_locked, and doing so without holding the inode-\u003ei_lock would\nin any case be a bug...\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": "41089644c110756a6d09ace77c8d7624660d086a",
      "tree": "d61b773bf0508925142c6d2941c4609afe5a9538",
      "parents": [
        "77668791d96436f48fca94255934b67dab924a0f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sun Jul 22 10:59:06 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jul 22 11:15:18 2007 -0700"
      },
      "message": "fix broken handling of port\u003d... in NFS option parsing\n\nObviously broken on little-endian; fortunately, the option is not\nfrequently used...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n[ Hey, sparse is wonderful, but even better than sparse is having people\n  like Al that actually _run_ it and fix bugs using it.    - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "0a87cf128f3d3bc6aa7b1040e73109c974ed875a",
      "tree": "07bfeee89a7df2377cdb2b7d6770d66edd8bb308",
      "parents": [
        "f9d888fcd9665b863fa042212a3ee7b4c51399f6"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Jul 18 11:28:43 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:21:40 2007 -0400"
      },
      "message": "NFSv4: handle lack of clientaddr in option string\n\nIf a NFSv4 mount is attempted  with string based options, and the\noption string doesn\u0027t contain a clientaddr\u003d option, the kernel will\ncurrently oops. Check for this situation and return a proper error.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f9d888fcd9665b863fa042212a3ee7b4c51399f6",
      "tree": "1e8d4dff8be4b237d908fcb9d6460e472219a1ab",
      "parents": [
        "e4eff1a622edd6ab7b73acd5d8763aa2fa3fee49"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Sun Jul 15 20:14:32 2007 +0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:21:40 2007 -0400"
      },
      "message": "NFSv4: debug print ntohl(status) in nfs client callback xdr code\n\nstatus in nfs client callback xdr code is passed in network order.\nprint it in host order for better readability.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e4eff1a622edd6ab7b73acd5d8763aa2fa3fee49",
      "tree": "257d6675733d4af122a77054281e1d7d5062d904",
      "parents": [
        "4fdc17b2a7f4d9db5b08e0f963d0027f714e4104"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:39:58 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:21:39 2007 -0400"
      },
      "message": "SUNRPC: Clean up the sillyrename code\n\nFix a couple of bugs:\n - Don\u0027t rely on the parent dentry still being valid when the call completes.\n   Fixes a race with shrink_dcache_for_umount_subtree()\n\n - Don\u0027t remove the file if the filehandle has been labelled as stale.\n\nFix a couple of inefficiencies\n - Remove the global list of sillyrenamed files. Instead we can cache the\n   sillyrename information in the dentry-\u003ed_fsdata\n - Move common code from unlink_setup/unlink_done into fs/nfs/unlink.c\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4fdc17b2a7f4d9db5b08e0f963d0027f714e4104",
      "tree": "502aacc94e06962c2f3352b6ced1146245158be1",
      "parents": [
        "3062c532ad410fe0e8320566fe2879a396be6701"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:39:57 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:21:39 2007 -0400"
      },
      "message": "NFS: Introduce struct nfs_removeargs+nfs_removeres\n\nWe need a common structure for setting up an unlink() rpc call in order to\nfix the asynchronous unlink code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3062c532ad410fe0e8320566fe2879a396be6701",
      "tree": "a6187e4988378bd6cc9712f0881417e0f360917b",
      "parents": [
        "be879c4e249a8875d7129f3b0c1bb62584dafbd8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 17:36:45 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:21:39 2007 -0400"
      },
      "message": "NFS: Use dentry-\u003ed_time to store the parent directory verifier.\n\nThis will free up the d_fsdata field for other use.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e3a535e1739a9da3cc316ccdfe5cd4bf84d745ac",
      "tree": "9730d4689879bfaf4d9de87df513b9510edf7432",
      "parents": [
        "d6ac02dfaa6c423874839fe289c7320624aa9288"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 10:03:38 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:09:04 2007 -0400"
      },
      "message": "NFSv4: Fix the nfsv4 readlink reply buffer alignment\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d6ac02dfaa6c423874839fe289c7320624aa9288",
      "tree": "caa14224aa031779251b1ffc340e2fbbf00a9b63",
      "parents": [
        "9104a55dc382c4aae42dff3f54351085cbcb7317"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 10:03:37 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 19 15:09:04 2007 -0400"
      },
      "message": "NFSv4: Fix the readdir reply buffer alignment\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "9104a55dc382c4aae42dff3f54351085cbcb7317"
}
