)]}'
{
  "log": [
    {
      "commit": "7b021967c5e1463936042c8da72b550d3cabe9ac",
      "tree": "efb5c26216851a93b3db3fba55858af04c8a15c5",
      "parents": [
        "6aed62853c72e29f2c97bbac7712cb398e8c9437"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:25 2009 -0700"
      },
      "message": "const: make lock_manager_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a9e61e25f9d2e7e43bf17625f5cb56c9e0a89b17",
      "tree": "1c000afc1e2eadb00570ae34666af508afa021fe",
      "parents": [
        "80492e7d49bee0a280a84a39075a7857b92836b2"
      ],
      "author": {
        "name": "Felix Blyakher",
        "email": "felixb@sgi.com",
        "time": "Tue Mar 31 15:12:56 2009 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 24 16:36:03 2009 -0400"
      },
      "message": "lockd: call locks_release_private to cleanup per-filesystem state\n\nFor every lock request lockd creates a new file_lock object\nin nlmsvc_setgrantargs() by copying the passed in file_lock with\nlocks_copy_lock(). A filesystem can attach it\u0027s own lock_operations\nvector to the file_lock. It has to be cleaned up at the end of the\nfile_lock\u0027s life. However, lockd doesn\u0027t do it today, yet it\nasserts in nlmclnt_release_lockargs() that the per-filesystem\nstate is clean.\nThis patch fixes it by exporting locks_release_private() and adding\nit to nlmsvc_freegrantargs(), to be symmetrical to creating a\nfile_lock in nlmsvc_setgrantargs().\n\nSigned-off-by: Felix Blyakher \u003cfelixb@sgi.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "e33d1ea60c3a17b8b5c2910b1eef4c1faf0ac450",
      "tree": "bbf0b7e86ac3860df9c1906711ad379bcc5681ed",
      "parents": [
        "e37da04ed145d45c2a698d7cb373a7e1191fbe86"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Feb 09 12:30:43 2009 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Mar 18 17:30:50 2009 -0400"
      },
      "message": "lockd: clean up blocking lock cases of nlsmvc_lock()\n\nNo change in behavior, just rearranging the switch so that we break out\nof the switch if and only if we\u0027re in the wait case.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "9d9b87c1218be78ddecbc85ec3bb91c79c1d56ab",
      "tree": "e33e637f4fa8b4dd1946c6a29e290078d34a388c",
      "parents": [
        "eda58a85ec3fc05855a26654d97a2b53f0e715b9"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Feb 04 17:35:38 2009 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Feb 09 13:19:46 2009 -0500"
      },
      "message": "lockd: fix regression in lockd\u0027s handling of blocked locks\n\nIf a client requests a blocking lock, is denied, then requests it again,\nthen here in nlmsvc_lock() we will call vfs_lock_file() without FL_SLEEP\nset, because we\u0027ve already queued a block and don\u0027t need the locks code\nto do it again.\n\nBut that means vfs_lock_file() will return -EAGAIN instead of\nFILE_LOCK_DENIED.  So we still need to translate that -EAGAIN return\ninto a nlm_lck_blocked error in this case, and put ourselves back on\nlockd\u0027s block list.\n\nThe bug was introduced by bde74e4bc64415b1 \"locks: add special return\nvalue for asynchronous locks\".\n\nThanks to Frank van Maarseveen for the report; his original test\ncase was essentially\n\n\tfor i in `seq 30`; do flock /nfsmount/foo sleep 10 \u0026 done\n\nTested-by: Frank van Maarseveen \u003cfrankvm@frankvm.com\u003e\nReported-by: Frank van Maarseveen \u003cfrankvm@frankvm.com\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d22b1cff099737f74f3ac5950094508b4cddec1e",
      "tree": "d93e297275719fd4a1b7a7a6731bf3befd44a5a6",
      "parents": [
        "b2b5028905226f85075a408b1118857c9aa48bb3"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Feb 06 15:05:12 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Oct 03 16:19:20 2008 -0400"
      },
      "message": "lockd: reject reclaims outside the grace period\n\nThe current lockd does not reject reclaims that arrive outside of the\ngrace period.\n\nAccepting a reclaim means promising to the client that no conflicting\nlocks were granted since last it held the lock.  We can meet that\npromise if we assume the only lockers are nfs clients, and that they are\nsufficiently well-behaved to reclaim only locks that they held before,\nand that only reclaim locks have been permitted so far.  Once we leave\nthe grace period (and start permitting non-reclaims), we can no longer\nkeep that promise.  So we must start rejecting reclaims at that point.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b2b5028905226f85075a408b1118857c9aa48bb3",
      "tree": "79d4e32fe7b0f4f12282282f0b0147ca2b438171",
      "parents": [
        "af558e33bedab672f5cfd3260bce7445e353fe21"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Feb 06 13:59:23 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Oct 03 16:19:19 2008 -0400"
      },
      "message": "lockd: move grace period checks to common code\n\nDo all the grace period checks in svclock.c.  This simplifies the code a\nbit, and will ease some later changes.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "bde74e4bc64415b142e556a34d295a52a1b7da9d",
      "tree": "b6bd229307ccab9b1ad03ffbc75f1f9960cd49e4",
      "parents": [
        "cc77b1521d06be07c9bb1a4a3e1f775dcaa15093"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Jul 25 01:48:57 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:47 2008 -0700"
      },
      "message": "locks: add special return value for asynchronous locks\n\nUse a special error value FILE_LOCK_DEFERRED to mean that a locking\noperation returned asynchronously.  This is returned by\n\n  posix_lock_file() for sleeping locks to mean that the lock has been\n  queued on the block list, and will be woken up when it might become\n  available and needs to be retried (either fl_lmops-\u003efl_notify() is\n  called or fl_wait is woken up).\n\n  f_op-\u003elock() to mean either the above, or that the filesystem will\n  call back with fl_lmops-\u003efl_grant() when the result of the locking\n  operation is known.  The filesystem can do this for sleeping as well\n  as non-sleeping locks.\n\nThis is to make sure, that return values of -EAGAIN and -EINPROGRESS by\nfilesystems are not mistaken to mean an asynchronous locking.\n\nThis also makes error handling in fs/locks.c and lockd/svclock.c slightly\ncleaner.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: David Teigland \u003cteigland@redhat.com\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": "14b395e35d1afdd8019d11b92e28041fad591b71",
      "tree": "cff7ba9bed7a38300b19a5bacc632979d64fd9c8",
      "parents": [
        "734b397cd14f3340394a8dd3266bec97d01f034b",
        "5108b27651727b5aba0826e8fd7be71b42428701"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 20 21:21:46 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 20 21:21:46 2008 -0700"
      },
      "message": "Merge branch \u0027for-2.6.27\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.27\u0027 of git://linux-nfs.org/~bfields/linux: (51 commits)\n  nfsd: nfs4xdr.c do-while is not a compound statement\n  nfsd: Use C99 initializers in fs/nfsd/nfs4xdr.c\n  lockd: Pass \"struct sockaddr *\" to new failover-by-IP function\n  lockd: get host reference in nlmsvc_create_block() instead of callers\n  lockd: minor svclock.c style fixes\n  lockd: eliminate duplicate nlmsvc_lookup_host call from nlmsvc_lock\n  lockd: eliminate duplicate nlmsvc_lookup_host call from nlmsvc_testlock\n  lockd: nlm_release_host() checks for NULL, caller needn\u0027t\n  file lock: reorder struct file_lock to save space on 64 bit builds\n  nfsd: take file and mnt write in nfs4_upgrade_open\n  nfsd: document open share bit tracking\n  nfsd: tabulate nfs4 xdr encoding functions\n  nfsd: dprint operation names\n  svcrdma: Change WR context get/put to use the kmem cache\n  svcrdma: Create a kmem cache for the WR contexts\n  svcrdma: Add flush_scheduled_work to module exit function\n  svcrdma: Limit ORD based on client\u0027s advertised IRD\n  svcrdma: Remove unused wait q from svcrdma_xprt structure\n  svcrdma: Remove unneeded spin locks from __svc_rdma_free\n  svcrdma: Add dma map count and WARN_ON\n  ...\n"
    },
    {
      "commit": "a86dc496b764ebb1431677b38eab45310e5a2ad4",
      "tree": "2ca9fa18c4f58de08acc7c8f9ea251a279eeba9b",
      "parents": [
        "c3cc8c019ca09767d7c9b5457d5cf8ac65085f44"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 13:37:09 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:57 2008 -0400"
      },
      "message": "SUNRPC: Remove the BKL from the callback functions\n\nPush it into those callback functions that actually need it.\n\nNote that all the NFS operations use their own locking, so don\u0027t need the\nBKL. Ditto for the rpcbind client.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "560de0e65904db392e1c443c4bf5ee750573336b",
      "tree": "1d6fcfe7fadd5b20ac2f70db6d45d4f8391023f9",
      "parents": [
        "6d7bbbbacc5202eaabbc232681cc325b22a73eeb"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 15:05:45 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 15:40:25 2008 -0400"
      },
      "message": "lockd: get host reference in nlmsvc_create_block() instead of callers\n\nIt may not be obvious (till you look at the definition of\nnlm_alloc_call()) that a function like nlmsvc_create_block() should\nconsume a reference on success or failure, so I find it clearer if it\ntakes the reference it needs itself.\n\nAnd both callers already do this immediately before the call anyway.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "6d7bbbbacc5202eaabbc232681cc325b22a73eeb",
      "tree": "a040220a4cba226f2dcf2345e931c57c6cc96d16",
      "parents": [
        "6cde4de80773497d8333985b135f472eda870904"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 14:38:32 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 15:28:43 2008 -0400"
      },
      "message": "lockd: minor svclock.c style fixes\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "6cde4de80773497d8333985b135f472eda870904",
      "tree": "f6b97fe59c31dbe750b146d785276d44223b7e4c",
      "parents": [
        "8f920d5e29f86d3425a68e1c3bc264d1f6f55112"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Jul 15 14:26:17 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 14:53:33 2008 -0400"
      },
      "message": "lockd: eliminate duplicate nlmsvc_lookup_host call from nlmsvc_lock\n\nnlmsvc_lock calls nlmsvc_lookup_host to find a nlm_host struct. The\ncallers of this function, however, call nlmsvc_retrieve_args or\nnlm4svc_retrieve_args, which also return a nlm_host struct.\n\nChange nlmsvc_lock to take a host arg instead of calling\nnlmsvc_lookup_host itself and change the callers to pass a pointer to\nthe nlm_host they\u0027ve already found.\n\nSince nlmsvc_testlock() now just uses the caller\u0027s reference, we no\nlonger need to get or release it.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "8f920d5e29f86d3425a68e1c3bc264d1f6f55112",
      "tree": "db3054c6d5f0a2a6b239b204171e119c69ab0217",
      "parents": [
        "b0e92aae157cbf78ede7b7dd03967b49fcb2102e"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Jul 15 14:06:48 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue Jul 15 14:26:52 2008 -0400"
      },
      "message": "lockd: eliminate duplicate nlmsvc_lookup_host call from nlmsvc_testlock\n\nnlmsvc_testlock calls nlmsvc_lookup_host to find a nlm_host struct. The\ncallers of this functions, however, call nlmsvc_retrieve_args or\nnlm4svc_retrieve_args, which also return a nlm_host struct.\n\nChange nlmsvc_testlock to take a host arg instead of calling\nnlmsvc_lookup_host itself and change the callers to pass a pointer to\nthe nlm_host they\u0027ve already found.\n\nWe take a reference to host in the place where nlmsvc_testlock()\nprevious did a new lookup, so the reference counting is unchanged from\nbefore.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "8e24eea728068bbeb6a3c500b848f883a20bf225",
      "tree": "93e79da649723e2766237505b22725fec395f139",
      "parents": [
        "530b6412786d7f83592c1a8e2445541ed73fca76"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Apr 30 00:55:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:54 2008 -0700"
      },
      "message": "fs: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1a747ee0cc11a198f9e2435add821bd0dfedb7c1",
      "tree": "10b5a55bde30bef3f466e5126bd44fc0e111fc5a",
      "parents": [
        "17efa372cfe4d189705edf6cd4fbe283827a5dc7"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Apr 24 10:08:22 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Apr 25 13:00:11 2008 -0400"
      },
      "message": "locks: don\u0027t call -\u003ecopy_lock methods on return of conflicting locks\n\nThe file_lock structure is used both as a heavy-weight representation of\nan active lock, with pointers to reference-counted structures, etc., and\nas a simple container for parameters that describe a file lock.\n\nThe conflicting lock returned from __posix_lock_file is an example of\nthe latter; so don\u0027t call the filesystem or lock manager callbacks when\ncopying to it.  This also saves the need for an unnecessary\nlocks_init_lock in the nfsv4 server.\n\nThanks to Trond for pointing out the error.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3c61eecb607dbc2777074b1a95b8a97e31a96a73",
      "tree": "0df466f7f4b9528718b4d944e944905602eb6e74",
      "parents": [
        "a5ae03989254ec25cd3a934ca02c008d67e259f7"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Apr 07 13:05:27 2008 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Apr 23 16:13:42 2008 -0400"
      },
      "message": "lockd: Fix stale nlmsvc_unlink_block comment\n\nAs of 5996a298da43a03081e9ba2116983d173001c862 (\"NLM: don\u0027t unlock on\ncancel requests\") we no longer unlock in this case, so the comment is no\nlonger accurate.\n\nThanks to Stuart Friedberg for pointing out the inconsistency.\n\nCc: Stuart Friedberg \u003csfriedberg@hp.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "d751a7cd0695554498f25d3026ca6710dbb3698f",
      "tree": "31ec617dfb9fb70160bb8d2d9c9fd2e5c1e50c15",
      "parents": [
        "7086721f9c8b59331e164e534f588e075cfd9d3f"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Feb 07 16:34:55 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Wed Apr 23 16:13:36 2008 -0400"
      },
      "message": "NLM: Convert lockd to use kthreads\n\nHave lockd_up start lockd using kthread_run. With this change,\nlockd_down now blocks until lockd actually exits, so there\u0027s no longer\nneed for the waitqueue code at the end of lockd_down. This also means\nthat only one lockd can be running at a time which simplifies the code\nwithin lockd\u0027s main loop.\n\nThis also adds a check for kthread_should_stop in the main loop of\nnlmsvc_retry_blocked and after that function returns. There\u0027s no sense\ncontinuing to retry blocks if lockd is coming down anyway.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "c64e80d55db81df22a7f25b75ab4ba4c55db4749",
      "tree": "bc844c9fbc4a19887b108d457f0d8fdc651630e2",
      "parents": [
        "9706501e43a80ce48b319214a0a9e562deded35b"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Feb 06 11:34:13 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun Feb 10 18:09:36 2008 -0500"
      },
      "message": "NLM: don\u0027t requeue block if it was invalidated while GRANT_MSG was in flight\n\nIt\u0027s possible for lockd to catch a SIGKILL while a GRANT_MSG callback\nis in flight. If this happens we don\u0027t want lockd to insert the block\nback into the nlm_blocked list.\n\nThis helps that situation, but there\u0027s still a possible race. Fixing\nthat will mean adding real locking for nlm_blocked.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "9706501e43a80ce48b319214a0a9e562deded35b",
      "tree": "6b2d5ec807edea5806e9dd41f1109d8e8aac160c",
      "parents": [
        "90bd17c87821fe0e055e0f9a7446c2875f31eb4c"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Feb 06 11:34:12 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun Feb 10 18:09:36 2008 -0500"
      },
      "message": "NLM: don\u0027t reattempt GRANT_MSG when there is already an RPC in flight\n\nWith the current scheme in nlmsvc_grant_blocked, we can end up with more\nthan one GRANT_MSG callback for a block in flight. Right now, we requeue\nthe block unconditionally so that a GRANT_MSG callback is done again in\n30s. If the client is unresponsive, it can take more than 30s for the\ncall already in flight to time out.\n\nThere\u0027s no benefit to having more than one GRANT_MSG RPC queued up at a\ntime, so put it on the list with a timeout of NLM_NEVER before doing the\nRPC call. If the RPC call submission fails, we requeue it with a short\ntimeout. If it works, then nlmsvc_grant_callback will end up requeueing\nit with a shorter timeout after it completes.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "54ca95eb362d6988a577965ffb77c08702adb890",
      "tree": "a18ff136ce9d530eaa90a42831d9b85a91ab6321",
      "parents": [
        "8838dc43d6544570e8969a74ddc4a0d21abffde6"
      ],
      "author": {
        "name": "Oleg Drokin",
        "email": "Oleg.Drokin@Sun.COM",
        "time": "Fri Jan 11 21:57:35 2008 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:07 2008 -0500"
      },
      "message": "Leak in nlmsvc_testlock for async GETFL case\n\nFix nlm_block leak for the case of supplied blocking lock info.\n\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "29dbf546159f5701e11de26fa2da5c4a962e0f83",
      "tree": "1dcdd1785445cbbf30a159a15b7b1d77f42c51c2",
      "parents": [
        "406a7ea97d9dc1a9348ba92c4cd0e7c678185c4c"
      ],
      "author": {
        "name": "Oleg Drokin",
        "email": "Oleg.Drokin@Sun.COM",
        "time": "Thu Nov 29 14:02:21 2007 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri Feb 01 16:42:06 2008 -0500"
      },
      "message": "lockd: fix a leak in nlmsvc_testlock asynchronous request handling\n\nWithout the patch, there is a leakage of nlmblock structure refcount\nthat holds a reference nlmfile structure, that holds a reference to\nstruct file, when async GETFL is used (-EINPROGRESS return from\nfile_ops-\u003elock()), and also in some error cases.\n\nFix up a style nit while we\u0027re here.\n\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "a6d85430424d44e946e0946bfaad607115510989",
      "tree": "f324085c0d92fb8ebae928bab3a5f0b480a3bb4a",
      "parents": [
        "baf14aa14efcfdb5a74d5cf804691086c6bec743"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 11:04:57 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 09 12:38:26 2007 -0700"
      },
      "message": "NLM: Fix a memory leak in nlmsvc_testlock\n\nThe recent fix for a circular lock dependency unfortunately introduced a\npotential memory leak in the event where the call to nlmsvc_lookup_host\nfails for some reason.\n\nThanks to Roel Kluin for spotting this.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "255129d1e9ca0ed3d69d5517fae3e03d7ab4b806",
      "tree": "e3dedbffebd4f0e15da97684500296c9bc4d3d6a",
      "parents": [
        "f6a592e8abd2f2394623ce5427cbb4c265495974"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 25 15:55:03 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Sep 26 09:22:04 2007 -0700"
      },
      "message": "NLM: Fix a circular lock dependency in lockd\n\nThe problem is that the garbage collector for the \u0027host\u0027 structures\nnlm_gc_hosts(), holds nlm_host_mutex while calling down to\nnlmsvc_mark_resources, which, eventually takes the file-\u003ef_mutex.\n\nWe cannot therefore call nlmsvc_lookup_host() from within\nnlmsvc_create_block, since the caller will already hold file-\u003ef_mutex, so\nthe attempt to grab nlm_host_mutex may deadlock.\n\nFix the problem by calling nlmsvc_lookup_host() outside the file-\u003ef_mutex.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ca5c8cde93d65db3139604ca6b91bf8ff3f775e2",
      "tree": "d9ce882caf6b2b1d578829481e0895d6cd5b02aa",
      "parents": [
        "582ee43dad8e411513a74f2d801255dcffc6d29e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Thu Jul 26 17:33:49 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 26 11:11:56 2007 -0700"
      },
      "message": "lockd and nfsd endianness annotation fixes\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1a8322b2b02071b0c7ac37a28357b93e6362f13e",
      "tree": "04fbdd52d8b3c2886d70b3739b9dff683aa79f02",
      "parents": [
        "f812048020282fdfa9b72a6cf539c33b6df1fd07"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Tue Nov 28 16:27:06 2006 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun May 06 20:38:50 2007 -0400"
      },
      "message": "lockd: add code to handle deferred lock requests\n\nRewrite nlmsvc_lock() to use the asynchronous interface.\n\nAs with testlock, we answer nlm requests in nlmsvc_lock by first looking up\nthe block and then using the results we find in the block if B_QUEUED is\nset, and calling vfs_lock_file() otherwise.\n\nIf this a new lock request and we get -EINPROGRESS return on a non-blocking\nrequest then we defer the request.\n\nAlso modify nlmsvc_unlock() to call the filesystem method if appropriate.\n\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "f812048020282fdfa9b72a6cf539c33b6df1fd07",
      "tree": "e4f281027da1f0e907e68b2e26ae5b773a967047",
      "parents": [
        "5ea0d75037b93baa453b4d326c6319968fe91cea"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Tue Dec 05 23:48:10 2006 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun May 06 20:38:50 2007 -0400"
      },
      "message": "lockd: always preallocate block in nlmsvc_lock()\n\nNormally we could skip ever having to allocate a block in the case where\nthe client asks for a non-blocking lock, or asks for a blocking lock that\nsucceeds immediately.\n\nHowever we\u0027re going to want to always look up a block first in order to\ncheck whether we\u0027re revisiting a deferred lock call, and to be prepared to\nhandle the case where the filesystem returns -EINPROGRESS--in that case we\nwant to make sure the lock we\u0027ve given the filesystem is the one embedded\nin the block that we\u0027ll use to track the deferred request.\n\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "5ea0d75037b93baa453b4d326c6319968fe91cea",
      "tree": "661d15750a689daec2dca0f81a16c75a930df741",
      "parents": [
        "85f3f1b3f7a6197b51a2ab98d927517df730214c"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Tue Nov 28 16:27:06 2006 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun May 06 20:38:50 2007 -0400"
      },
      "message": "lockd: handle test_lock deferrals\n\nRewrite nlmsvc_testlock() to use the new asynchronous interface: instead of\nimmediately doing a posix_test_lock(), we first look for a matching block.\nIf the subsequent test_lock returns anything other than -EINPROGRESS, we\nthen remove the block we\u0027ve found and return the results.\n\nIf it returns -EINPROGRESS, then we defer the lock request.\n\nIn the case where the block we find in the first step has B_QUEUED set,\nwe bypass the vfs_test_lock entirely, instead using the block to decide how\nto respond:\n\twith nlm_lck_denied if B_TIMED_OUT is set.\n\twith nlm_granted if B_GOT_CALLBACK is set.\n\tby dropping if neither B_TIMED_OUT nor B_GOT_CALLBACK is set\n\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "85f3f1b3f7a6197b51a2ab98d927517df730214c",
      "tree": "198465d6798b5483be2540fb6e1c0badc96d9265",
      "parents": [
        "0e4ac9d93515b27fd7635332d73eae3192ed5d4e"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Tue Nov 28 16:27:06 2006 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun May 06 20:38:50 2007 -0400"
      },
      "message": "lockd: pass cookie in nlmsvc_testlock\n\nChange NLM internal interface to pass more information for test lock; we\nneed this to make sure the cookie information is pushed down to the place\nwhere we do request deferral, which is handled for testlock by the\nfollowing patch.\n\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "0e4ac9d93515b27fd7635332d73eae3192ed5d4e",
      "tree": "87db687e59fe3a6bb856be86f67f01b4f780344f",
      "parents": [
        "2b36f412ab6f2e5b64af9832b20eb7ef67d025b4"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Tue Nov 28 16:26:51 2006 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun May 06 20:38:50 2007 -0400"
      },
      "message": "lockd: handle fl_grant callbacks\n\nAdd code to handle file system callback when the lock is finally granted.\n\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "2b36f412ab6f2e5b64af9832b20eb7ef67d025b4",
      "tree": "b4a561cc944d25d96798f97d06bd78760db7afba",
      "parents": [
        "2beb6614f5e36c6165b704c167d82ef3e4ceaa0c"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Tue Nov 28 16:26:47 2006 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun May 06 20:38:50 2007 -0400"
      },
      "message": "lockd: save lock state on deferral\n\nWe need to keep some state for a pending asynchronous lock request, so this\npatch adds that state to struct nlm_block.\n\nThis also adds a function which defers the request, by calling\nrqstp-\u003erq_chandle.defer and storing the resulting deferred request in a\nnlm_block structure which we insert into lockd\u0027s global block list.  That\nnew function isn\u0027t called yet, so it\u0027s dead code until a later patch.\n\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "150b393456e5a23513cace286a019e87151e47f0",
      "tree": "91599ec9b759f7e3c5defcb8dd361acd7288154c",
      "parents": [
        "7723ec9777d9832849b76475b1a21a2872a40d20"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Thu Jan 18 16:15:35 2007 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun May 06 19:23:24 2007 -0400"
      },
      "message": "locks: allow {vfs,posix}_lock_file to return conflicting lock\n\nThe nfsv4 protocol\u0027s lock operation, in the case of a conflict, returns\ninformation about the conflicting lock.\n\nIt\u0027s unclear how clients can use this, so for now we\u0027re not going so far as to\nadd a filesystem method that can return a conflicting lock, but we may as well\nreturn something in the local case when it\u0027s easy to.\n\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "9d6a8c5c213e34c475e72b245a8eb709258e968c",
      "tree": "96110535c2bd9485129c0753a9e0f012083b220f",
      "parents": [
        "70cc6487a4e08b8698c0e2ec935fb48d10490162"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Wed Feb 21 00:55:18 2007 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun May 06 17:39:00 2007 -0400"
      },
      "message": "locks: give posix_test_lock same interface as -\u003elock\n\nposix_test_lock() and -\u003elock() do the same job but have gratuitously\ndifferent interfaces.  Modify posix_test_lock() so the two agree,\nsimplifying some code in the process.\n\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "a995e9eb3258df6ab2e9f958e08003978e50d568",
      "tree": "03caf30a4c79f5b2254ad1f15b98bfe4d3519983",
      "parents": [
        "ce35a81a71f405031ed6fd0d454d3aaa55dc8ed2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 02 15:37:43 2007 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:02 2007 -0800"
      },
      "message": "NLM: Fix double free in __nlm_async_call\n\nrpc_call_async() will always call rpc_release_calldata(), so it is an\nerror for __nlm_async_call() to do so as well.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e8c5c045d790e7018c56f1a998a2d240b732ea3c",
      "tree": "d64de6d21d715d163244a1caeedd617955eaad5e",
      "parents": [
        "905f3ed62515f233fea09dc5ad68bbcff4903520"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Wed Dec 13 00:35:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:52 2006 -0800"
      },
      "message": "[PATCH] lockd endianness annotations\n\nAnnotated, all places switched to keeping status net-endian.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-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": "225a719f79fbc4d0cd9d9ebc5b2e3ac0e95845aa",
      "tree": "6ac303324b2832cd92a4ec9539162ac65f8d452d",
      "parents": [
        "a7a005fd12b84392becca311f2a20d5bf2a1b7af"
      ],
      "author": {
        "name": "Josef Sipek",
        "email": "jsipek@fsl.cs.sunysb.edu",
        "time": "Fri Dec 08 02:37:18 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:47 2006 -0800"
      },
      "message": "[PATCH] struct path: convert lockd\n\nSigned-off-by: Josef Sipek \u003cjsipek@fsl.cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "52921e02a4f4163a7b1f4b5dde71e1debc71de4a",
      "tree": "0202a8a4c8c78aed1826540fb33faf64a88837ce",
      "parents": [
        "7111c66e4e70588c9602035a4996c9cdc2087d2d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Thu Oct 19 23:28:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:40 2006 -0700"
      },
      "message": "[PATCH] lockd endianness annotations\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "89e63ef609fb0064a47281e31e38010159c32d57",
      "tree": "fcc1953b65d29caabbb4caf25498f4f160797a70",
      "parents": [
        "bc5fea4299b8bda5f73c6f79dc35d388caf8bced"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 04 02:16:06 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 07:55:19 2006 -0700"
      },
      "message": "[PATCH] Convert lockd to use the newer mutex instead of the older semaphore\n\nBoth the (recently introduces) nsm_sema and the older f_sema are converted\nover.\n\nCc: Olaf Kirch \u003cokir@suse.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "39be4502cb75dc26007fe1659735b26c8e63fcc6",
      "tree": "0f4c6bf14f8a975178b3192bfc9ba942da56619f",
      "parents": [
        "031d869d0e0be18cfe35526be5608225b8f0a7be"
      ],
      "author": {
        "name": "Olaf Kirch",
        "email": "okir@suse.de",
        "time": "Wed Oct 04 02:16:03 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 07:55:18 2006 -0700"
      },
      "message": "[PATCH] knfsd: match GRANTED_RES replies using cookies\n\nWhen we send a GRANTED_MSG call, we current copy the NLM cookie provided in\nthe original LOCK call - because in 1996, some broken clients seemed to rely\non this bug.  However, this means the cookies are not unique, so that when the\nclient\u0027s GRANTED_RES message comes back, we cannot simply match it based on\nthe cookie, but have to use the client\u0027s IP address in addition.  Which breaks\nwhen you have a multi-homed NFS client.\n\nThe X/Open spec explicitly mentions that clients should not expect the same\ncookie; so one may hope that any clients that were broken in 1996 have either\nbeen fixed or rendered obsolete.\n\nSigned-off-by: Olaf Kirch \u003cokir@suse.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f2af793db02d2c2f677bdb5bf8e0efdcbf9c0256",
      "tree": "2daa40a1a128905ff514df995903d8ef8d692b04",
      "parents": [
        "07ba80635117c136714084e019375aa508365375"
      ],
      "author": {
        "name": "Olaf Kirch",
        "email": "okir@suse.de",
        "time": "Wed Oct 04 02:15:59 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 07:55:17 2006 -0700"
      },
      "message": "[PATCH] knfsd: lockd: make nlm_traverse_* more flexible\n\nThis patch makes nlm_traverse{locks,blocks,shares} and friends use a function\npointer rather than a \"action\" enum.\n\nThis function pointer is given two nlm_hosts (one given by the caller, the\nother taken from the lock/block/share currently visited), and is free to do\nwith them as it wants.  If it returns a non-zero value, the lockd/block/share\nis released.\n\nSigned-off-by: Olaf Kirch \u003cokir@suse.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "68a2d76cea4234bc027df23085d9df4f2171f7fc",
      "tree": "79a595aaebb198f3692e9187d0284bc4ac18f469",
      "parents": [
        "0cea32761a2f954c6d42ca79d7d1e6b9663b1e4a"
      ],
      "author": {
        "name": "Olaf Kirch",
        "email": "okir@suse.de",
        "time": "Wed Oct 04 02:15:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 07:55:17 2006 -0700"
      },
      "message": "[PATCH] knfsd: lockd: Change list of blocked list to list_node\n\nThis patch changes the nlm_blocked list to use a list_node instead of\nhomegrown linked list handling.\n\nSigned-off-by: Olaf Kirch \u003cokir@suse.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "db4e4c9a9e741ee812e1febf5e386d6a24218a71",
      "tree": "92e59fba30edbf5e10908eb2952928a5e2a29adf",
      "parents": [
        "cf712c24d72341effcfd28330b83b49f77cb627b"
      ],
      "author": {
        "name": "Olaf Kirch",
        "email": "okir@suse.de",
        "time": "Wed Oct 04 02:15:52 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 07:55:16 2006 -0700"
      },
      "message": "[PATCH] knfsd: when looking up a lockd host, pass hostname \u0026 length\n\nThis patch adds the peer\u0027s hostname (and name length) to all calls to\nnlm*_lookup_host functions.  A subsequent patch will make use of these (is\nrequested by a sysctl).\n\nSigned-off-by: Olaf Kirch \u003cokir@suse.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e9ff3990f08e9a0c2839cc22808b01732ea5b3e4",
      "tree": "c638a7b89f0c5e8adc410316d06ca1de8b8dabee",
      "parents": [
        "0bdd7aab7f0ecd5d337910816aa058c18398628e"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Mon Oct 02 02:18:11 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 07:57:21 2006 -0700"
      },
      "message": "[PATCH] namespaces: utsname: switch to using uts namespaces\n\nReplace references to system_utsname to the per-process uts namespace\nwhere appropriate.  This includes things like uname.\n\nChanges: Per Eric Biederman\u0027s comments, use the per-process uts namespace\n\tfor ELF_PLATFORM, sunrpc, and parts of net/ipv4/ipconfig.c\n\n[jdike@addtoit.com: UML fix]\n[clg@fr.ibm.com: cleanup]\n[akpm@osdl.org: build fix]\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Andrey Savochkin \u003csaw@sw.ru\u003e\nSigned-off-by: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f3d43c769d14b7065da7f62ec468b1fcb8cd6e06",
      "tree": "bcecb5319c7395bec95a0ebbb730b3c293d7cceb",
      "parents": [
        "e4e20512cfe0bacec0764b4925889d1fa94644f9"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@fieldses.org",
        "time": "Thu Aug 03 15:07:47 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 03 16:56:02 2006 -0400"
      },
      "message": "NLM/lockd: remove b_done\n\nWe never actually set the b_done field any more; it\u0027s always zero.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n(cherry picked from af8412d4283ef91356e65e0ed9b025b376aebded commit)\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": "ec535ce154f2eaad3d97f2f20a76a6d8bdac33e5",
      "tree": "e7a6b3c77051057e963c276b4f9f66d8a0d2c51a",
      "parents": [
        "e99170ff3b799a9fd43d538932a9231fac1de9d4"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue Apr 18 13:21:50 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 19 12:43:47 2006 -0400"
      },
      "message": "NFS: make 2 functions static\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f3ee439f43381e45b191cf721b4a51d41f33301f",
      "tree": "1ac11992c5ec5669c0d6ed68a9881dd51a01220f",
      "parents": [
        "eaa82edf20d738a7ae31f4b0a5f72f64c14a58df"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@fieldses.org",
        "time": "Mon Mar 20 23:24:13 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 23:24:13 2006 -0500"
      },
      "message": "LOCKD: nlmsvc_traverse_blocks return is unused\n\nNote that we never return non-zero.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d9f6eb75d4900782a095b98470decfe98971f920",
      "tree": "6378e43b6fba38a2ee8359379aedf3b07daeea21",
      "parents": [
        "51581f3bf922512880f52a7777923fd6dcfc792b"
      ],
      "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": "lockd: blocks should hold a reference to the nlm_file\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6041b79192bdf0e7ab18ea6859effa5d8311391b",
      "tree": "f1491d4dd0dbdc829273c71e707c0adf771f5d0b",
      "parents": [
        "d47166244860eb5dfdb12ee4703968beef8a0db2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:45 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:45 2006 -0500"
      },
      "message": "lockd: Fix a typo in nlmsvc_grant_release()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "92737230dd3f1478033819d4bc20339f8da852da",
      "tree": "27bc7804a077a29b7614c698bb02632dc4ce228e",
      "parents": [
        "e4cd038a45a46ffbe06a1a72f3f15246e5b041ca"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:45 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:45 2006 -0500"
      },
      "message": "NLM: Add nlmclnt_release_call\n\nAdd a helper function to simplify the freeing of NLM client requests.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "686517f1ad1630c11964d668b556aab79b8c942e",
      "tree": "fc62470bef473ce51f6caddb3b187da756b8bffc",
      "parents": [
        "5e1abf8cb713a0b94f5a400c7b9b797990cd9dec"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:39 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:39 2006 -0500"
      },
      "message": "lockd: Make nlmsvc_create_block() use nlmsvc_lookup_host()\n\nCurrently it uses nlmclnt_lookup_host(), which puts the resulting host\nstructure on a different list.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5e1abf8cb713a0b94f5a400c7b9b797990cd9dec",
      "tree": "717a5eb95c4615855edc5f66268154cbe4118326",
      "parents": [
        "6849c0cab69f5d1a0fc7b05fa5bfb3dec53f86df"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:39 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:39 2006 -0500"
      },
      "message": "lockd: Clean up of the server-side GRANTED code\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6849c0cab69f5d1a0fc7b05fa5bfb3dec53f86df",
      "tree": "8bf595be663cc641b000846737c3ba1b6419eb6a",
      "parents": [
        "09c7938c5640a6f22bef074ca6b803dccfdb93e3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:39 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:39 2006 -0500"
      },
      "message": "lockd: Add refcounting to struct nlm_block\n\nOtherwise, the block may disappear from underneath us when in\nnlmsvc_retry_blocked.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "09c7938c5640a6f22bef074ca6b803dccfdb93e3",
      "tree": "71a6a0f66349ae46a0f816de8c8ddf952070af87",
      "parents": [
        "0996905f9301c2ff4c021982c42a15b35e74bf1c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:38 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:38 2006 -0500"
      },
      "message": "lockd: Fix server-side lock blocking code\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7117bf3dfb10b534a017260d9fc643bc1d0afd2a",
      "tree": "a7060dc3d8a5f54c5beb41885620aaf99aac42f9",
      "parents": [
        "8dc7c3115b611c00006eac3ee5b108296432aab7"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@fieldses.org",
        "time": "Mon Mar 20 13:44:26 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:26 2006 -0500"
      },
      "message": "lockd: Remove FL_LOCKD flag\n\nCurrently lockd identifies its own locks using the FL_LOCKD flag.  This\ndoesn\u0027t scale well to multiple lock managers--if we did this in nfsv4 too,\nfor example, we\u0027d be left with only one free flag bit.\n\nInstead, we just check whether the file manager ops (fl_lmops) set on this\nlock are our own.\n\nThe only use for this is in nlm_traverse_locks, which uses it to find locks\nthat need cleaning up when freeing a host or a file.\n\nIn the long run it might be nice to do reference counting instead of\ntraversing all the locks like this....\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8dc7c3115b611c00006eac3ee5b108296432aab7",
      "tree": "be44c59907cbdcb6fdf46d0ad9cc140af757acfc",
      "parents": [
        "2e0af86f618c697b44e2d67dff151256c58201c4"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@citi.umich.edu",
        "time": "Mon Mar 20 13:44:26 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:26 2006 -0500"
      },
      "message": "locks,lockd: fix race in nlmsvc_testlock\n\nposix_test_lock() returns a pointer to a struct file_lock which is unprotected\nand can be removed while in use by the caller.  Move the conflicting lock from\nthe return to a parameter, and copy the conflicting lock.\n\nIn most cases the caller ends up putting the copy of the conflicting lock on\nthe stack.  On i386, sizeof(struct file_lock) appears to be about 100 bytes.\nWe\u0027re assuming that\u0027s reasonable.\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a85f193e2fb7d53e48ae6a9d9ea990bfb4cea555",
      "tree": "f992c9b6b0ba6f1726a48af99a0251270d32e821",
      "parents": [
        "5de0e5024a4e21251fd80dbfdb83316ce97086bc"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@citi.umich.edu",
        "time": "Mon Mar 20 13:44:25 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:25 2006 -0500"
      },
      "message": "lockd: make nlmsvc_lock use only posix_lock_file\n\nReorganize nlmsvc_lock() to make full use of posix_lock_file(), which does\neveything nlmsvc_lock() needs - no need to call posix_test_lock(),\nposix_locks_deadlock(), or posix_block_lock() separately.\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5de0e5024a4e21251fd80dbfdb83316ce97086bc",
      "tree": "fa34eeee2aa007fb49b34c45e55aafc8b67c6e37",
      "parents": [
        "15dadef9460ad8d3b1d5ede1c1697dc79af44a72"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@citi.umich.edu",
        "time": "Mon Mar 20 13:44:25 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:25 2006 -0500"
      },
      "message": "lockd: simplify nlmsvc_grant_blocked\n\nReorganize nlmsvc_grant_blocked() to make full use of posix_lock_file().  Note\nthat there\u0027s no need for separate calls to posix_test_lock(),\nposix_locks_deadlock(), or posix_block_lock().\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "15dadef9460ad8d3b1d5ede1c1697dc79af44a72",
      "tree": "e95ff41246a7fb25ad523e1868166d2f2d9ef2e9",
      "parents": [
        "1e7cb3dc12dbbac690d78c84f9c7cb11132ed121"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@citi.umich.edu",
        "time": "Mon Mar 20 13:44:24 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:24 2006 -0500"
      },
      "message": "lockd: clean up nlmsvc_lock\n\nSlightly more consistent dprintk error reporting, consolidate some up()\u0027s.\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7bab377fcb495ee2e5a1cd69d235f8d84c76e3af",
      "tree": "67f03fbc543632ccf71075af250635201b43801b",
      "parents": [
        "36943fa4b2701b9ef2d60084c85ecbe634aec252"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:06 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:06 2006 -0500"
      },
      "message": "lockd: Don\u0027t expose the process pid to the NLM server\n\nInstead we use the nlm_lockowner-\u003epid.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "64a318ee2af9000df482d7a125c3b3e1f1007404",
      "tree": "7b39e558cccce484635dc847a016bbcb5e83abdb",
      "parents": [
        "2c5acd2e1a73cad59203a1bace21e6b03f2920a9"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@fieldses.org",
        "time": "Tue Jan 03 09:55:46 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:54 2006 -0500"
      },
      "message": "NLM: Further cancel fixes\n\n If the server receives an NLM cancel call and finds no waiting lock to\n cancel, then chances are the lock has already been applied, and the client\n just hadn\u0027t yet processed the NLM granted callback before it sent the\n cancel.\n\n The Open Group text, for example, perimts a server to return either success\n (LCK_GRANTED) or failure (LCK_DENIED) in this case.  But returning an error\n seems more helpful; the client may be able to use it to recognize that a\n race has occurred and to recover from the race.\n\n So, modify the relevant functions to return an error in this case.\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": "2c5acd2e1a73cad59203a1bace21e6b03f2920a9",
      "tree": "8fbd8725f4ca96c1d77d3c00a5756beaf5fa8abc",
      "parents": [
        "5996a298da43a03081e9ba2116983d173001c862"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@fieldses.org",
        "time": "Tue Jan 03 09:55:45 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:54 2006 -0500"
      },
      "message": "NLM: clean up nlmsvc_delete_block\n\n The fl_next check here is superfluous (and possibly a layering violation).\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": "5996a298da43a03081e9ba2116983d173001c862",
      "tree": "533a3289102051cc3e033eff5730301776e64d31",
      "parents": [
        "f232142cc21127c829559923eb405d1bcb2e2278"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@fieldses.org",
        "time": "Tue Jan 03 09:55:44 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:53 2006 -0500"
      },
      "message": "NLM: don\u0027t unlock on cancel requests\n\n Currently when lockd gets an NLM_CANCEL request, it also does an unlock for\n the same range.  This is incorrect.\n\n The Open Group documentation says that \"This procedure cancels an\n *outstanding* blocked lock request.\"  (Emphasis mine.)\n\n Also, consider a client that holds a lock on the first byte of a file, and\n requests a lock on the entire file.  If the client cancels that request\n (perhaps because the requesting process is signalled), the server shouldn\u0027t\n apply perform an unlock on the entire file, since that will also remove the\n previous lock that the client was already granted.\n\n Or consider a lock request that actually *downgraded* an exclusive lock to\n a shared lock.\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": "f232142cc21127c829559923eb405d1bcb2e2278",
      "tree": "4ac11e21c008a26b6e9e5ad3ac4db8b2920534a9",
      "parents": [
        "fb459f45f7c7689714023d41b3dca999bb90a5d3"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@fieldses.org",
        "time": "Tue Jan 03 09:55:42 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:53 2006 -0500"
      },
      "message": "NLM: Clean up nlmsvc_grant_reply locking\n\n Slightly simpler logic here makes it more trivial to verify that the up\u0027s\n and down\u0027s are balanced here.  Break out an assignment from a conditional\n while we\u0027re at it.\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": "963d8fe53339128ee46a7701f2e36305f0ccff8c",
      "tree": "426736c70a8e05cb1d945d5c7f44ea6475edd113",
      "parents": [
        "abbcf28f23d53e8ec56a91f3528743913fa2694a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:04 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:39 2006 -0500"
      },
      "message": "RPC: Clean up RPC task structure\n\n Shrink the RPC task structure. Instead of storing separate pointers\n for task-\u003etk_exit and task-\u003etk_release, put them in a structure.\n\n Also pass the user data pointer as a parameter instead of passing it via\n task-\u003etk_calldata. This enables us to nest callbacks.\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"
    }
  ]
}
