)]}'
{
  "log": [
    {
      "commit": "1d2e88e73ee0af52b0ed63b5fb8f42a919a4d9de",
      "tree": "7e28d99780ab4b925275a7bad07beeae979646d3",
      "parents": [
        "31f31db1a15671513df9cd9fbe56ef45ee1e9a2a"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri May 02 13:42:45 2008 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:31 2008 -0700"
      },
      "message": "nfs: make nfs4_drop_state_owner() static\n\nnfs4_drop_state_owner() can now become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.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": "a2b2bb8822c78806930bbb4d4c5bb3ae69648fd0",
      "tree": "a172b309f9ead2f81426eebdb28f3f1ecb75ce48",
      "parents": [
        "7c67db3a8a98045744f06fcd6d8f476d9df0ba5c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 08 16:02:17 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:54:59 2008 -0400"
      },
      "message": "NFSv4: Attempt to use machine credentials in SETCLIENTID calls\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f6a1cc89309f0ae847a9b6fe418d1c4215e5bc55",
      "tree": "4f5d585dd901718d66d9c354625f9a0bc85c234d",
      "parents": [
        "5d00837b90340af9106dcd93af75fd664c8eb87f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 22 17:06:55 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Feb 28 23:17:27 2008 -0800"
      },
      "message": "SUNRPC: Add a (empty for the moment) destructor for rpc_wait_queues\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5d00837b90340af9106dcd93af75fd664c8eb87f",
      "tree": "f537dc84421cf150d66b630e56ea8107078c07a8",
      "parents": [
        "fda1393938035559b417dd5b26b9cc293a7aee00"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 22 16:34:17 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:40:44 2008 -0800"
      },
      "message": "SUNRPC: Run rpc timeout functions as callbacks instead of in softirqs\n\nAn audit of the current RPC timeout functions shows that they don\u0027t really\never need to run in the softirq context. As long as the softirq is\nable to signal that the wakeup is due to a timeout (which it can do by\nsetting task-\u003etk_status to -ETIMEDOUT) then the callback functions can just\nrun as standard task-\u003etk_callback functions (in the rpciod/process\ncontext).\n\nThe only possible border-line case would be xprt_timer() for the case of\nUDP, when the callback is used to reduce the size of the transport\ncongestion window. In testing, however, the effect of moving that update\nto a callback would appear to be minor.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "90dc7d2796edf94a9eaa838321a9734c8513e717",
      "tree": "818c8899555efa3f5598f1ee9aa1fd5a5264c6c4",
      "parents": [
        "1227a74e2e0217a4ca155d1677bdbf5f69e32bed"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Feb 20 13:03:05 2008 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 20 16:15:44 2008 -0500"
      },
      "message": "nfs: fix sparse warnings\n\nfs/nfs/nfs4state.c:788:34: warning: Using plain integer as NULL pointer\nfs/nfs/delegation.c:52:34: warning: Using plain integer as NULL pointer\nfs/nfs/idmap.c:312:12: warning: Using plain integer as NULL pointer\nfs/nfs/callback_xdr.c:257:6: warning: Using plain integer as NULL pointer\nfs/nfs/callback_xdr.c:270:6: warning: Using plain integer as NULL pointer\nfs/nfs/callback_xdr.c:281:6: warning: Using plain integer as NULL pointer\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "497799e7c0ac7e82164a510ebf8beed7b3635e34",
      "tree": "3ab230be78d8e36795b1632437139de5a913d49b",
      "parents": [
        "4267c9561d9c3bb2abf45abed9c75a1c892d7d15"
      ],
      "author": {
        "name": "Dan Muntz",
        "email": "dmuntz@netapp.com",
        "time": "Wed Feb 13 13:09:35 2008 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 13 23:24:06 2008 -0500"
      },
      "message": "NFS: missing spaces in KERN_WARNING\n\nThe warning message for a v4 server returning various bad sequence-ids is\nmissing spaces.\n\nSigned-off-by: Dan Muntz \u003cdmuntz@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5d8515caeb99940f5ed56d22a03aba20bbe7fdcb",
      "tree": "b17ec1fc7bf34a73f65bf8c4b9f837beb54a64f9",
      "parents": [
        "d4d3c507493afd3c9d19fbe9762f44e790909dbe"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Dec 10 14:57:16 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:52 2008 -0500"
      },
      "message": "NFS: eliminate NIPQUAD(clp-\u003ecl_addr.sin_addr)\n\nTo ensure the NFS client displays IPv6 addresses properly, replace\naddress family-specific NIPQUAD() invocations with a call to the RPC\nclient to get a formatted string representing the remote peer\u0027s\naddress.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Aurelien Charbon \u003caurelien.charbon@ext.bull.net\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2f74c0a05612b9c2014b5b67833dba9b9f523948",
      "tree": "59bb49bd9a393774b65e3d39e53edfe7bab4613e",
      "parents": [
        "acee478afc6ff7e1b8852d9a4dca1ff36021414d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 08 17:56:07 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:24 2008 -0500"
      },
      "message": "NFSv4: Clean up the OPEN/CLOSE serialisation code\n\nReduce the time spent locking the rpc_sequence structure by queuing the\nnfs_seqid only when we are ready to take the lock (when calling\nnfs_wait_on_sequence).\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d0dc3701cb46f73cf8ca393f62e325065b0bbd03",
      "tree": "14fd83b50509a46c124f526f1eadff967482be33",
      "parents": [
        "3a43e69ce50d467ded2f17f6e571e831d3677ab5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 10 16:07:54 2008 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jan 10 13:35:32 2008 -0800"
      },
      "message": "NFSv4: Give the lock stateid its own sequence queue\n\nSharing the open sequence queue causes a deadlock when we try to take\nboth a lock sequence id and and open sequence id.\n\nThis fixes the regression reported by Dimitri Puzin and Jeff Garzik: See\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d9712\n\nfor details.\n\nReported-and-tested-by: Dimitri Puzin \u003cbugs@psycast.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nTested-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "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": "ba683031fae115d61c6b5f4c675cc27f6e9576d2",
      "tree": "561bdd11d1b9c5982fa2317c6c0afeb99ab44e5b",
      "parents": [
        "5e11934d13c9a3bcb0cadad6c7a7de5c32660422"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 27 10:23:05 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 07 15:13:18 2007 -0400"
      },
      "message": "NFSv4: Fix a locking regression in nfs4_set_mode_locked()\n\nWe don\u0027t really need to clear \u0026state-\u003einode_states inside\nnfs4_set_mode_locked, and doing so without holding the inode-\u003ei_lock would\nin any case be a bug...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6f2e64d3e1f661095e274c9d9d47e3f39a6cf1c0",
      "tree": "59bb802bfe2df34ef5666a3d9b7a8f7c21b7247b",
      "parents": [
        "275a5d24bf56b2d9dd4644c54a56366b89a028f1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 06 10:53:21 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:48 2007 -0400"
      },
      "message": "NFSv4: Make the NFS state model work with the nosharedcache mount option\n\nConsider the case where the user has mounted the remote filesystem\nserver:/foo on the two local directories /bar and /baz using the\nnosharedcache mount option. The files /bar/file and /baz/file are\nrepresented by different inodes in the local namespace, but refer to the\nsame file /foo/file on the server.\nConsider the case where a process opens both /bar/file and /baz/file, then\ncloses /bar/file: because the nfs4_state is not shared between /bar/file\nand /baz/file, the kernel will see that the nfs4_state for /bar/file is no\nlonger referenced, so it will send off a CLOSE rpc call. Unless the\nopen_owners differ, then that CLOSE call will invalidate the open state on\n/baz/file too.\n\nConclusion: we cannot share open state owners between two different\nnon-shared mount instances of the same filesystem.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8bda4e4c98d14566fc1a354c62fb59d70cc49b97",
      "tree": "d137e784db33d1347a6b03d22044e9a41e10967f",
      "parents": [
        "1ac7e2fd35905f3d44df06568bca5f9d140369b3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 09 10:45:42 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:43 2007 -0400"
      },
      "message": "NFSv4: Fix up stateid locking...\n\nWe really don\u0027t need to grab both the state-\u003eso_owner and the\ninode-\u003ei_lock.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6f43ddccb31b5bd2297878f6f3735d45fd4dfce3",
      "tree": "2b21ec002ca6868df0d7d39a1044fff5ff97df87",
      "parents": [
        "003707c7225dbd4bf879b6c204743554de0a08d6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jul 08 16:49:11 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:42 2007 -0400"
      },
      "message": "NFSv4: Improve the debugging of bad sequence id errors...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "003707c7225dbd4bf879b6c204743554de0a08d6",
      "tree": "b5ca79744badf011d15111d819f629cfc69452ba",
      "parents": [
        "0f9f95e0ad1f9d07d77832c5b60f7d30440602ee"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jul 05 18:07:55 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:41 2007 -0400"
      },
      "message": "NFSv4: Always use the delegation if we have one\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1c816efa245111c52858fbe55d99474f3c149dd3",
      "tree": "df2d6fdd574a3a5352b5c246366cdeb0e8dcc43a",
      "parents": [
        "1b45c46cf75d9c48eb611d5cc41607ac1f046606"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 03 14:41:19 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:40 2007 -0400"
      },
      "message": "NFSv4: Fix a bug in __nfs4_find_state_byowner\n\nThe test for state-\u003estate \u003d\u003d 0 does not tell you that the stateid is in the\nprocess of being freed. It really tells you that the stateid is not yet\ninitialised...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9f958ab8858c75df800e0121b1920182820cbc39",
      "tree": "754bb9d68aac077825b40796e2acf716bce5df08",
      "parents": [
        "88d9093997e1c73ca98db41b5605dbde7783845f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 02 13:58:33 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:39 2007 -0400"
      },
      "message": "NFSv4: Reduce the chances of an open_owner identifier collision\n\nCurrently we just use a 32-bit counter.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "88d9093997e1c73ca98db41b5605dbde7783845f",
      "tree": "455f60d9aef7527844424fd98373e48a7530c4a9",
      "parents": [
        "e6889620e89525ebf41f0eed937edb3dc065cf1d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 02 14:03:03 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:39 2007 -0400"
      },
      "message": "NFSv4: nfs_increment_open_seqid should not return a value\n\nIt is a void function...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7af654f8d1b7460415af5d1d326233478dd0f563",
      "tree": "00ebad16a49f13aa99b518f2554de5dcbeafa79c",
      "parents": [
        "27b3f949b769a208e2849d28e7ad64cadac5d0e3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 02 12:49:23 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:38 2007 -0400"
      },
      "message": "NFSv4: Don\u0027t reuse expired nfs4_state_owner structs\n\nThat just confuses certain NFSv4 servers.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "27b3f949b769a208e2849d28e7ad64cadac5d0e3",
      "tree": "68b7f71e253ab76a4dbc916695a3b78e8c2a6e68",
      "parents": [
        "587142f85f796cf0b823dd3080e815f02ff6b952"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 02 10:24:56 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:38 2007 -0400"
      },
      "message": "NFSv4: Fix a credential reference leak in nfs4_get_state_owner()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b39e625b6e75aa70e26c13f9378756bb5f2af032",
      "tree": "acf17b925b359b051f476c7e9500c4f4d60f5d0c",
      "parents": [
        "4a35bd41aff5714deb41c8f14766df3871e2e8f7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jun 11 23:05:07 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:24 2007 -0400"
      },
      "message": "NFSv4: Clean up nfs4_call_async()\n\nUse rpc_run_task() instead of doing it ourselves.\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": "10afec9081fee7e48995fa396fba22c7de4b99d4",
      "tree": "edf1e3abf62d95eeef178dc8060cf033cc7940df",
      "parents": [
        "9c9cc93ad2a5d9972672e03685af20e8cea1e5a4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 17:16:04 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 19:33:46 2007 -0400"
      },
      "message": "NFS: Fix some \u0027sparse\u0027 warnings...\n\n - fs/nfs/dir.c:610:8: warning: symbol \u0027nfs_llseek_dir\u0027 was not declared.\n   Should it be static?\n - fs/nfs/dir.c:636:5: warning: symbol \u0027nfs_fsync_dir\u0027 was not declared.\n   Should it be static?\n - fs/nfs/write.c:925:19: warning: symbol \u0027req\u0027 shadows an earlier one\n - fs/nfs/write.c:61:6: warning: symbol \u0027nfs_commit_rcu_free\u0027 was not\n   declared. Should it be static?\n - fs/nfs/nfs4proc.c:793:5: warning: symbol \u0027nfs4_recover_expired_lease\u0027\n   was not declared. Should it be static?\n\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": "24c8dbbb5f777187d660393599641ab3307b4b97",
      "tree": "9d50fdd57c7593d925a21e4bb049095a4e4ead6f",
      "parents": [
        "e9326dcab413848e70ab746c7c5363da13e5f801"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:10 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:33 2006 -0400"
      },
      "message": "NFS: Generalise the nfs_client structure\n\nGeneralise the nfs_client structure by:\n\n (1) Moving nfs_client to a more general place (nfs_fs_sb.h).\n\n (2) Renaming its maintenance routines to be non-NFS4 specific.\n\n (3) Move those maintenance routines to a new non-NFS4 specific file (client.c)\n     and move the declarations to internal.h.\n\n (4) Make nfs_find/get_client() take a full sockaddr_in to include the port\n     number (will be required for NFS2/3).\n\n (5) Make nfs_find/get_client() take the NFS protocol version (again will be\n     required to differentiate NFS2, 3 \u0026 4 client records).\n\nAlso:\n\n (6) Make nfs_client construction proceed akin to inodes, marking them as under\n     construction and providing a function to indicate completion.\n\n (7) Make nfs_get_client() wait interruptibly if it finds a client that it can\n     share, but that client is currently being constructed.\n\n (8) Make nfs4_create_client() use (6) and (7) instead of locking cl_sem.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7539bbab8062aadc1db95a22b377146843cfa88f",
      "tree": "697983ea016cbe378e4f2128846edebd78e468b9",
      "parents": [
        "adfa6f980bd46974e6b32b22dd0c45e3f52063f4"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:09 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:32 2006 -0400"
      },
      "message": "NFS: Rename nfs_server::nfs4_state\n\nRename nfs_server::nfs4_state to nfs_client as it will be used to represent the\nclient state for NFS2 and NFS3 also.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "adfa6f980bd46974e6b32b22dd0c45e3f52063f4",
      "tree": "7dbc86985faa0fce0e73103979262c1593ea3a3b",
      "parents": [
        "5ae1fbce142b67bf59e15fb1af96e88a96abde7b"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:08 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:31 2006 -0400"
      },
      "message": "NFS: Rename struct nfs4_client to struct nfs_client\n\nRename struct nfs4_client to struct nfs_client so that it can become the basis\nfor a general client record for NFS2 and NFS3 in addition to NFS4.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\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": "51581f3bf922512880f52a7777923fd6dcfc792b",
      "tree": "91e9c6c6a89705e76ec07574d296967c3bde24a9",
      "parents": [
        "3e4f6290ca4df7464ee066123f2bca4298c2dab4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:47 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:47 2006 -0500"
      },
      "message": "NFSv4: SETCLIENTID_CONFIRM should handle NFS4ERR_DELAY/NFS4ERR_RESOURCE\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "286d7d6a0cb38d3d4316a1dfea9b0c0fc5a6455b",
      "tree": "844ea8a14db8261a3977ae4d460e227402a4a426",
      "parents": [
        "b4454fe1a7cb76a248d0641c9d68a44a1b8d9a1f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:26 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:47 2006 -0500"
      },
      "message": "NFSv4: Remove requirement for machine creds for the \"setclientid\" operation\n\n Use a cred from the nfs4_client-\u003ecl_state_owners list.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b4454fe1a7cb76a248d0641c9d68a44a1b8d9a1f",
      "tree": "50ddc265e9700b1924e45ffce0f4583ba1013177",
      "parents": [
        "58d9714a44a79bba9b414da3ffbf3c753dc5915f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:25 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:47 2006 -0500"
      },
      "message": "NFSv4: Remove requirement for machine creds for the \"renew\" operation\n\n In RFC3530, the RENEW operation is allowed to use either\n\n the same principal, RPC security flavour and (if RPCSEC_GSS), the same\n  mechanism and service that was used for SETCLIENTID_CONFIRM\n\n OR\n\n Any principal, RPC security flavour and service combination that\n currently has an OPEN file on the server.\n\n Choose the latter since that doesn\u0027t require us to keep credentials for\n the same principal for the entire duration of the mount.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5043e900f5404c01864fbeb5826aa7de3981bbc1",
      "tree": "eaefbbcfd6afb79cc1ad8c9beed49cc56d9ecd53",
      "parents": [
        "433fbe4c8837e3cc2ba6a6374edf28737d01a2e9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:23 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:46 2006 -0500"
      },
      "message": "NFS: Convert instances of kernel_thread() to kthread()\n\n Convert private implementations in NFSv4 state recovery and delegation\n code to use kthreads.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "433fbe4c8837e3cc2ba6a6374edf28737d01a2e9",
      "tree": "9448a58eafca388efaab5d3653c818fe60a4450d",
      "parents": [
        "26e976a884be9aa08f8ff906372f25f68df0d948"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:22 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:45 2006 -0500"
      },
      "message": "NFSv4: State recovery cleanup\n\n Use wait_on_bit() when waiting for state recovery to complete.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e761692381f294ea079d2e869fcd7c0afc79e394",
      "tree": "34ebc00c001cddc94866936c460547d311e5dabb",
      "parents": [
        "cdd4e68b5f0ed12c64b3e2be83655d2a47588a74"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:13 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:43 2006 -0500"
      },
      "message": "NFSv4: Make nfs4_state track O_RDWR, O_RDONLY and O_WRONLY separately\n\n A closer reading of RFC3530 reveals that OPEN_DOWNGRADE must always\n specify a access modes that have been the argument of a previous OPEN\n operation.\n IOW: doing OPEN(O_RDWR) and then OPEN_DOWNGRADE(O_WRONLY) is forbidden\n unless the user called OPEN(O_WRONLY)\n\n In order to fix that, we really need to track the three possible open\n states separately.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "36f20c6df75d599393d79c7feb6283b20913e3d5",
      "tree": "89b95044fe7342fd585f8ebfb62d816d46dc7f1d",
      "parents": [
        "af95598744a83506063b411d81c4f819bf774f62"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 25 17:09:57 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 25 17:11:28 2005 -0500"
      },
      "message": "NFSv4: Fix buggy nfs_wait_on_sequence()\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f99d49adf527fa6f7a9c42257fa76bca6b8df1e3",
      "tree": "41dddbc336016f9dc9557cdb15300de5e599dac1",
      "parents": [
        "6044ec8882c726e325017bd948aa0cd94ad33abc"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Mon Nov 07 01:01:34 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 07:54:06 2005 -0800"
      },
      "message": "[PATCH] kfree cleanup: fs\n\nThis is the fs/ part of the big kfree cleanup patch.\n\nRemove pointless checks for NULL prior to calling kfree() in fs/.\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "43b2a33aa868054bd477ab2c1cd20f1ba1af2c3e",
      "tree": "f22ad362b9f877dfd4bc44139894a045aa48059a",
      "parents": [
        "34ea818846e6cccdd6e05354ab8c8a6d7e34657a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:35:30 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:35:30 2005 -0500"
      },
      "message": "NFSv4: Fix recovery of flock() locks.\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d530838bfa507d67b40d13b00d9cbd7a46a47e78",
      "tree": "f4b2be26c0a7b9ed3233a2be016b7e97427f8705",
      "parents": [
        "4cecb76ff86db46d2823550256c828b6597f418e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:33:38 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:33:38 2005 -0500"
      },
      "message": "NFSv4: Fix problem with OPEN_DOWNGRADE\n\n RFC 3530 states that for OPEN_DOWNGRADE \"The share_access and share_deny\n bits specified must be exactly equal to the union of the share_access and\n share_deny bits specified for some subset of the OPENs in effect for\n current openowner on the current file.\n\n Setattr is currently violating the NFSv4 rules for OPEN_DOWNGRADE in that\n it may cause a downgrade from OPEN4_SHARE_ACCESS_BOTH to\n OPEN4_SHARE_ACCESS_WRITE despite the fact that there exists no open file\n with O_WRONLY access mode.\n\n Fix the problem by replacing nfs4_find_state() with a modified version of\n nfs_find_open_context().\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4cecb76ff86db46d2823550256c828b6597f418e",
      "tree": "db80c6f4423d2559661234e8d1cd34b2c15f7750",
      "parents": [
        "462aae65f6ea41de05ebc2a54a9e6b95563591f3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:32:58 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:32:58 2005 -0500"
      },
      "message": "NFSv4: Fix a race between open() and close()\n\n We must not remove the nfs4_state structure from the inode open lists\n before we are in sequence lock.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ec073428281b401f1142cb84b277a5b00c7994c9",
      "tree": "c96e6d10af61dc3fd678c46dda505791812ca985",
      "parents": [
        "4e51336a00bdcb42960acca52c23e90e9f4e6959"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 20 14:22:47 2005 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 20 14:22:47 2005 -0700"
      },
      "message": "NFSv4: Fix up locking for nfs4_state_owner\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4e51336a00bdcb42960acca52c23e90e9f4e6959",
      "tree": "87d619bcd796a0c272abe2499bcc56bc3eda30b4",
      "parents": [
        "a0857d03b21fa54653c9d2fe7a315381176015b4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 20 14:22:41 2005 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 20 14:22:41 2005 -0700"
      },
      "message": "NFSv4: Final tweak to sequence id\n\n Sacrifice queueing fairness for performance.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7f709a48fa798cfa0f2f777c8752e12995054f78",
      "tree": "fde5f4b4918205ba4c547ecaac95acbc8a37caa0",
      "parents": [
        "cb1f7be73b6f708d4f4ce225a3bbc02908b729e4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 23:19:39 2005 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 23:19:39 2005 -0700"
      },
      "message": "NFSv4: Fix an oopsable condition in nfs_free_seqid\n\n Storing a pointer to the struct rpc_task in the nfs_seqid is broken\n since the nfs_seqid may be freed well after the task has been destroyed.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "faf5f49c2d9c0af2847837c232a432cc146e203b",
      "tree": "f0c097ae68ca3ec3cd5ee0a904916493b00b9c1b",
      "parents": [
        "0a8838f972883112f0a7b259141b24db17583c2d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:15 2005 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:15 2005 -0700"
      },
      "message": "NFSv4: Make NFS clean up byte range locks asynchronously\n\n Currently we fail to do so if the process was signalled.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "83c9d41e456033000ccfadf535f3098d8739488d",
      "tree": "09f5573ba348225bb7eed14c20b3305f49449e06",
      "parents": [
        "e6dfa553cffcb9740f932311dff42f81d6ac63bb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:13 2005 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:13 2005 -0700"
      },
      "message": "NFSv4: Remove nfs4_client-\u003ecl_sem from close() path\n\n We no longer need to worry about collisions between close() and the state\n recovery code, since the new close will automatically recheck the\n file state once it is done waiting on its sequence slot.\n\n Ditto for the nfs4_proc_locku() procedure.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e6dfa553cffcb9740f932311dff42f81d6ac63bb",
      "tree": "d5519b749b6a7fb6e25b0459385011cd69a6caaf",
      "parents": [
        "9512135df14f8293b9bc5e8fb22d4279dee5ff66"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:13 2005 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:13 2005 -0700"
      },
      "message": "NFSv4: Remove obsolete state_owner and lock_owner semaphores\n\n OPEN, CLOSE, etc no longer need these semaphores to ensure ordering of\n requests.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9512135df14f8293b9bc5e8fb22d4279dee5ff66",
      "tree": "83fb778ed53ba10c46734968f538aa0a57d376a1",
      "parents": [
        "cee54fc944422c44e476736c045a9e8053cb0644"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:12 2005 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:12 2005 -0700"
      },
      "message": "NFSv4: Fix a potential CLOSE race\n\n Once the state_owner and lock_owner semaphores get removed, it will be\n possible for other OPEN requests to reopen the same file if they have\n lower sequence ids than our CLOSE call.\n This patch ensures that we recheck the file state once\n nfs_wait_on_sequence() has completed waiting.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cee54fc944422c44e476736c045a9e8053cb0644",
      "tree": "95f4728b3ffa8a2456727b10cd3a68f2a3065415",
      "parents": [
        "5e5ce5be6f0161d2a069a4f8a1154fe639c5c02f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:12 2005 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 14:20:12 2005 -0700"
      },
      "message": "NFSv4: Add functions to order RPC calls\n\n NFSv4 file state-changing functions such as OPEN, CLOSE, LOCK,... are all\n labelled with \"sequence identifiers\" in order to prevent the server from\n reordering RPC requests, as this could cause its file state to\n become out of sync with the client.\n\n Currently the NFS client code enforces this ordering locally using\n semaphores to restrict access to structures until the RPC call is done.\n This, of course, only works with synchronous RPC calls, since the\n user process must first grab the semaphore.\n By dropping semaphores, and instead teaching the RPC engine to hold\n the RPC calls until they are ready to be sent, we can extend this\n process to work nicely with asynchronous RPC calls too.\n\n This patch adds a new list called \"rpc_sequence\" that defines the order\n of the RPC calls to be sent. We add one such list for each state_owner.\n When an RPC call is ready to be sent, it checks if it is top of the\n rpc_sequence list. If so, it proceeds. If not, it goes back to sleep,\n and loops until it hits top of the list.\n Once the RPC call has completed, it can then bump the sequence id counter,\n and remove itself from the rpc_sequence list, and then wake up the next\n sleeper.\n\n Note that the state_owner sequence ids and lock_owner sequence ids are\n all indexed to the same rpc_sequence list, so OPEN, LOCK,... requests\n are all ordered w.r.t. each other.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8d0a8a9d0ec790086c64d210af413ac351d89e35",
      "tree": "003a1481e4a8d8487956a6bf04db80dd93264b8b",
      "parents": [
        "ecdbf769b2cb8903e07cd482334c714d89fd1146"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:32 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:42 2005 -0400"
      },
      "message": "[PATCH] NFSv4: Clean up nfs4 lock state accounting\n\n Ensure that lock owner structures are not released prematurely.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6a19275ada9137435da58990c8f8d3f58e170bf1",
      "tree": "927f8aa96c9b558a0bed5355dde66df9c0ec8554",
      "parents": [
        "438b6fdebf2a2e8573e7290bc176feb4d4475f43"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Jun 22 17:16:23 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:16 2005 -0400"
      },
      "message": "[PATCH] RPC: [PATCH] improve rpcauthauth_create error returns\n\n Currently we return -ENOMEM for every single failure to create a new auth.\n This is actually accurate for auth_null and auth_unix, but for auth_gss it\u0027s a\n bit confusing.\n\n Allow rpcauth_create (and the -\u003ecreate methods) to return errors.  With this\n patch, the user may sometimes see an EINVAL instead.  Whee.\n\n Signed-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4ce79717ce32a9f88c1ddce4b9658556cb59d37a",
      "tree": "7f0c5e4bdbc2ee15b8e902b951d1be200b35411f",
      "parents": [
        "9085bbcb76421a90bea28f4d3d03fa9977319c49"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:21 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:06 2005 -0400"
      },
      "message": "[PATCH] NFS: Header file cleanup...\n\n - Move NFSv4 state definitions into a private header file.\n - Clean up gunk in nfs_fs.h\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
