)]}'
{
  "log": [
    {
      "commit": "51cc50685a4275c6a02653670af9f108a64e01cf",
      "tree": "819d47bd2b0c8a9d1835d863853804b0a0242b97",
      "parents": [
        "d91958815d214ea365b98cbff6215383897edcb6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Jul 25 19:45:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:07 2008 -0700"
      },
      "message": "SL*B: drop kmem cache argument from constructor\n\nKmem cache passed to constructor is only needed for constructors that are\nthemselves multiplexeres.  Nobody uses this \"feature\", nor does anybody uses\npassed kmem cache in non-trivial way, so pass only pointer to object.\n\nNon-trivial places are:\n\tarch/powerpc/mm/init_64.c\n\tarch/powerpc/mm/hugetlbpage.c\n\nThis is flag day, yes.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\n[akpm@linux-foundation.org: fix arch/powerpc/mm/hugetlbpage.c]\n[akpm@linux-foundation.org: fix mm/slab.c]\n[akpm@linux-foundation.org: fix ubifs]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fa6dc9dc59c3a76fd209a97c8cf37395980fb903",
      "tree": "3af530da9d0a21f385007afb34bc058e3f6cab21",
      "parents": [
        "a3d01454bc58b5a211ef64a7670572a40b71e682"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 13:26:14 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:51 2008 -0400"
      },
      "message": "NFS: Remove attribute update related BKL references\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a3d01454bc58b5a211ef64a7670572a40b71e682",
      "tree": "68c1ba383fb2c6702a8cc02bc81d51da6fb2920b",
      "parents": [
        "1b83d707032a1be40a60ed0a9bd841662cc04a5d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 12:21:19 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:51 2008 -0400"
      },
      "message": "NFS: Remove BKL requirement from attribute updates\n\nThe main problem is dealing with inode-\u003ei_size: we need to set the\ninode-\u003ei_lock on all attribute updates, and so vmtruncate won\u0027t cut it.\nMake an NFS-private version of vmtruncate that has the necessary locking\nsemantics.\n\nThe result should be that the following inode attribute updates are\nprotected by inode-\u003ei_lock\n\tnfsi-\u003ecache_validity\n\tnfsi-\u003eread_cache_jiffies\n\tnfsi-\u003eattrtimeo\n\tnfsi-\u003eattrtimeo_timestamp\n\tnfsi-\u003echange_attr\n\tnfsi-\u003elast_updated\n\tnfsi-\u003ecache_change_attribute\n\tnfsi-\u003eaccess_cache\n\tnfsi-\u003eaccess_cache_entry_lru\n\tnfsi-\u003eaccess_cache_inode_lru\n\tnfsi-\u003eacl_access\n\tnfsi-\u003eacl_default\n\tnfsi-\u003enfs_page_tree\n\tnfsi-\u003encommit\n\tnfsi-\u003enpages\n\tnfsi-\u003eopen_files\n\tnfsi-\u003esilly_list\n\tnfsi-\u003eacl\n\tnfsi-\u003eopen_states\n\tinode-\u003ei_size\n\tinode-\u003ei_atime\n\tinode-\u003ei_mtime\n\tinode-\u003ei_ctime\n\tinode-\u003ei_nlink\n\tinode-\u003ei_uid\n\tinode-\u003ei_gid\n\nThe following is protected by dir-\u003ei_mutex\n\tnfsi-\u003ecookieverf\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f41f741838480aeaa3a189cff6e210503cf9c42d",
      "tree": "fc4509d47132c28ca211e57d8f59b56accb6db8b",
      "parents": [
        "2e96d2867245668dbdb973729288cf69b9fafa66"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 17:39:04 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:19 2008 -0400"
      },
      "message": "NFS: Ensure we zap only the access and acl caches when setting new acls\n\n...and ensure that we obey the NFS_INO_INVALID_ACL flag when retrieving the\nacls.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "659bfcd6dd88919a5ad453f62afbeffcb3106847",
      "tree": "e3996d809e9ae4860a8adac71474e6ea8850c3b5",
      "parents": [
        "a486aeda9b2b0d944aecce7871b3186379b898de"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 10 19:39:41 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:14 2008 -0400"
      },
      "message": "NFS: Fix the ftruncate() credential problem\n\nftruncate() access checking is supposed to be performed at open() time,\njust like reads and writes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "31f31db1a15671513df9cd9fbe56ef45ee1e9a2a",
      "tree": "ad4015fb8159aaa18041791c2c85e272c5565dd7",
      "parents": [
        "3110ff8048fb757b36112b044b384aea9c44d6e4"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Fri May 02 13:42:45 2008 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:30 2008 -0700"
      },
      "message": "nfs: path_{get,put}() cleanups\n\nHere are some more places where path_{get,put}() can be used instead of\ndput()/mntput() pair.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3110ff8048fb757b36112b044b384aea9c44d6e4",
      "tree": "5260f4973bd0848ddef3fb3c111386e59616abbc",
      "parents": [
        "46c8ac74250a396aca855e494f49a960797a6b5e"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri May 02 13:42:44 2008 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:29 2008 -0700"
      },
      "message": "nfs: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b0b539739fe9b7d75002412a787cfdf4efddbc33",
      "tree": "0b20f42bb8cdef9bba26c7ca0e4afe883e5c9c25",
      "parents": [
        "f26a3988917913b3d11b2bd741601a2c64ab9204"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 05 11:45:41 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:21 2008 -0700"
      },
      "message": "NFS: Ensure that \u0027noac\u0027 and/or \u0027actimeo\u003d0\u0027 turn off attribute caching\n\nBoth the \u0027noac\u0027 and \u0027actimeo\u003d0\u0027 mount options should ensure that attributes\nare not cached, however a bug in nfs_attribute_timeout() means that\ncurrently, the attributes may in fact get cached for up to one jiffy. This\nhas been seen to cause corruption in some applications.\n\nThe reason for the bug is that the time_in_range() test returns \u0027true\u0027 as\nlong as the current time lies between nfsi-\u003eread_cache_jiffies and\nnfsi-\u003eread_cache_jiffies + nfsi-\u003eattrtimeo. In other words, if jiffies\nequals nfsi-\u003eread_cache_jiffies, then we still cache the attribute data.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "233607dbbc823caf685e778cabc49fb7f679900b",
      "tree": "13840137ee10788061cbec60fcfe8ea4c274558e",
      "parents": [
        "3dc5063786b273f1aee545844f6bd4e9651ebffe",
        "b48633bd086d21f4a2a5bea96c7e6c7ba58eb60c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 24 14:01:02 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 24 14:01:02 2008 -0400"
      },
      "message": "Merge branch \u0027devel\u0027\n"
    },
    {
      "commit": "66d3aac04175c35564cc5982934b68bc4f89a76d",
      "tree": "0b71ad81894f9d0beb0384691d50db71788f5504",
      "parents": [
        "daeba89d43af0fa469d38a4ccdc32fff8ca17c2e"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Mon Mar 31 15:01:58 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 08 21:06:53 2008 -0400"
      },
      "message": "NFS: initialize flags field in nfs_open_context\n\nThe nfs_open_context struct had a \"flags\" field added recently, but the\nallocator isn\u0027t initializing it. It also looks like the allocator isn\u0027t\ninitializing the mode or list either, but they seem to be overwritten\nby the caller, so that\u0027s less of an issue.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "98a8e3239427051f5d44f2025b398bdcc3918f37",
      "tree": "aa3e6ba69dbf8575c2c6e10c013aa23d7d638af0",
      "parents": [
        "5c691044ecbca04dd558fca4c754121689fe1b34"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 12 12:25:28 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 14 13:42:49 2008 -0400"
      },
      "message": "SUNRPC: Add a helper rpcauth_lookup_generic_cred()\n\nThe NFSv4 protocol allows clients to negotiate security protocols on the\nfly in the case where an administrator on the server changes the export\nsettings and/or in the case where we may have a filesystem migration event.\n\nInstead of having the NFS client code cache credentials that are tied to a\nparticular AUTH method it is therefore preferable to have a generic credential\nthat can be converted into whatever AUTH is in use by the RPC client when\nthe read/write/sillyrename/... is put on the wire.\n\nWe do this by means of the new \"generic\" credential, which basically just\ncaches the minimal information that is needed to look up an RPCSEC_GSS,\nAUTH_SYS, or AUTH_NULL credential.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9446389ef612096704fdf18fa79bab423d4110f0",
      "tree": "3e4fda7270be58ae176d20d318e61fb115b325b5",
      "parents": [
        "cdd0972945dbcb8ea24db365d9b0e100af2a27bb",
        "84c6f6046c5a2189160a8f0dca8b90427bf690ea"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 08 11:49:24 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 08 11:49:24 2008 -0500"
      },
      "message": "Merge commit \u0027origin\u0027 into devel\n"
    },
    {
      "commit": "c37dcd334c0b0a46a90cfa13b9f69e2aaa89bc09",
      "tree": "0792bbc64fff676c76a696a76a9f703cd9500145",
      "parents": [
        "ee1a2c564f67407947e89f1dac75ac0af0ba88c7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 06 12:34:50 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 07 14:35:37 2008 -0500"
      },
      "message": "NFS: Fix the fsid revalidation in nfs_update_inode()\n\nWhen we detect that we\u0027ve crossed a mountpoint on the remote server, we\nmust take care not to use that inode to revalidate the fsid on our\ncurrent superblock. To do so, we label the inode as a remote mountpoint,\nand check for that in nfs_update_inode().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5746006f1d17d9d5a3015051ea54de4341cb31f9",
      "tree": "fc1d03a1e58a0a0a3cc03c46cbebdebf8cfe054e",
      "parents": [
        "32bfb5c0f495dd88ef6bac4b76885d0820563739"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 19 20:04:22 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:40:36 2008 -0800"
      },
      "message": "NFS: Add an nfsiod workqueue\n\nNFS post-rpciod cleanups often involve tasks that cannot be safely\nperformed within the rpciod context (due to deadlock concerns). We\ntherefore add a dedicated NFS workqueue that can perform tasks like\ncleaning up state after an interrupted NFSv4 open() call, or calling\nput_nfs_open_context() after an asynchronous read or write call.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "383ba71938519959be8e0b598ec658f0c211ff45",
      "tree": "01eb0155676fe69d40f01dc137ea3be952d88997",
      "parents": [
        "4b5621f6b127bce9218998c187bd25bf7f9fc371"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 19 20:04:20 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:40:33 2008 -0800"
      },
      "message": "NFS: Fix a deadlock with lazy umount\n\nWe can\u0027t allow rpc callback functions like task-\u003etk_ops-\u003erpc_call_prepare()\nand task-\u003etk_ops-\u003erpc_call_done() to call mntput() in any way, since\nthat will cause a deadlock when the call to rpc_shutdown_client() attempts\nto wait on \u0027task\u0027 to complete.\n\nWe can avoid the above deadlock by moving calls to mntput to\ntask-\u003etk_ops-\u003erpc_release() callback, since at that time the task will be\nmarked as completed, and so rpc_shutdown_client won\u0027t attempt to wait on\nit.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "75659ca0c10992dcb39258518368a0f6f56e935d",
      "tree": "5d014ceb2f10158061a23d0d976f9a613d85e659",
      "parents": [
        "fbdde7bd274d74729954190f99afcb1e3d9bbfba",
        "2dfe485a2c8afa54cb069fcf48476f6c90ea3fdf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 11:45:47 2008 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 11:45:47 2008 +1100"
      },
      "message": "Merge branch \u0027task_killable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc\n\n* \u0027task_killable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc: (22 commits)\n  Remove commented-out code copied from NFS\n  NFS: Switch from intr mount option to TASK_KILLABLE\n  Add wait_for_completion_killable\n  Add wait_event_killable\n  Add schedule_timeout_killable\n  Use mutex_lock_killable in vfs_readdir\n  Add mutex_lock_killable\n  Use lock_page_killable\n  Add lock_page_killable\n  Add fatal_signal_pending\n  Add TASK_WAKEKILL\n  exit: Use task_is_*\n  signal: Use task_is_*\n  sched: Use task_contributes_to_load, TASK_ALL and TASK_NORMAL\n  ptrace: Use task_is_*\n  power: Use task_is_*\n  wait: Use TASK_NORMAL\n  proc/base.c: Use task_is_*\n  proc/array.c: Use TASK_REPORT\n  perfmon: Use task_is_*\n  ...\n\nFixed up conflicts in NFS/sunrpc manually..\n"
    },
    {
      "commit": "e6f810759505bc86c009854b82cc495ffd8eb020",
      "tree": "1590631fe3b222d49015dd53b421a5547e13e4dc",
      "parents": [
        "99fadcd76465842c014c88b8c9c19b457e9debc0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 24 18:14:34 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:12 2008 -0500"
      },
      "message": "NFS: Add an asynchronous delegreturn operation for use in nfs_clear_inode\n\nOtherwise, there is a potential deadlock if the last dput() from an NFSv4\nclose() or other asynchronous operation leads to nfs_clear_inode calling\nthe synchronous delegreturn.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "99fadcd76465842c014c88b8c9c19b457e9debc0",
      "tree": "34b61c6444beacc58bc643285441a553af420dc4",
      "parents": [
        "3a10c30acc4821ca000b52ed0edafd0d3bf26a52"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jan 23 08:59:08 2008 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:11 2008 -0500"
      },
      "message": "nfs: convert NFS_*(inode) helpers to static inline\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3a10c30acc4821ca000b52ed0edafd0d3bf26a52",
      "tree": "535fe870e12f9a032112b16d4e31fe1d813ea2c3",
      "parents": [
        "fc6014771bde8a215a9a4ea24b45f76afeb3c922"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jan 23 08:58:59 2008 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:11 2008 -0500"
      },
      "message": "nfs: obliterate NFS_FLAGS macro\n\nuse NFS_I(inode)-\u003eflags instead\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bfc69a456642a51c89dfd8e5184468857cb44f32",
      "tree": "0853b31afcc2c8bd24a0e94e9280d1c1083501de",
      "parents": [
        "5cce428d953cc3843b100e078dbc3c01c6411b85"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 15 18:18:29 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:47 2008 -0500"
      },
      "message": "NFS: define a function to update nfsi-\u003ecache_change_attribute\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "28c494c5c8d425e15b7b82571e4df6d6bc34594d",
      "tree": "cbd7902da8f467182b1d5faed90349329cb8d042",
      "parents": [
        "464ad6b1ade186b53a1dae863361853326b85694"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 26 13:32:13 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:45 2008 -0500"
      },
      "message": "NFS: Prevent nfs_getattr() hang during heavy write workloads\n\nPOSIX requires that ctime and mtime, as reported by the stat(2) call,\nreflect the activity of the most recent write(2).  To that end, nfs_getattr()\nflushes pending dirty writes to a file before doing a GETATTR to allow the\nNFS server to set the file\u0027s size, ctime, and mtime properly.\n\nHowever, nfs_getattr() can be starved when a constant stream of application\nwrites to a file prevents nfs_wb_nocommit() from completing.  This usually\nresults in hangs of programs doing a stat against an NFS file that is being\nwritten.  \"ls -l\" is a common victim of this behavior.\n\nTo prevent starvation, hold the file\u0027s i_mutex in nfs_getattr() to\nfreeze applications writes temporarily so the client can more quickly obtain\nclean values for a file\u0027s size, mtime, and ctime.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8a8c74bf94fcdec058062d331b3d9777910778ab",
      "tree": "66dd009e6d11a1bfa15d294aa2458086f80c963f",
      "parents": [
        "9b45b74ce2234ca15131ec0725010c1da818df05"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Fri Oct 26 13:31:47 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:43 2008 -0500"
      },
      "message": "NFS: Ensure nfs_wcc_update_inode always converts file size to loff_t\n\nThe nfs_wcc_update_inode() function omits logic to convert the type of\nthe NFS on-the-wire value of a file\u0027s size (__u64) to the type of file\nsize value stored in struct inode (loff_t, which is signed).\n\nEverywhere else in the NFS client I checked already correctly converts the\nfile size type.\n\nThis effects only very large files.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "150030b78a454ba50d5e267b0dcf01b162809192",
      "tree": "4de766e7abbfd73a052f14f8efd3a26eb7b59d87",
      "parents": [
        "009e577e079656d51d0fe9b15e61e41b00816c29"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Thu Dec 06 16:24:39 2007 -0500"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@linux.intel.com",
        "time": "Thu Dec 06 17:40:25 2007 -0500"
      },
      "message": "NFS: Switch from intr mount option to TASK_KILLABLE\n\nBy using the TASK_KILLABLE infrastructure, we can get rid of the \u0027intr\u0027\nmount option.  We have to use _killable everywhere instead of _interruptible\nas we get rid of rpc_clnt_sigmask/sigunmask.\n\nSigned-off-by: Liam R. Howlett \u003chowlett@gmail.com\u003e\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\n"
    },
    {
      "commit": "a49c3c7736a2e77931dabc5bc4a83fb4b2da013e",
      "tree": "1921900be210540ee53a4011c9e8f781deb0367e",
      "parents": [
        "565277f63c616e11c37309a1e98c052d18ebbb55"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 18 18:03:27 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Oct 19 17:19:25 2007 -0400"
      },
      "message": "NFSv4: Ensure that we wait for the CLOSE request to complete\n\nOtherwise, we do end up breaking close-to-open semantics. We also end up\nbreaking some of the silly-rename tests in Connectathon on some setups.\n\nPlease refer to the bug-report at\n\thttp://bugzilla.linux-nfs.org/show_bug.cgi?id\u003d150\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "565277f63c616e11c37309a1e98c052d18ebbb55",
      "tree": "60fdddc5a1c97df696392e47ead71d33d39e487f",
      "parents": [
        "61e930a904966cc37e0a3404276f0b73037e57ca"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 15 18:17:53 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Oct 19 17:19:16 2007 -0400"
      },
      "message": "NFS: Fix a race in sillyrename\n\nlookup() and sillyrename() can race one another because the sillyrename()\ncompletion cannot take the parent directory\u0027s inode-\u003ei_mutex since the\nlatter may be held by whoever is calling dput().\n\nWe therefore have little option but to add extra locking to ensure that\nnfs_lookup() and nfs_atomic_open() do not race with the sillyrename\ncompletion.\nIf somebody has looked up the sillyrenamed file in the meantime, we just\ntransfer the sillydelete information to the new dentry.\n\nPlease refer to the bug-report at\n\thttp://bugzilla.linux-nfs.org/show_bug.cgi?id\u003d150\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "188b95dd8ecb02dd6c6e5534cddc5a89aa4e2852",
      "tree": "30c840426da519a2eabdb23d369e1c5bfb7b6d1c",
      "parents": [
        "6de0ec00ba8db84d7c452e65e502989455ecb6ea"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Oct 18 03:05:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Oct 18 14:37:22 2007 -0700"
      },
      "message": "NFS: if ATTR_KILL_S*ID bits are set, then skip mode change\n\nIf the ATTR_KILL_S*ID bits are set then any mode change is only for clearing\nthe setuid/setgid bits.  For NFS, skip the mode change and let the server\nhandle it.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ba9b9d0ba0a49d91fa6417c7510ee36f48cf957",
      "tree": "191b4f45f926e44b882b1e87a9a85dc12230b892",
      "parents": [
        "b811c202a0edadaac7242ab834fe7ba409978ae7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Oct 16 23:25:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "Slab API: remove useless ctor parameter and reorder parameters\n\nSlab constructors currently have a flags parameter that is never used.  And\nthe order of the arguments is opposite to other slab functions.  The object\npointer is placed before the kmem_cache pointer.\n\nConvert\n\n        ctor(void *object, struct kmem_cache *s, unsigned long flags)\n\nto\n\n        ctor(struct kmem_cache *s, void *object)\n\nthroughout the kernel\n\n[akpm@linux-foundation.org: coupla fixes]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f43bf0bebed7c33b698a8a25f95812f9e87c3843",
      "tree": "20c527153cde564ca3517cf6f214fa32727542bb",
      "parents": [
        "2a3f5fd45938bd86ce8faf4cb26be4f7e9ae2941"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 12:01:04 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:52 2007 -0400"
      },
      "message": "NFS: Add a boot parameter to disable 64 bit inode numbers\n\nThis boot parameter will allow legacy 32-bit applications which call stat()\nto continue to function even if the NFSv3/v4 server uses 64-bit inode\nnumbers.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2a3f5fd45938bd86ce8faf4cb26be4f7e9ae2941",
      "tree": "84ed5c302b9a126fae440faa6cda0494ce4ca36b",
      "parents": [
        "40d24704091c8a29a4c99d25670f1996749aea6f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 08 14:26:13 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:50 2007 -0400"
      },
      "message": "NFS: nfs_refresh_inode should clear cache_validity flags on success\n\nIf the cached attributes match the ones supplied in the fattr, then assume\nwe\u0027ve revalidated the inode.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "40d24704091c8a29a4c99d25670f1996749aea6f",
      "tree": "511140e99865bd1610a6df1bd81c9321b7749005",
      "parents": [
        "9e08a3c5aec5b745e844328bcbc16458b6118faf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 08 09:24:22 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:47 2007 -0400"
      },
      "message": "NFS: Fix a connectathon regression in NFSv3 and NFSv4\n\nWe\u0027re failing basic test6 against Linux servers because they lack a correct\nchange attribute. The fix is to assume that we always want to invalidate\nthe readdir caches when we call update_changeattr and/or\nnfs_post_op_update_inode on a directory.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c7c209730d635226b81e9aeae63b6dc8f445569f",
      "tree": "0817778cf1b0504839f8a3e83797826fbf9acccc",
      "parents": [
        "4f48af45842c6e78ab958c90344d3c940db4da15"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 19:22:40 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:20:23 2007 -0400"
      },
      "message": "NFS: Get rid of some obsolete macros\n\n- NFS_READTIME, NFS_CHANGE_ATTR are completely unused.\n- Inline the few remaining uses of NFS_ATTRTIMEO, and remove.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6d2b2966869142660f46d1e06cf9d15c3debcf77",
      "tree": "21520382d3ca7ac3720bcf84dd76a1c3fb94331a",
      "parents": [
        "60ccd4ec4170c9487e3792322626acd160197bce"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 18:57:50 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:55 2007 -0400"
      },
      "message": "NFS: Reset nfsi-\u003elast_updated only if the attribute changed\n\nOtherwise set it to nfsi-\u003eread_cache_jiffies in order to prevent jiffy\nwraparound issues.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "60ccd4ec4170c9487e3792322626acd160197bce",
      "tree": "b35353518bd7945a40e39edfa543ce80aaa3f8b4",
      "parents": [
        "80eb209def76d375677840800eb838abce1e6639"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:48:19 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:53 2007 -0400"
      },
      "message": "NFS: Remove nfs_begin_data_update/nfs_end_data_update\n\nThe lower level routines in fs/nfs/proc.c, fs/nfs/nfs3proc.c and\nfs/nfs/nfs4proc.c should already be dealing with the revalidation issues.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "80eb209def76d375677840800eb838abce1e6639",
      "tree": "30b249f3c3bd61712ee2c0f52f79adb025a56862",
      "parents": [
        "a1643a92f6de92074116922a2d2906dd33499ff4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:34:46 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:50 2007 -0400"
      },
      "message": "NFS: Remove NFS_I(inode)-\u003edata_updates\n\nWe have no more users...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7668fdbe9aaeab705d1169ac86d0d18a12906d06",
      "tree": "ebd55a76f4bafa1ff2accaa8ad4c6605b7eb0fa9",
      "parents": [
        "12b373ebf05485d4937dd63a00c16f8efeaa79ba"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 09:59:15 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:37 2007 -0400"
      },
      "message": "NFS: nfs_post_op_update_inode don\u0027t update cache_change_attribute\n\nIf nfs_post_op_update_inode fails because the server didn\u0027t return any\nattributes, then we let the subsequent inode revalidation update\ncache_change_attribute.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "12b373ebf05485d4937dd63a00c16f8efeaa79ba",
      "tree": "d9a50191cecd59cec36b8dc6b2257c9098681a32",
      "parents": [
        "2f78e4313afd34a4ded591ec5687843113fbaa01"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 01 09:56:59 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:35 2007 -0400"
      },
      "message": "NFS: Don\u0027t revalidate dentries on directory size or ctime changes\n\nWe only need to look at the mtime changes...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2f78e4313afd34a4ded591ec5687843113fbaa01",
      "tree": "6c5364d61ab96979312b506167beca17fcdbc533",
      "parents": [
        "446e534985bada0ad7451c08cf213c06695f9b67"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 30 15:31:19 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:32 2007 -0400"
      },
      "message": "NFS: Don\u0027t set cache_change_attribute in nfs_revalidate_mapping\n\nThe attribute revalidation code will already have taken care of resetting\nnfsi-\u003ecache_change_attribute.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "70ca88521fc7bee8ef0fc22033a439d4b9a2c70d",
      "tree": "8e3943bfac55b59dc127393f8da0ecfc4aba424b",
      "parents": [
        "b64e8a5ef758888cb42b7c105dcfaaf51aab1baf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 30 15:21:24 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:15 2007 -0400"
      },
      "message": "NFS: Fake up \u0027wcc\u0027 attributes to prevent cache invalidation after write\n\nNFSv2 and v4 don\u0027t offer weak cache consistency attributes on WRITE calls.\nIn NFSv3, returning wcc data is optional. In all cases, we want to prevent\nthe client from invalidating our cached data whenever -\u003ewrite_done()\nattempts to update the inode attributes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b64e8a5ef758888cb42b7c105dcfaaf51aab1baf",
      "tree": "a8555028da59911132f4677ddabc73f4b88dc41c",
      "parents": [
        "7fdc49c4e49ba926348f71844cda7f5e12709738"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 30 15:13:17 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:11 2007 -0400"
      },
      "message": "NFS: Remove bogus check of cache_change_attribute in nfs_update_inode\n\nRemove the bogus \u0027data_stable\u0027 check in nfs_update_inode. The\ncache_change_attribute tells you if the directory changed on the server,\nand should have nothing to do with the file length.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7fdc49c4e49ba926348f71844cda7f5e12709738",
      "tree": "acd0344bf0bdb7318be81d25d4a479044d6f5e22",
      "parents": [
        "8850df999cd16aa141098e2e8be04a590276f3cc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 19:11:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:08 2007 -0400"
      },
      "message": "NFS: Fix the ESTALE \"revalidation\" in _nfs_revalidate_inode()\n\nFor one thing, the test NFS_ATTRTIMEO() \u003d\u003d 0 makes no sense: we\u0027re\ntesting whether or not the cache timeout length is zero, which is totally\nunrelated to the issue of whether or not we trust the file staleness.\n\nSecondly, we do not want to retry the GETATTR once a file has been declared\nstale by the server: we rather want to discard that inode as soon as\npossible, since there are broken servers still in use out there that reuse\nfilehandles on new files.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c4812998398d9cbce8646494704c52297359ede0",
      "tree": "8c7b786779b03d1960c25800a7a27a10f8318e99",
      "parents": [
        "57fa76f2da05d0fee597b26bbc1f05242252beab"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 17:11:45 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:03 2007 -0400"
      },
      "message": "NFS: Fix atime revalidation in readdir()\n\nNFSv3 will correctly update atime on a readdir call, so there is no need to\nset the NFS_INO_INVALID_ATIME flag unless the call to nfs_refresh_inode()\nfails.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "47aabaa7e45385fee4a535a6f6e523ff944e1684",
      "tree": "7f780c414b5037b45cc1eb3fee64e083913fb45c",
      "parents": [
        "17cadc95372e28024be0874e67329c1862912c5d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 27 15:57:24 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:57 2007 -0400"
      },
      "message": "NFSv4: Don\u0027t use ctime/mtime for determining when to invalidate the caches\n\nIn NFSv4 we should only be looking at the change attribute.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "17cadc95372e28024be0874e67329c1862912c5d",
      "tree": "0785ba140643d87c23e7bca67d1f2522214a0d12",
      "parents": [
        "e323ea46d95d7f8c789effd1194dfc120284dbbd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 27 10:07:31 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:55 2007 -0400"
      },
      "message": "NFS: Don\u0027t force a dcache revalidation if nfs_wcc_update_inode succeeds\n\nThe reason is that if the weak cache consistency update was successful,\nthen we know that our client must be the only one that changed the\ndirectory, and we\u0027ve already updated the dcache to reflect the change.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e323ea46d95d7f8c789effd1194dfc120284dbbd",
      "tree": "c88ffaef5f6a6bd50a853c6acc234795a17de5ac",
      "parents": [
        "6ecc5e8fcad7ad64d68c098249359831331bd299"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 30 17:03:25 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:51 2007 -0400"
      },
      "message": "NFS: nfs_wcc_update_inode: directory caches are always invalidated\n\nWe must ensure that the readdir data is always invalidated whether or not\nthe weak cache consistency data update succeeds.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6ecc5e8fcad7ad64d68c098249359831331bd299",
      "tree": "a0880db55be695d2975eb2d993d4cc918d0d3d83",
      "parents": [
        "7957c1418f4b6c66e28d4ac3c4d7a8c19d526c48"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 14:20:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:49 2007 -0400"
      },
      "message": "NFS: Fix dcache revalidation bugs\n\nWe don\u0027t need to force a dentry lookup just because we\u0027re making changes to\nthe directory.\n\nDon\u0027t update nfsi-\u003ecache_change_attribute in nfs_end_data_update: that\noverrides the NFSv3/v4 weak consistency checking that tells us our update\nwas the only one, and that tells us the dcache is still valid.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7957c1418f4b6c66e28d4ac3c4d7a8c19d526c48",
      "tree": "5769b3af76c91866a4ccaa607635c86755239a51",
      "parents": [
        "68e8a70d3cae23716f6b2b3872eba10eccea148c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 14:20:12 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:46 2007 -0400"
      },
      "message": "NFS: fix nfs_verify_change_attribute\n\nWe always want to check that the verifier and directory\ncache_change_attribute match. This also allows us to remove the \u0027wraparound\nhack\u0027 for the cache_change_attribute. If we\u0027re only checking for equality,\nthen we don\u0027t care about wraparound issues.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "68e8a70d3cae23716f6b2b3872eba10eccea148c",
      "tree": "ae1cdf2370aa8f77e6a953d665576919699df32d",
      "parents": [
        "f2115dc9877d480392e48e3c83bc8cbb4b418fee"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 15 12:59:12 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:43 2007 -0400"
      },
      "message": "NFS: nfs_post_op_update_inode() should call nfs_refresh_inode()\n\nEnsure that we don\u0027t clobber the results from a more recent getattr call...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f2115dc9877d480392e48e3c83bc8cbb4b418fee",
      "tree": "dc32f48bd76aaa9e1ae4de8cb8ac8510f9742716",
      "parents": [
        "76b32999dfff6e59252a8af17a5671a4cf3bcf9b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 15 12:49:17 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:40 2007 -0400"
      },
      "message": "NFS: Fix over-conservative attribute invalidation in nfs_update_inode()\n\nWe should always be declaring the attribute cache as valid after having\nupdated it.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd3758e37ddea66fccca7d93c4b601e8a2e51926",
      "tree": "07566d3ee457524a97b534a4f214b9178b1278c8",
      "parents": [
        "c03025d55540bd648f2546659090140ecc835572"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Aug 10 17:44:32 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:31 2007 -0400"
      },
      "message": "NFS: Replace file-\u003eprivate_data with calls to nfs_file_open_context()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c7e15961115028b99f6142266b5fb08acca0e8dd",
      "tree": "21d6ca8d97234664f242e35430ba4f0dbf61df8e",
      "parents": [
        "4e769b934e7638038e232c05b64f644e7269a90f"
      ],
      "author": {
        "name": "Fabio Olive Leite",
        "email": "fleite@redhat.com",
        "time": "Thu Jul 26 22:59:00 2007 -0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:33 2007 -0400"
      },
      "message": "Re: [NFS] [PATCH] Attribute timeout handling and wrapping u32 jiffies\n\nI would like to discuss the idea that the current checks for attribute\ntimeout using time_after are inadequate for 32bit architectures, since\ntime_after works correctly only when the two timestamps being compared\nare within 2^31 jiffies of each other. The signed overflow caused by\ncomparing values more than 2^31 jiffies apart will flip the result,\ncausing incorrect assumptions of validity.\n\n2^31 jiffies is a fairly large period of time (~25 days) when compared\nto the lifetime of most kernel data structures, but for long lived NFS\nmounts that can sit idle for months (think that for some reason autofs\ncannot be used), it is easy to compare inode attribute timestamps with\nvery disparate or even bogus values (as in when jiffies have wrapped\nmany times, where the comparison doesn\u0027t even make sense).\n\nCurrently the code tests for attribute timeout by simply adding the\ndesired amount of jiffies to the stored timestamp and comparing that\nwith the current timestamp of obtained attribute data with time_after.\nThis is incorrect, as it returns true for the desired timeout period\nand another full 2^31 range of jiffies.\n\nIn testing with artificial jumps (several small jumps, not one big\ncrank) of the jiffies I was able to reproduce a problem found in a\nserver with very long lived NFS mounts, where attributes would not be\nrefreshed even after touching files and directories in the server:\n\nInitial uptime:\n03:42:01 up 6 min, 0 users, load average: 0.01, 0.12, 0.07\n\nNFS volume is mounted and time is advanced:\n03:38:09 up 25 days, 2 min, 0 users, load average: 1.22, 1.05, 1.08\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Dec 17 03:38 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Nov 22 00:36 /nfs/A/foo/bar\n\n# touch /local/A/foo/bar\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Dec 17 03:47 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Nov 22 00:36 /nfs/A/foo/bar\n\nWe can see the local mtime is updated, but the NFS mount still shows\nthe old value. The patch below makes it work:\n\nInitial setup...\n07:11:02 up 25 days, 1 min,  0 users,  load average: 0.15, 0.03, 0.04\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:11 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:11 /nfs/A/foo/bar\n\n# touch /local/A/foo/bar\n\n# ls -l /local/A/foo/bar /nfs/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:14 /local/A/foo/bar\n-rw-r--r--  1 root root 0 Jan 11 07:14 /nfs/A/foo/bar\n\nSigned-off-by: Fabio Olive Leite \u003cfleite@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4e769b934e7638038e232c05b64f644e7269a90f",
      "tree": "6508c1d273f22d3704eb849fb90404bade7cb4a7",
      "parents": [
        "50e437d522a6cc34a882b2f740297f1b6b4c3af3"
      ],
      "author": {
        "name": "Peter Staubach",
        "email": "staubach@redhat.com",
        "time": "Fri Aug 03 15:07:10 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:29 2007 -0400"
      },
      "message": "64 bit ino support for NFS client\n\nHi.\n\nAttached is a patch to modify the NFS client code to support\n64 bit ino\u0027s, as appropriate for the system and the NFS\nprotocol version.\n\nThe code basically just expand the NFS interfaces for routines\nwhich handle ino\u0027s from using ino_t to u64 and then uses the\nfileid in the nfs_inode instead of i_ino in the inode.  The\ncode paths that were updated are in the getattr method and\nthe readdir methods.\n\nThis should be no real change on 64 bit platforms.  Since\nthe ino_t is an unsigned long, it would already be 64 bits\nwide.\n\n    Thanx...\n\n           ps\n\nSigned-off-by: Peter Staubach \u003cstaubach@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ed90ef51a33f572fa7d00c8b05f7457be727e74f",
      "tree": "4c41336dd045cd9a857454a5d8a595288d64d6e1",
      "parents": [
        "90e9a3f9b0a14198a8ae5a0a5c13ad30f0b8b40d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 20 13:13:28 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:18 2007 -0400"
      },
      "message": "NFS: Clean up NFS writeback flush code\n\nThe only user of nfs_sync_mapping_range() is nfs_getattr(), which uses it\nto flush out the entire inode without sending a commit. We therefore\nreplace nfs_sync_mapping_range with a more appropriate helper.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5e11934d13c9a3bcb0cadad6c7a7de5c32660422",
      "tree": "639e5660e9081bc16afccf0c509ff41c413b483d",
      "parents": [
        "b247bbf1da69ce376aa1ceb8057331214589e366"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 26 12:06:17 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 07 15:13:17 2007 -0400"
      },
      "message": "NFS: Fix put_nfs_open_context\n\nWe need to grab the inode-\u003ei_lock atomically with the last reference put in\norder to remove the open context that is being freed from the\nnfsi-\u003eopen_files list.\n\nFix by converting the kref to a standard atomic counter and then using\natomic_dec_and_lock()...\n\nThanks to Arnd Bergmann for pointing out the problem.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "412c77cee6d6e73fbe1dc3d67f52163efed33fc4",
      "tree": "f7ea21158a76f8b3fd6450ee66dcc053f94b3fbd",
      "parents": [
        "8383e4602c89857ef926f29ca61ac0a83a614443"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 03 16:10:55 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:41 2007 -0400"
      },
      "message": "NFSv4: Defer inode revalidation when setting up a delegation\n\nCurrently we force a synchronous call to __nfs_revalidate_inode() in\nnfs_inode_set_delegation(). This not only ensures that we cannot call\nnfs_inode_set_delegation from an asynchronous context, but it also slows\ndown any call to open().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "587142f85f796cf0b823dd3080e815f02ff6b952",
      "tree": "891e9389d09916ff2c307dc5ada1c65303660c8d",
      "parents": [
        "4e56e082dd89266d320ccfbc7bd0102186a765ac"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 02 09:57:54 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:38 2007 -0400"
      },
      "message": "NFS: Replace NFS_I(inode)-\u003ereq_lock with inode-\u003ei_lock\n\nThere is no justification for keeping a special spinlock for the exclusive\nuse of the NFS writeback code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3bec63db55463365110d00721ed60a31e4614cb6",
      "tree": "ad0fed8f7e83258c7fcf59ca8433f02232e05cac",
      "parents": [
        "edc05fc1c24ba49dae585da1b2a22686f0b221f0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 17 16:02:44 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:27 2007 -0400"
      },
      "message": "NFS: Convert struct nfs_open_context to use a kref\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2aefa104313996d1a9582476cee53d1296c834bf",
      "tree": "858c9af6784949b714e728be52ffde7fba842811",
      "parents": [
        "5c36968343fcd013a3f7ae93f246c2e75596780b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 17 15:40:59 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:26 2007 -0400"
      },
      "message": "NFS: Remove the redundant \u0027dirty\u0027 and \u0027commit\u0027 lists from nfs_inode\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a0356862bcbeb20acf64bc1a82d28a4c5bb957a7",
      "tree": "20dd38a076a17c35e63eadddc77ccf0f3633f377",
      "parents": [
        "b39e625b6e75aa70e26c13f9378756bb5f2af032"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 13:26:15 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:24 2007 -0400"
      },
      "message": "NFS: Fix nfs_reval_fsid()\n\nWe don\u0027t need to revalidate the fsid on the root directory. It suffices to\nrevalidate it on the current directory.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4a35bd41aff5714deb41c8f14766df3871e2e8f7",
      "tree": "3542c76b1e0aabcd0ee6bb76fdd8228e6f3b5479",
      "parents": [
        "ad389da79f7bf9dc12dbc79c9c2740f9ed2f13d1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 10:31:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:24 2007 -0400"
      },
      "message": "NFSv4: Ensure that nfs4_do_close() doesn\u0027t race with umount\n\nnfs4_do_close() does not currently have any way to ensure that the user\nwon\u0027t attempt to unmount the partition while the asynchronous RPC call\nis completing. This again may cause Oopses in nfs_update_inode().\n\nAdd a vfsmount argument to nfs4_close_state to ensure that the partition\nremains mounted while we\u0027re closing the file.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "88be9f990fe70f0f177ef44a16a477599e91f825",
      "tree": "d48ed0c934fc20dc3f7cacfc3b1eca3058246b65",
      "parents": [
        "de05a0cc2a2ae16eb8d8dbf88fe728ace45beb9a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 10:42:27 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:23 2007 -0400"
      },
      "message": "NFS: Replace vfsmount and dentry in nfs_open_context with struct path\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e8edc6e03a5c8562dc70a6d969f732bdb355a7e7",
      "tree": "fc86c863655128a7041dfe613d14393d761fa7b9",
      "parents": [
        "ff1be9ad61e3e17ba83702d8ed0b534e5b8ee15c"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 21 01:22:52 2007 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 21 09:18:19 2007 -0700"
      },
      "message": "Detach sched.h from mm.h\n\nFirst thing mm.h does is including sched.h solely for can_do_mlock() inline\nfunction which has \"current\" dereference inside. By dealing with can_do_mlock()\nmm.h can be detached from sched.h which is good. See below, why.\n\nThis patch\na) removes unconditional inclusion of sched.h from mm.h\nb) makes can_do_mlock() normal function in mm/mlock.c\nc) exports can_do_mlock() to not break compilation\nd) adds sched.h inclusions back to files that were getting it indirectly.\ne) adds less bloated headers to some files (asm/signal.h, jiffies.h) that were\n   getting them indirectly\n\nNet result is:\na) mm.h users would get less code to open, read, preprocess, parse, ... if\n   they don\u0027t need sched.h\nb) sched.h stops being dependency for significant number of files:\n   on x86_64 allmodconfig touching sched.h results in recompile of 4083 files,\n   after patch it\u0027s only 3744 (-8.3%).\n\nCross-compile tested on\n\n\tall arm defconfigs, all mips defconfigs, all powerpc defconfigs,\n\talpha alpha-up\n\tarm\n\ti386 i386-up i386-defconfig i386-allnoconfig\n\tia64 ia64-up\n\tm68k\n\tmips\n\tparisc parisc-up\n\tpowerpc powerpc-up\n\ts390 s390-up\n\tsparc sparc-up\n\tsparc64 sparc64-up\n\tum-x86_64\n\tx86_64 x86_64-up x86_64-defconfig x86_64-allnoconfig\n\nas well as my two usual configs.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a35afb830f8d71ec211531aeb9a621b09a2efb39",
      "tree": "198280081e1f8b2f6c450742a5075cc7904a3d58",
      "parents": [
        "5577bd8a85c8b7643a241789b14fafa9c8a6c7db"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 16 22:10:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:04 2007 -0700"
      },
      "message": "Remove SLAB_CTOR_CONSTRUCTOR\n\nSLAB_CTOR_CONSTRUCTOR is always specified. No point in checking it.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a13e932281e7042a592f4f14db0b348199e7aac",
      "tree": "474245a3ed19f26528fd8b1bdda946fa9cd751d7",
      "parents": [
        "fee7f23feaf0845fdfd47d20cddc75652552fbb8"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Thu Apr 26 00:29:02 2007 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 17:58:01 2007 -0400"
      },
      "message": "NFS: Kill the obsolete NFS_PARANOIA\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "50953fe9e00ebbeffa032a565ab2f08312d51a87",
      "tree": "9f95f56f0b51600959a76cd88ce17f6e9c7a98a3",
      "parents": [
        "4b1d89290b62bb2db476c94c82cf7442aab440c8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:50:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "slab allocators: Remove SLAB_DEBUG_INITIAL flag\n\nI have never seen a use of SLAB_DEBUG_INITIAL.  It is only supported by\nSLAB.\n\nI think its purpose was to have a callback after an object has been freed\nto verify that the state is the constructor state again?  The callback is\nperformed before each freeing of an object.\n\nI would think that it is much easier to check the object state manually\nbefore the free.  That also places the check near the code object\nmanipulation of the object.\n\nAlso the SLAB_DEBUG_INITIAL callback is only performed if the kernel was\ncompiled with SLAB debugging on.  If there would be code in a constructor\nhandling SLAB_DEBUG_INITIAL then it would have to be conditional on\nSLAB_DEBUG otherwise it would just be dead code.  But there is no such code\nin the kernel.  I think SLUB_DEBUG_INITIAL is too problematic to make real\nuse of, difficult to understand and there are easier ways to accomplish the\nsame effect (i.e.  add debug code before kfree).\n\nThere is a related flag SLAB_CTOR_VERIFY that is frequently checked to be\nclear in fs inode caches.  Remove the pointless checks (they would even be\npointless without removeal of SLAB_DEBUG_INITIAL) from the fs constructors.\n\nThis is the last slab flag that SLUB did not support.  Remove the check for\nunimplemented flags from SLUB.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e1552e199857109d4b25b9163eff4646726eee3d",
      "tree": "344af8502076a414c7b579bc33e0c98f21a20b2c",
      "parents": [
        "c9c57929d23e44f258d1b6e7f089e72c85f0bd1c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 14 19:07:28 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Apr 14 21:46:47 2007 -0700"
      },
      "message": "NFS: Fix an Oops in nfs_setattr()\n\nIt looks like nfs_setattr() and nfs_rename() also need to test whether the\ntarget is a regular file before calling nfs_wb_all()...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "634707388baa440d9c9d082cfc4c950500c8952b",
      "tree": "0d3075c34a69a2d4c5c3d5682fd6a0d26bff28e9",
      "parents": [
        "89a09141df6ac1c3821fbe44ca8384eb37692965"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "trond.myklebust@fys.uio.no",
        "time": "Fri Mar 16 13:38:28 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Mar 16 19:25:06 2007 -0700"
      },
      "message": "[PATCH] nfs: nfs_getattr() can\u0027t call nfs_sync_mapping_range() for non-regular files\n\nLooks like we need a check in nfs_getattr() for a regular file. It makes\nno sense to call nfs_sync_mapping_range() on anything else. I think that\nshould fix your problem: it will stop the NFS client from interfering\nwith dirty pages on that inode\u0027s mapping.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Olof Johansson \u003colof@lixom.net\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": "b0c4fddca2bc3967381b728732a8850de35e1b20",
      "tree": "20c84b8927e448ab57f5536a4369e6f787ba316e",
      "parents": [
        "3e7d950a528454ad749a264feef3c8bad3faa108"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 05 14:44:22 2007 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 12 22:40:30 2007 -0800"
      },
      "message": "NFS: Cleanup - avoid rereading \u0027jiffies\u0027 more than once in the same routine\n\nMicro-optimisations for nfs_fhget() and nfs_wcc_update_inode().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3e7d950a528454ad749a264feef3c8bad3faa108",
      "tree": "f78795bde4128ca1da658e6cc3f4216f5c999276",
      "parents": [
        "ebf4d8ec02d8a13e1cbbda6fe746f80f3a4ca773"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 05 14:26:28 2007 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 12 22:40:22 2007 -0800"
      },
      "message": "NFS: Fix a wraparound issue with nfsi-\u003ecache_change_attribute\n\nFix wraparound issue with nfsi-\u003ecache_change_attribute. If it is found\nto lie in the future, then update it to lie in the past. Patch based on\na suggestion by Neil Brown.\n\n..and minor micro-optimisation: avoid reading \u0027jiffies\u0027 more than once in\nnfs_update_inode().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d30c8348a4ba292a09addd122de2f3189c21a7ff",
      "tree": "4aa5bf398902741643c8e6e88d5676ca02b5dfa2",
      "parents": [
        "f40313ac39fedca519c36fdc454acf2632e641da"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 13 15:23:47 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:07 2007 -0800"
      },
      "message": "NFS: nfs_writepages() cleanup\n\nStrip out the call to nfs_commit_inode(), and allow that to be done by\nnfs_write_inode().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "717d44e849219781ced028a40fcc59d3e1f49e4c",
      "tree": "aa34a9b84377d18ff58901cc342b84c7e8b81dca",
      "parents": [
        "bde8f00ce64d9824a4f227c8594e335a1a10d044"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 24 11:54:55 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jan 24 12:31:06 2007 -0800"
      },
      "message": "[PATCH] NFS: Fix races in nfs_revalidate_mapping()\n\nPrevent the call to invalidate_inode_pages2() from racing with file writes\nby taking the inode-\u003ei_mutex across the page cache flush and invalidate.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "01cce933d8b524d9312f5098c70fa1b6ac190572",
      "tree": "7601e02e874a6eb44faca3cdf06664c7377ac687",
      "parents": [
        "2485822d51f8b338d289abe00eb7ce5249794a08"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:41 2006 -0800"
      },
      "message": "[PATCH] nfs: change uses of f_{dentry,vfsmnt} to use f_path\n\nChange all the uses of f_{dentry,vfsmnt} to f_path.{dentry,mnt} in the nfs\nclient code.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "21b4e736922f546e0f1aa7b9d6c442f309a2444a",
      "tree": "e1be8645297f8ebe87445251743ebcc52081a20d",
      "parents": [
        "34161db6b14d984fb9b06c735b7b42f8803f6851",
        "68380b581383c028830f79ec2670f4a193854aa6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 07 16:35:17 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 07 16:35:17 2006 -0500"
      },
      "message": "Merge branch \u0027master\u0027 of /home/trondmy/kernel/linux-2.6/ into merge_linus\n"
    },
    {
      "commit": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e94b1766097d53e6f3ccfb36c8baa562ffeda3fc",
      "tree": "93fa0a8ab84976d4e89c50768ca8b8878d642a0d",
      "parents": [
        "54e6ecb23951b195d02433a741c7f7cb0b796c78"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:24 2006 -0800"
      },
      "message": "[PATCH] slab: remove SLAB_KERNEL\n\nSLAB_KERNEL is an alias of GFP_KERNEL.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1c75950b9a2254ef08f986e00ad20266ae9ba7f1",
      "tree": "cc1a242601b27b8128c8c385f1b858a7b863f155",
      "parents": [
        "3f442547b76bf9fb70d7aecc41cf1980459253c9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 09 16:18:38 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:35 2006 -0500"
      },
      "message": "NFS: cleanup of nfs_sync_inode_wait()\n\nAllow callers to directly pass it a struct writeback_control.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "85233a7a436a48a0b98e7976a66797e5da79c9d6",
      "tree": "3d55b9767194943dd4676e2d84a9e56563f4fed7",
      "parents": [
        "39cf8a1374dc51fea169190674d5e4996a7d7ea2"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Oct 19 23:28:42 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:39 2006 -0700"
      },
      "message": "[PATCH] NFS: __nfs_revalidate_inode() can use \"inode\" before checking it is non-NULL\n\nThe \"!inode\" check in __nfs_revalidate_inode() occurs well after the first\ntime it is dereferenced, so get rid of it.\n\nCoverity: #cid 1372, 1373\n\nTest plan:\nCode review; recheck with Coverity.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cd9ae2b6a75bb1fa0d370929c2d7a7da1ed719d9",
      "tree": "1bf943b54f47bfbf5198b08b930bd09099ff99b7",
      "parents": [
        "13bbc06af8a5f65df0f888b442e557c617cadba7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 19 23:28:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:39 2006 -0700"
      },
      "message": "[PATCH] NFS: Deal with failure of invalidate_inode_pages2()\n\nIf invalidate_inode_pages2() fails, then it should in principle just be\nbecause the current process was signalled.  In that case, we just want to\nensure that the inode\u0027s page cache remains marked as invalid.\n\nAlso add a helper to allow the O_DIRECT code to simply mark the page cache as\ninvalid once it is finished writing, instead of calling\ninvalidate_inode_pages2() itself.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ba52de123d454b57369f291348266d86f4b35070",
      "tree": "3973f3f3c853b5857b6b64a027cadd4fe954e3b9",
      "parents": [
        "577c4eb09d1034d0739e3135fd2cff50588024be"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 27 01:50:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:18 2006 -0700"
      },
      "message": "[PATCH] inode-diet: Eliminate i_blksize from the inode structure\n\nThis eliminates the i_blksize field from struct inode.  Filesystems that want\nto provide a per-inode st_blksize can do so by providing their own getattr\nroutine instead of using the generic_fillattr() function.\n\nNote that some filesystems were providing pretty much random (and incorrect)\nvalues for i_blksize.\n\n[bunk@stusta.de: cleanup]\n[akpm@osdl.org: generic_fillattr() fix]\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1a1d92c10dd24bbdc28b3d6e2d03ec199dd3a65b",
      "tree": "fade83955f75e718e39153d6f81d221403338bed",
      "parents": [
        "f52720ca5f48574e347dff35ffe6b389ace61537"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Sep 27 01:49:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:10 2006 -0700"
      },
      "message": "[PATCH] Really ignore kmem_cache_destroy return value\n\n* Rougly half of callers already do it by not checking return value\n* Code in drivers/acpi/osl.c does the following to be sure:\n\n\t(void)kmem_cache_destroy(cache);\n\n* Those who check it printk something, however, slab_error already printed\n  the name of failed cache.\n* XFS BUGs on failed kmem_cache_destroy which is not the decision\n  low-level filesystem driver should make. Converted to ignore.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f52720ca5f48574e347dff35ffe6b389ace61537",
      "tree": "7efc8ec6bad32b98e406a5c553149d57e46bd07e",
      "parents": [
        "f8314dc60ccba7e41f425048c4160dc7f63377d5"
      ],
      "author": {
        "name": "Panagiotis Issaris",
        "email": "takis@issaris.org",
        "time": "Wed Sep 27 01:49:39 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:10 2006 -0700"
      },
      "message": "[PATCH] fs: Removing useless casts\n\n* Removing useless casts\n* Removing useless wrapper\n* Conversion from kmalloc+memset to kzalloc\n\nSigned-off-by: Panagiotis Issaris \u003ctakis@issaris.org\u003e\nAcked-by: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f551e44ff11d3e2ec8f37907bb88ec2433cc8b74",
      "tree": "f86527c24391f70d72a28111df5c541959e8f293",
      "parents": [
        "a53a3c58fd83e572a7c768d88b4c4e9840a57e82"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Sep 20 14:33:04 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:05 2006 -0400"
      },
      "message": "NFS: add comments clarifying the use of nfs_post_op_update()\n\nComments-only change to clarify a detail of the NFS protocol and how it is\nimplemented in Linux.\n\nTest plan:\nNone.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "97db8f41792839a6912fd21be8b61dd6c50db58f",
      "tree": "b569931dd76809ef4bee9165da54d1c34310fbe4",
      "parents": [
        "5f004cf2aa8494708fd8d78e78142b7b2748e765"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 14 14:03:14 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:03 2006 -0400"
      },
      "message": "NFS: Don\u0027t invalidate the symlink we just stuffed into the cache\n\nAnd slight optimisation of nfs_end_data_update(): directories never have\ndelegations anyway.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6aaca566503296a73f956908ec98173946134fe2",
      "tree": "7625bbfa14cddd93ed3e2afa03caf4b553116f76",
      "parents": [
        "54ceac4515986030c2502960be620198dd8fe25b"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:13 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:37 2006 -0400"
      },
      "message": "NFS: Add server and volume lists to /proc\n\nMake two new proc files available:\n\n\t/proc/fs/nfsfs/servers\n\t/proc/fs/nfsfs/volumes\n\nThe first lists the servers with which we are currently dealing (struct\nnfs_client), and the second lists the volumes we have on those servers (struct\nnfs_server).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "54ceac4515986030c2502960be620198dd8fe25b",
      "tree": "b4ae4305c5652c0fe883ef5ea3243da91dbd2b34",
      "parents": [
        "cf6d7b5de8535a9f0088c5cc28ee2dae87371b4a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:13 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:37 2006 -0400"
      },
      "message": "NFS: Share NFS superblocks per-protocol per-server per-FSID\n\nThe attached patch makes NFS share superblocks between mounts from the same\nserver and FSID over the same protocol.\n\nIt does this by creating each superblock with a false root and returning the\nreal root dentry in the vfsmount presented by get_sb(). The root dentry set\nstarts off as an anonymous dentry if we don\u0027t already have the dentry for its\ninode, otherwise it simply returns the dentry we already have.\n\nWe may thus end up with several trees of dentries in the superblock, and if at\nsome later point one of anonymous tree roots is discovered by normal filesystem\nactivity to be located in another tree within the superblock, the anonymous\nroot is named and materialises attached to the second tree at the appropriate\npoint.\n\nWhy do it this way? Why not pass an extra argument to the mount() syscall to\nindicate the subpath and then pathwalk from the server root to the desired\ndirectory? You can\u0027t guarantee this will work for two reasons:\n\n (1) The root and intervening nodes may not be accessible to the client.\n\n     With NFS2 and NFS3, for instance, mountd is called on the server to get\n     the filehandle for the tip of a path. mountd won\u0027t give us handles for\n     anything we don\u0027t have permission to access, and so we can\u0027t set up NFS\n     inodes for such nodes, and so can\u0027t easily set up dentries (we\u0027d have to\n     have ghost inodes or something).\n\n     With this patch we don\u0027t actually create dentries until we get handles\n     from the server that we can use to set up their inodes, and we don\u0027t\n     actually bind them into the tree until we know for sure where they go.\n\n (2) Inaccessible symbolic links.\n\n     If we\u0027re asked to mount two exports from the server, eg:\n\n\tmount warthog:/warthog/aaa/xxx /mmm\n\tmount warthog:/warthog/bbb/yyy /nnn\n\n     We may not be able to access anything nearer the root than xxx and yyy,\n     but we may find out later that /mmm/www/yyy, say, is actually the same\n     directory as the one mounted on /nnn. What we might then find out, for\n     example, is that /warthog/bbb was actually a symbolic link to\n     /warthog/aaa/xxx/www, but we can\u0027t actually determine that by talking to\n     the server until /warthog is made available by NFS.\n\n     This would lead to having constructed an errneous dentry tree which we\n     can\u0027t easily fix. We can end up with a dentry marked as a directory when\n     it should actually be a symlink, or we could end up with an apparently\n     hardlinked directory.\n\n     With this patch we need not make assumptions about the type of a dentry\n     for which we can\u0027t retrieve information, nor need we assume we know its\n     place in the grand scheme of things until we actually see that place.\n\nThis patch reduces the possibility of aliasing in the inode and page caches for\ninodes that may be accessed by more than one NFS export. It also reduces the\nnumber of superblocks required for NFS where there are many NFS exports being\nused from a server (home directory server + autofs for example).\n\nThis in turn makes it simpler to do local caching of network filesystems, as it\ncan then be guaranteed that there won\u0027t be links from multiple inodes in\nseparate superblocks to the same cache file.\n\nObviously, cache aliasing between different levels of NFS protocol could still\nbe a problem, but at least that gives us another key to use when indexing the\ncache.\n\nThis patch makes the following changes:\n\n (1) The server record construction/destruction has been abstracted out into\n     its own set of functions to make things easier to get right.  These have\n     been moved into fs/nfs/client.c.\n\n     All the code in fs/nfs/client.c has to do with the management of\n     connections to servers, and doesn\u0027t touch superblocks in any way; the\n     remaining code in fs/nfs/super.c has to do with VFS superblock management.\n\n (2) The sequence of events undertaken by NFS mount is now reordered:\n\n     (a) A volume representation (struct nfs_server) is allocated.\n\n     (b) A server representation (struct nfs_client) is acquired.  This may be\n     \t allocated or shared, and is keyed on server address, port and NFS\n     \t version.\n\n     (c) If allocated, the client representation is initialised.  The state\n     \t member variable of nfs_client is used to prevent a race during\n     \t initialisation from two mounts.\n\n     (d) For NFS4 a simple pathwalk is performed, walking from FH to FH to find\n     \t the root filehandle for the mount (fs/nfs/getroot.c).  For NFS2/3 we\n     \t are given the root FH in advance.\n\n     (e) The volume FSID is probed for on the root FH.\n\n     (f) The volume representation is initialised from the FSINFO record\n     \t retrieved on the root FH.\n\n     (g) sget() is called to acquire a superblock.  This may be allocated or\n     \t shared, keyed on client pointer and FSID.\n\n     (h) If allocated, the superblock is initialised.\n\n     (i) If the superblock is shared, then the new nfs_server record is\n     \t discarded.\n\n     (j) The root dentry for this mount is looked up from the root FH.\n\n     (k) The root dentry for this mount is assigned to the vfsmount.\n\n (3) nfs_readdir_lookup() creates dentries for each of the entries readdir()\n     returns; this function now attaches disconnected trees from alternate\n     roots that happen to be discovered attached to a directory being read (in\n     the same way nfs_lookup() is made to do for lookup ops).\n\n     The new d_materialise_unique() function is now used to do this, thus\n     permitting the whole thing to be done under one set of locks, and thus\n     avoiding any race between mount and lookup operations on the same\n     directory.\n\n (4) The client management code uses a new debug facility: NFSDBG_CLIENT which\n     is set by echoing 1024 to /proc/net/sunrpc/nfs_debug.\n\n (5) Clone mounts are now called xdev mounts.\n\n (6) Use the dentry passed to the statfs() op as the handle for retrieving fs\n     statistics rather than the root dentry of the superblock (which is now a\n     dummy).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8fa5c000d7f986ef9cdc6d95f9f7fcee20e0a7d6",
      "tree": "356b811803db9775fd9c870d189a9ff75885ae6c",
      "parents": [
        "1f163415dc05983830bcc47b33c155b2528b1574"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:12 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:35 2006 -0400"
      },
      "message": "NFS: Move rpc_ops from nfs_server to nfs_client\n\nMove the rpc_ops from the nfs_server struct to the nfs_client struct as they\u0027re\ncommon to all server records of a particular NFS protocol version.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cfcea3e8c66c2dcde98d5c2693d4bff50b5cac97",
      "tree": "ee7b995a48c43de7355fa33079ee7aaad020d6f3",
      "parents": [
        "1c3c07e9f6cc50dab2aeb8051325e317d4f6c70e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 25 11:28:18 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:29 2006 -0400"
      },
      "message": "NFS: Add a global LRU list for the ACCESS cache\n\n...in order to allow the addition of a memory shrinker.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1c3c07e9f6cc50dab2aeb8051325e317d4f6c70e",
      "tree": "96bbc2a304e9a0e831daf589d1662c6129303796",
      "parents": [
        "3eeab61aa3ddd3c0bedb7449ada1599de22fdb5a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 25 11:28:18 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:28 2006 -0400"
      },
      "message": "NFS: Add a new ACCESS rpc call cache to the linux nfs client\n\nThe current access cache only allows one entry at a time to be cached for each\ninode. Add a per-inode red-black tree in order to allow more than one to\nbe cached at a time.\n\nShould significantly cut down the time spent in path traversal for shared\ndirectories such as ${PATH}, /usr/share, etc.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "266bee88699ddbde42ab303bbc426a105cc49809",
      "tree": "2d2b57f869321e177caf173af8d43b5d88c4a79d",
      "parents": [
        "e7374e48009a15a680d53bd1f9828b9b79a8aac9"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Tue Jun 27 12:59:15 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 14:07:19 2006 -0700"
      },
      "message": "[PATCH] fix static linking of NFS\n\nBuilds on ARM report link problems with common configurations like\nstatically linked NFS (for nfsroot).  The symptom is that __init\nsection code references __exit section code; that won\u0027t work since\nthe exit sections are discarded (since they can never be called).\n\nThe best fix for these particular cases would be an \"__init_or_exit\"\nsection annotation.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d75d54147db9db5194040bd1c5022df6ba36ee48",
      "tree": "4bb7c7db88edd31b57958850aa16bc8ea297e017",
      "parents": [
        "ccf01ef7aa9c6c293a1c64c27331a2ce227916ec"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Jun 25 02:41:26 2006 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 25 06:38:11 2006 -0400"
      },
      "message": "git-nfs-build-fixes\n\nFix various problems with nfs4 disabled.  And various other things.\n\nIn file included from fs/nfs/inode.c:50:\nfs/nfs/internal.h:24: error: static declaration of \u0027nfs_do_refmount\u0027 follows non-static declaration\ninclude/linux/nfs_fs.h:320: error: previous declaration of \u0027nfs_do_refmount\u0027 was here\nfs/nfs/internal.h:65: warning: \u0027struct nfs4_fs_locations\u0027 declared inside parameter list\nfs/nfs/internal.h:65: warning: its scope is only this definition or declaration, which is probably not what you want\nfs/nfs/internal.h: In function \u0027nfs4_path\u0027:\nfs/nfs/internal.h:97: error: \u0027struct nfs_server\u0027 has no member named \u0027mnt_path\u0027\nfs/nfs/inode.c: In function \u0027init_once\u0027:\nfs/nfs/inode.c:1116: error: \u0027struct nfs_inode\u0027 has no member named \u0027open_states\u0027\nfs/nfs/inode.c:1116: error: \u0027struct nfs_inode\u0027 has no member named \u0027delegation\u0027\nfs/nfs/inode.c:1116: error: \u0027struct nfs_inode\u0027 has no member named \u0027delegation_state\u0027\nfs/nfs/inode.c:1116: error: \u0027struct nfs_inode\u0027 has no member named \u0027rwsem\u0027\ndistcc[26452] ERROR: compile fs/nfs/inode.c on g5/64 failed\nmake[1]: *** [fs/nfs/inode.o] Error 1\nmake: *** [fs/nfs/inode.o] Error 2\nmake: *** Waiting for unfinished jobs....\nIn file included from fs/nfs/nfs3xdr.c:26:\nfs/nfs/internal.h:24: error: static declaration of \u0027nfs_do_refmount\u0027 follows non-static declaration\ninclude/linux/nfs_fs.h:320: error: previous declaration of \u0027nfs_do_refmount\u0027 was here\nfs/nfs/internal.h:65: warning: \u0027struct nfs4_fs_locations\u0027 declared inside parameter list\nfs/nfs/internal.h:65: warning: its scope is only this definition or declaration, which is probably not what you want\nfs/nfs/internal.h: In function \u0027nfs4_path\u0027:\nfs/nfs/internal.h:97: error: \u0027struct nfs_server\u0027 has no member named \u0027mnt_path\u0027\ndistcc[26486] ERROR: compile fs/nfs/nfs3xdr.c on g5/64 failed\nmake[1]: *** [fs/nfs/nfs3xdr.o] Error 1\nmake: *** [fs/nfs/nfs3xdr.o] Error 2\nIn file included from fs/nfs/nfs3proc.c:24:\nfs/nfs/internal.h:24: error: static declaration of \u0027nfs_do_refmount\u0027 follows non-static declaration\ninclude/linux/nfs_fs.h:320: error: previous declaration of \u0027nfs_do_refmount\u0027 was here\nfs/nfs/internal.h:65: warning: \u0027struct nfs4_fs_locations\u0027 declared inside parameter list\nfs/nfs/internal.h:65: warning: its scope is only this definition or declaration, which is probably not what you want\nfs/nfs/internal.h: In function \u0027nfs4_path\u0027:\nfs/nfs/internal.h:97: error: \u0027struct nfs_server\u0027 has no member named \u0027mnt_path\u0027\ndistcc[26469] ERROR: compile fs/nfs/nfs3proc.c on bix/32 failed\nmake[1]: *** [fs/nfs/nfs3proc.o] Error 1\nmake: *** [fs/nfs/nfs3proc.o] Error 2\n**FAILED**\n\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nCc: Andy Adamson \u003candros@citi.umich.edu\u003e\nCc: Chuck Lever \u003ccel@netapp.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: J. Bruce Fields \u003cbfields@fieldses.org\u003e\nCc: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nCc: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f7b422b17ee5ee4920e8ae24a6ad04bf3481ce72",
      "tree": "4ae8372762efc092ceb4f884b57cad1efe6594de",
      "parents": [
        "4e5ccf60c5aa79d325c123f47d288a068166f389"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 09 09:34:33 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:33 2006 -0400"
      },
      "message": "NFS: Split fs/nfs/inode.c\n\nAs fs/nfs/inode.c is rather large, heterogenous and unwieldy, the attached\npatch splits it up into a number of files:\n\n (*) fs/nfs/inode.c\n\n     Strictly inode specific functions.\n\n (*) fs/nfs/super.c\n\n     Superblock management functions for NFS and NFS4, normal access, clones\n     and referrals.  The NFS4 superblock functions _could_ move out into a\n     separate conditionally compiled file, but it\u0027s probably not worth it as\n     there\u0027re so many common bits.\n\n (*) fs/nfs/namespace.c\n\n     Some namespace-specific functions have been moved here.\n\n (*) fs/nfs/nfs4namespace.c\n\n     NFS4-specific namespace functions (this could be merged into the previous\n     file).  This file is conditionally compiled.\n\n (*) fs/nfs/internal.h\n\n     Inter-file declarations, plus a few simple utility functions moved from\n     fs/nfs/inode.c.\n\n     Additionally, all the in-.c-file externs have been moved here, and those\n     files they were moved from now includes this file.\n\nFor the most part, the functions have not been changed, only some multiplexor\nfunctions have changed significantly.\n\nI\u0027ve also:\n\n (*) Added some extra banner comments above some functions.\n\n (*) Rearranged the function order within the files to be more logical and\n     better grouped (IMO), though someone may prefer a different order.\n\n (*) Reduced the number of #ifdefs in .c files.\n\n (*) Added missing __init and __exit directives.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "4e5ccf60c5aa79d325c123f47d288a068166f389",
      "tree": "acc16e1c85eb4348f4faf5288463f236d61e0fcc",
      "parents": [
        "860de07139980afe9856cc31eb5efbf321bbcea4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:32 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:32 2006 -0400"
      },
      "message": "NFS: Fix typo in nfs_do_clone_mount()\n\nDoh!\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "860de07139980afe9856cc31eb5efbf321bbcea4",
      "tree": "e32a6c758b299f62978426c7e263f6f554678731",
      "parents": [
        "87e4ba1a62af8e05ee3e8f8aaca622714386ffb0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:31 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:31 2006 -0400"
      },
      "message": "NFS: Fix compile errors introduced by referrals patches\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "87e4ba1a62af8e05ee3e8f8aaca622714386ffb0",
      "tree": "f37f00e2c5cc5904f57395f800e8e6544eb062d9",
      "parents": [
        "33a43f2802d8d7be3a9b541785c4ca9ad79e4310"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:30 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:30 2006 -0400"
      },
      "message": "NFSv4: Ensure that referral mounts bind to a reserved port\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6b97fd3da1eab2cc490cfe884c7d4956522eaf8b",
      "tree": "055f5f603101a15f783ae52081e4714ddc3edc96",
      "parents": [
        "9cdb3883c38f883436a84c2353a4cf964ff890a2"
      ],
      "author": {
        "name": "Manoj Naik",
        "email": "manoj@almaden.ibm.com",
        "time": "Fri Jun 09 09:34:29 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:29 2006 -0400"
      },
      "message": "NFSv4: Follow a referral\n\nRespond to a moved error on NFS lookup by setting up the referral.\nNote: We don\u0027t actually follow the referral during lookup/getattr, but\nlater when we detect fsid mismatch in inode revalidation (similar to the\nprocessing done for cloning submounts). Referrals will have fake attributes\nuntil they are actually followed or traversed.\n\nSigned-off-by: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9cdb3883c38f883436a84c2353a4cf964ff890a2",
      "tree": "7961aebf94c66d7d55bb6e7c715e99d28ad3ab9d",
      "parents": [
        "61f5164cab1f6fdf06871ea9d60fe2f912184078"
      ],
      "author": {
        "name": "Manoj Naik",
        "email": "manoj@almaden.ibm.com",
        "time": "Fri Jun 09 09:34:28 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:28 2006 -0400"
      },
      "message": "NFSv4: Ensure client submounts when following a referral\n\nSet up mountpoint when hitting a referral on moved error by getting\nfs_locations.\n\nSigned-off-by: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "61f5164cab1f6fdf06871ea9d60fe2f912184078",
      "tree": "966e8279f9563ceda4b919f309832c3336642abb",
      "parents": [
        "c818ba43f9ca2e8214412ab5f126b1f436c35098"
      ],
      "author": {
        "name": "Manoj Naik",
        "email": "manoj@almaden.ibm.com",
        "time": "Fri Jun 09 09:34:27 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:27 2006 -0400"
      },
      "message": "NFS: Expand clone mounts to include other servers\n\nSigned-off-by: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c818ba43f9ca2e8214412ab5f126b1f436c35098",
      "tree": "02e3646c172000c8bc71d6de52d4991bbeb3db14",
      "parents": [
        "830b8e33fe1900b87c8eb7ec5c646117a9f298d6"
      ],
      "author": {
        "name": "Manoj Naik",
        "email": "manoj@almaden.ibm.com",
        "time": "Fri Jun 09 09:34:26 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:26 2006 -0400"
      },
      "message": "NFSv4: Create NFSv4 transport and client\n\nMove existing code into a separate function so that it can be also used by\nreferral code.\n\nSigned-off-by: Manoj Naik \u003cmanoj@almaden.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "51d8fa6a109589d522c18a8e9bf3fb167a91b1bc",
      "tree": "a9ec5e642bfa64f7cf1fde01617b30bac385bac6",
      "parents": [
        "55a975937d40cac582e981ddc8ed783b3dcc043c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:20 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:20 2006 -0400"
      },
      "message": "NFS: Add timeout to submounts\n\nMake automounted partitions expire using the mark_mounts_for_expiry()\nfunction. The timeout is controlled via a sysctl.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "55a975937d40cac582e981ddc8ed783b3dcc043c"
}
