)]}'
{
  "log": [
    {
      "commit": "a3d01454bc58b5a211ef64a7670572a40b71e682",
      "tree": "68c1ba383fb2c6702a8cc02bc81d51da6fb2920b",
      "parents": [
        "1b83d707032a1be40a60ed0a9bd841662cc04a5d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 12:21:19 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:51 2008 -0400"
      },
      "message": "NFS: Remove BKL requirement from attribute updates\n\nThe main problem is dealing with inode-\u003ei_size: we need to set the\ninode-\u003ei_lock on all attribute updates, and so vmtruncate won\u0027t cut it.\nMake an NFS-private version of vmtruncate that has the necessary locking\nsemantics.\n\nThe result should be that the following inode attribute updates are\nprotected by inode-\u003ei_lock\n\tnfsi-\u003ecache_validity\n\tnfsi-\u003eread_cache_jiffies\n\tnfsi-\u003eattrtimeo\n\tnfsi-\u003eattrtimeo_timestamp\n\tnfsi-\u003echange_attr\n\tnfsi-\u003elast_updated\n\tnfsi-\u003ecache_change_attribute\n\tnfsi-\u003eaccess_cache\n\tnfsi-\u003eaccess_cache_entry_lru\n\tnfsi-\u003eaccess_cache_inode_lru\n\tnfsi-\u003eacl_access\n\tnfsi-\u003eacl_default\n\tnfsi-\u003enfs_page_tree\n\tnfsi-\u003encommit\n\tnfsi-\u003enpages\n\tnfsi-\u003eopen_files\n\tnfsi-\u003esilly_list\n\tnfsi-\u003eacl\n\tnfsi-\u003eopen_states\n\tinode-\u003ei_size\n\tinode-\u003ei_atime\n\tinode-\u003ei_mtime\n\tinode-\u003ei_ctime\n\tinode-\u003ei_nlink\n\tinode-\u003ei_uid\n\tinode-\u003ei_gid\n\nThe following is protected by dir-\u003ei_mutex\n\tnfsi-\u003ecookieverf\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e468bae97d243fe0e1515abaa1f7d0edf1476ad0",
      "tree": "42bbbfe8d6dfc60bcaaaa1a7164ba75dc1060050",
      "parents": [
        "e7d39069e387a12d4c57f4067d9f48c1d29ea900"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 13 13:25:22 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:24 2008 -0400"
      },
      "message": "NFS: Allow redirtying of a completed unstable write.\n\nCurrently, if an unstable write completes, we cannot redirty the page in\norder to reflect a new change in the page data until after we\u0027ve sent a\nCOMMIT request.\n\nThis patch allows a page rewrite to proceed without the unnecessary COMMIT\nstep, putting it immediately back onto the dirty page list, undoing the\nVM unstable write accounting, and removing the NFS_PAGE_TAG_COMMIT tag from\nthe NFS radix tree.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e7d39069e387a12d4c57f4067d9f48c1d29ea900",
      "tree": "5c22fa8d08bc0ed90af16b4c8c1044e6da15bbac",
      "parents": [
        "396cee977f79590673ad51b04f1853e58bc30e7b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 13 12:12:32 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:23 2008 -0400"
      },
      "message": "NFS: Clean up nfs_update_request()\n\nSimplify the loop in nfs_update_request by moving into a separate function\nthe code that attempts to update an existing cached NFS write.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "48186c7d5734a6b137f9186b37f6dc98097d0429",
      "tree": "3fc31d6d71a9160e50ea1c4e9afaefe9b4aefd80",
      "parents": [
        "6da24bc9cfc645c619992e39aab09747164c9f14"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jun 11 17:56:05 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:09:05 2008 -0400"
      },
      "message": "NFS: Fix trace debugging nits in write.c\n\nClean up: fix a few dprintk messages that still need to show the RPC task ID\ncorrectly, and be sure we use the preferred %lld or %llu instead of %Ld or\n%Lu.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7e5f6146609eb9134fac7d1b6bfee43df1732188",
      "tree": "46f5ea60fc86ebd39dbdb85e13c8cabd2da28ec0",
      "parents": [
        "efc91ed0191e3fc62bb1c556ac93fc4e661214d2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 25 12:59:19 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:08:46 2008 -0400"
      },
      "message": "NFS: Revert commit 44dd151d\n\nRevert commit 44dd151d \"NFS: Don\u0027t mark a written page as uptodate until it\nis on disk\". While it is true that the write may fail, that is always the\ncase. There is no reason why we should treat data on pages that are not\nalready marked as PG_uptodate as being special. The only thing we gain is a\nnoticeable slowdown when re-reading these pages.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "efc91ed0191e3fc62bb1c556ac93fc4e661214d2",
      "tree": "291dba382da5d609c5bd35b5e369324ecbb95c00",
      "parents": [
        "b390c2b55c830eb3b64633fa8d8b8837e073e458"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 10 18:31:00 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:08:45 2008 -0400"
      },
      "message": "NFS: Optimise append writes with holes\n\nIf a file is being extended, and we\u0027re creating a hole, we might as well\ndeclare the entire page to be up to date.\n\nThis patch significantly improves the write performance for sparse files\nin the case where lseek(SEEK_END) is used to append several non-contiguous\nwrites at intervals of \u003c PAGE_SIZE.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f3d47a3a6a1484a93c8cfe1e8c8d4399c95199c7",
      "tree": "639d104b0e66dc3bf143bf0010fb5954dc3e7b37",
      "parents": [
        "0b4aae7aad162ad175ba8a65708332f888066b26"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jun 05 15:17:39 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 09 12:08:39 2008 -0400"
      },
      "message": "NFS: Fix a preemption count leak in nfs_update_request\n\nThe commit 2785259631697ebb0749a3782cca206e2e542939 (nfs: use GFP_NOFS\npreloads for radix-tree insertion) appears to have introduced a bug:\nWe only want to call radix_tree_preload() once after creating a request.\nCalling it every time we loop after we created the request, will cause\npreemption count leaks.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\n"
    },
    {
      "commit": "03fa9e84e5dc10aeacb0e4eb2f708cd9fc36a5b8",
      "tree": "ebd8d0855b70698ea3017147bf69e38ac22af854",
      "parents": [
        "b7e2445737ff69cef892b6fd9cd71cae2c9e9515"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jun 05 16:02:35 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jun 23 17:09:07 2008 -0400"
      },
      "message": "NFS: nfs_updatepage(): don\u0027t mark page as dirty if an error occurred\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "38def50fabc479dc96ea6bd2cb2526e0dfc36fa4",
      "tree": "c7327131526e59b35f639af91dbea3075b20445e",
      "parents": [
        "b0b539739fe9b7d75002412a787cfdf4efddbc33"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@citi.umich.edu",
        "time": "Thu May 01 20:03:22 2008 +0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:23 2008 -0700"
      },
      "message": "nfs: fix race in nfs_dirty_request\n\nWhen called from nfs_flush_incompatible, the req is not locked, so\nreq-\u003ewb_page might be set to NULL before it is used by PageWriteback.\n\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dbae4c73f08b8a7980cc912954ade3d4c1fb6147",
      "tree": "8a1ddd0b9df5ae7e919a235e9c765266d68a0e3f",
      "parents": [
        "c9d8f89d9816c1d16ada492aa547a4d692508c0d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 14 14:54:53 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:53:08 2008 -0400"
      },
      "message": "NFS: Ensure that rpc_run_task() errors are propagated back to the caller\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c9d8f89d9816c1d16ada492aa547a4d692508c0d",
      "tree": "d85339019cff084c11d4fceaf194fc5e34588d61",
      "parents": [
        "fdd1e74c89fe39259a29c494209abad63ff76f82"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 15 16:56:39 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:53:05 2008 -0400"
      },
      "message": "NFS: Ensure that the write code cleans up properly when rpc_run_task() fails\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "73e3302f60c0e11a0db0b34b903f591139c4f937",
      "tree": "7f1a4be9e1b534bf9eb87fabaa1a15e468221a9e",
      "parents": [
        "080a1f148df0615f7a610e4776dd8f3fb706f54f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 11 16:03:54 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:52:58 2008 -0400"
      },
      "message": "NFS: Fix nfs_wb_page() to always exit with an error or a clean page\n\nIt is possible for nfs_wb_page() to sometimes exit with 0 return value, yet\nthe page is left in a dirty state.\nFor instance in the case where the server rebooted, and the COMMIT request\nfailed, then all the previously \"clean\" pages which were cached by the\nserver, but were not guaranteed to have been writted out to disk,\nhave to be redirtied and resent to the server.\nThe fix is to have nfs_wb_page_priority() check that the page is clean\nbefore it exits...\n\nThis fixes a condition that triggers the BUG_ON(PagePrivate(page)) in\nnfs_create_request() when we\u0027re in the nfs_readpage() path.\n\nAlso eliminate a redundant BUG_ON(!PageLocked(page)) while we\u0027re at it. It\nturns out that clear_page_dirty_for_io() has the exact same test.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6d884e8fc8114dc8877218f06a9a9a1d801901e4",
      "tree": "091b9ab3ae2fe7dfbb15b28573d173a21e44dc1f",
      "parents": [
        "c7c350e92aab1bba68f26a6027b734adcf9824ba"
      ],
      "author": {
        "name": "Fred",
        "email": "iisaman@citi.umich.edu",
        "time": "Wed Mar 19 11:24:38 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 17:59:56 2008 -0400"
      },
      "message": "nfs: nfs_redirty_request\n\nBoth flush functions have the same error handling routine.  Pull\nit out as a function.\n\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c7c350e92aab1bba68f26a6027b734adcf9824ba",
      "tree": "aa99bd94c3049dd871d9c030d70a5f3d87591a95",
      "parents": [
        "2f42b5d043ee271d1e5d30ecd77186b6c4d4e534",
        "f8512ad0da16cbe156f3a7627971cdf0b39c4138"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 17:59:44 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 17:59:44 2008 -0400"
      },
      "message": "Merge branch \u0027hotfixes\u0027 into devel\n"
    },
    {
      "commit": "f8512ad0da16cbe156f3a7627971cdf0b39c4138",
      "tree": "2658c63faeda07505793ccc747ee4efbffdaa69c",
      "parents": [
        "264e3e889d86e552b4191d69bb60f4f3b383135a"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@citi.umich.edu",
        "time": "Wed Mar 19 11:24:39 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 17:59:02 2008 -0400"
      },
      "message": "nfs: don\u0027t ignore return value from nfs_pageio_add_request\n\nIgnoring the return value from nfs_pageio_add_request can cause deadlocks.\n\nIn read path:\n  call nfs_pageio_add_request from readpage_async_filler\n  assume at this point that there are requests already in desc, that\n    can\u0027t be merged with the current request.\n  so nfs_pageio_doio is fired up to clear out desc.\n  assume something goes wrong in setting up the io, so desc-\u003epg_error is set.\n  This causes nfs_pageio_add_request to return 0, *WITHOUT* adding the original\n    request.\n  BUT, since return code is ignored, readpage_async_filler assumes it has\n    been added, and does nothing further, leaving page locked.\n  do_generic_mapping_read will eventually call lock_page, resulting in deadlock\n\nIn write path:\n  page is marked dirty by generic_perform_write\n  nfs_writepages is called\n  call nfs_pageio_add_request from nfs_page_async_flush\n  assume at this point that there are requests already in desc, that\n    can\u0027t be merged with the current request.\n  so nfs_pageio_doio is fired up to clear out desc.\n  assume something goes wrong in setting up the io, so desc-\u003epg_error is set.\n  This causes nfs_page_async_flush to return 0, *WITHOUT* adding the original\n    request, yet marking the request as locked (PG_BUSY) and in writeback,\n    clearing dirty marks.\n  The next time a write is done to the page, deadlock will result as\n    nfs_write_end calls nfs_update_request\n\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "af1b8c2ff7c337c4e96db12d6b7b61eaa91aa069",
      "tree": "5de8a786af7abdc9e26f59ebd8b1639e85745591",
      "parents": [
        "bfa274e2436fc7ef72ef51c878083647f1cfd429"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 15:56:29 2008 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 07 14:33:40 2008 -0500"
      },
      "message": "NFS: Fix an f_mode/f_flags confusion in fs/nfs/write.c\n\nO_SYNC is stored in filp-\u003ef_flags.\nThanks to Al Viro for pointing out the bug.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cdd0972945dbcb8ea24db365d9b0e100af2a27bb",
      "tree": "d41204db20ccc81cecf99a332e2fa764075e8637",
      "parents": [
        "5e4424af9a1f062c6451681dff24a26e27741cc6",
        "cbc20059259edee4ea24c923e6627c394830c972"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Feb 28 23:48:05 2008 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Feb 28 23:48:05 2008 -0800"
      },
      "message": "Merge branch \u0027cleanups\u0027 into next\n"
    },
    {
      "commit": "5e4424af9a1f062c6451681dff24a26e27741cc6",
      "tree": "fcba54a8fc2d94c1d691ab5b8b956ac71b5cb8d4",
      "parents": [
        "ff2d7db848f8db7cade39e55f78f86d77e0de01a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:53:49 2008 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Feb 28 23:26:28 2008 -0800"
      },
      "message": "SUNRPC: Remove now-redundant RCU-safe rpc_task free path\n\nNow that we\u0027ve tightened up the locking rules for RPC queue wakeups, we can\nremove the RCU-safe kfree calls...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "101070ca2fe67186f5f5517b66cb4757b17f4e29",
      "tree": "b131c97e3033fc4c848e8cb3d76f675735b95085",
      "parents": [
        "5746006f1d17d9d5a3015051ea54de4341cb31f9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 19 20:04:23 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:40:37 2008 -0800"
      },
      "message": "NFS: Ensure that the asynchronous RPC calls complete on nfsiod.\n\nWe want to ensure that rpc_call_ops that involve mntput() are run on nfsiod\nrather than on rpciod, so that they don\u0027t deadlock when the resulting\numount calls rpc_shutdown_client(). Hence we specify that read, write and\ncommit calls must complete on nfsiod.\nDitto for NFSv4 open, lock, locku and close asynchronous calls.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "383ba71938519959be8e0b598ec658f0c211ff45",
      "tree": "01eb0155676fe69d40f01dc137ea3be952d88997",
      "parents": [
        "4b5621f6b127bce9218998c187bd25bf7f9fc371"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 19 20:04:20 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:40:33 2008 -0800"
      },
      "message": "NFS: Fix a deadlock with lazy umount\n\nWe can\u0027t allow rpc callback functions like task-\u003etk_ops-\u003erpc_call_prepare()\nand task-\u003etk_ops-\u003erpc_call_done() to call mntput() in any way, since\nthat will cause a deadlock when the call to rpc_shutdown_client() attempts\nto wait on \u0027task\u0027 to complete.\n\nWe can avoid the above deadlock by moving calls to mntput to\ntask-\u003etk_ops-\u003erpc_release() callback, since at that time the task will be\nmarked as completed, and so rpc_shutdown_client won\u0027t attempt to wait on\nit.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4b5621f6b127bce9218998c187bd25bf7f9fc371",
      "tree": "5de8a786af7abdc9e26f59ebd8b1639e85745591",
      "parents": [
        "bfa274e2436fc7ef72ef51c878083647f1cfd429"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 15:56:29 2008 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 15:56:29 2008 -0800"
      },
      "message": "NFS: Fix an f_mode/f_flags confusion in fs/nfs/write.c\n\nO_SYNC is stored in filp-\u003ef_flags.\nThanks to Al Viro for pointing out the bug.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2785259631697ebb0749a3782cca206e2e542939",
      "tree": "607c61275106a281db0522e0f9b7bed12655c17b",
      "parents": [
        "8d042218b075de3cdbe066198515b3521553746e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Feb 04 23:48:37 2008 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 13 23:24:09 2008 -0500"
      },
      "message": "nfs: use GFP_NOFS preloads for radix-tree insertion\n\nNFS should use GFP_NOFS mode radix tree preloads rather than GFP_ATOMIC\nallocations at radix-tree insertion-time.  This is important to reduce the\natomic memory requirement.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5d47a35600270e7115061cb1320ee60ae9bcb6b8",
      "tree": "63b6ac010939b45ce53e65dedae68f1296bd98e7",
      "parents": [
        "df922075f2a55b1ae71a6fe589c1cc1b91381f4f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Feb 07 17:24:07 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Feb 07 19:20:20 2008 -0500"
      },
      "message": "NFS: Fix a potential file corruption issue when writing\n\nIf the inode is flagged as having an invalid mapping, then we can\u0027t rely on\nthe PageUptodate() flag. Ensure that we don\u0027t use the \"anti-fragmentation\"\nwrite optimisation in nfs_updatepage(), since that will cause NFS to write\nout areas of the page that are no longer guaranteed to be up to date.\n\nA potential corruption could occur in the following scenario:\n\nclient 1\t\t\tclient 2\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\t\t\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\t\t\t\tfd\u003dopen(\"f\",O_CREAT|O_WRONLY,0644);\n\t\t\t\twrite(fd,\"fubar\\n\",6);\t// cache last page\n\t\t\t\tclose(fd);\nfd\u003dopen(\"f\",O_WRONLY|O_APPEND);\nwrite(fd,\"foo\\n\",4);\nclose(fd);\n\n\t\t\t\tfd\u003dopen(\"f\",O_WRONLY|O_APPEND);\n\t\t\t\twrite(fd,\"bar\\n\",4);\n\t\t\t\tclose(fd);\n-----\nThe bug may lead to the file \"f\" reading \u0027fubar\\n\\0\\0\\0\\nbar\\n\u0027 because\nclient 2 does not update the cached page after re-opening the file for\nwrite. Instead it keeps it marked as PageUptodate() until someone calls\ninvaldate_inode_pages2() (typically by calling read()).\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "eebd2aa355692afaf9906f62118620f1a1c19dbb",
      "tree": "207eead3a736963c3e50942038c463f2f611ccce",
      "parents": [
        "b98348bdd08dc4ec11828aa98a78edde15c53cfa"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:13 2008 -0800"
      },
      "message": "Pagecache zeroing: zero_user_segment, zero_user_segments and zero_user\n\nSimplify page cache zeroing of segments of pages through 3 functions\n\nzero_user_segments(page, start1, end1, start2, end2)\n\n        Zeros two segments of the page. It takes the position where to\n        start and end the zeroing which avoids length calculations and\n\tmakes code clearer.\n\nzero_user_segment(page, start, end)\n\n        Same for a single segment.\n\nzero_user(page, start, length)\n\n        Length variant for the case where we know the length.\n\nWe remove the zero_user_page macro. Issues:\n\n1. Its a macro. Inline functions are preferable.\n\n2. The KM_USER0 macro is only defined for HIGHMEM.\n\n   Having to treat this special case everywhere makes the\n   code needlessly complex. The parameter for zeroing is always\n   KM_USER0 except in one single case that we open code.\n\nAvoiding KM_USER0 makes a lot of code not having to be dealing\nwith the special casing for HIGHMEM anymore. Dealing with\nkmap is only necessary for HIGHMEM configurations. In those\nconfigurations we use KM_USER0 like we do for a series of other\nfunctions defined in highmem.h.\n\nSince KM_USER0 is depends on HIGHMEM the existing zero_user_page\nfunction could not be a macro. zero_user_* functions introduced\nhere can be be inline because that constant is not used when these\nfunctions are called.\n\nAlso extract the flushing of the caches to be outside of the kmap.\n\n[akpm@linux-foundation.org: fix nfs and ntfs build]\n[akpm@linux-foundation.org: fix ntfs build some more]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "75659ca0c10992dcb39258518368a0f6f56e935d",
      "tree": "5d014ceb2f10158061a23d0d976f9a613d85e659",
      "parents": [
        "fbdde7bd274d74729954190f99afcb1e3d9bbfba",
        "2dfe485a2c8afa54cb069fcf48476f6c90ea3fdf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 11:45:47 2008 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 11:45:47 2008 +1100"
      },
      "message": "Merge branch \u0027task_killable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc\n\n* \u0027task_killable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc: (22 commits)\n  Remove commented-out code copied from NFS\n  NFS: Switch from intr mount option to TASK_KILLABLE\n  Add wait_for_completion_killable\n  Add wait_event_killable\n  Add schedule_timeout_killable\n  Use mutex_lock_killable in vfs_readdir\n  Add mutex_lock_killable\n  Use lock_page_killable\n  Add lock_page_killable\n  Add fatal_signal_pending\n  Add TASK_WAKEKILL\n  exit: Use task_is_*\n  signal: Use task_is_*\n  sched: Use task_contributes_to_load, TASK_ALL and TASK_NORMAL\n  ptrace: Use task_is_*\n  power: Use task_is_*\n  wait: Use TASK_NORMAL\n  proc/base.c: Use task_is_*\n  proc/array.c: Use TASK_REPORT\n  perfmon: Use task_is_*\n  ...\n\nFixed up conflicts in NFS/sunrpc manually..\n"
    },
    {
      "commit": "bf4285e75c3272ad9bfdeb886d247962bb2985f8",
      "tree": "a366fd1d3fb2591f1fce114f17aade410f1db3dc",
      "parents": [
        "d24aae41b4d4141d4f3cffdbf4c31d85637ba691"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Dec 20 14:54:57 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:01 2008 -0500"
      },
      "message": "NFS: Fix minor mixed sign comparison in NFS client\u0027s write logic\n\nClean up: PAGE_CACHE_SIZE is unsigned, and nfs_pageio_init() takes a size_t.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0773769191d943358a8392fa86abd756d004c4b6",
      "tree": "2eeba848f7c1e6ba90696190f05db26c2f31655e",
      "parents": [
        "e8f5d77c8029ff8f5dcd1dfc133aac0bbbffd92b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 25 18:42:54 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:39 2008 -0500"
      },
      "message": "NFS/SUNRPC: Convert users of rpc_init_task+rpc_execute to rpc_run_task()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bdc7f021f3a1fade77adf3c2d7f65690566fddfe",
      "tree": "c076431ac83fc75cde00dc3d3a218fabae449980",
      "parents": [
        "b3ef8b3bb93300e58a4c4806207de3de4eb76f48"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:40:00 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:32 2008 -0500"
      },
      "message": "NFS: Clean up the (commit|read|write)_setup() callback routines\n\nMove the common code for setting up the nfs_write_data and nfs_read_data\nstructures into fs/nfs/read.c, fs/nfs/write.c and fs/nfs/direct.c.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3ff7576ddac06c3d07089e241b40826d24bbf1ac",
      "tree": "7f5998434b7d0dd1f08ff7ee65c93fab4861a6d3",
      "parents": [
        "c970aa85e71bd581726c42df843f6f129db275ac"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:40:00 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:30 2008 -0500"
      },
      "message": "SUNRPC: Clean up the initialisation of priority queue scheduling info.\n\nWe want the default scheduling priority (priority \u003d\u003d 0) to remain\nRPC_PRIORITY_NORMAL.\n\nAlso ensure that the priority wait queue scheduling is per process id\ninstead of sometimes being per thread, and sometimes being per inode.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "84115e1cd4a3614c4e566d4cce31381dce3dbef9",
      "tree": "01b2de7163deb6b3a789811183d8b8c1329b900c",
      "parents": [
        "e8914c65f7f8d4e8701b8e78a12b714872ea0402"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:39:59 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:30 2008 -0500"
      },
      "message": "SUNRPC: Cleanup of rpc_task initialisation\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "acee478afc6ff7e1b8852d9a4dca1ff36021414d",
      "tree": "94aa75336122b4914af0cfa91eaf1329b2c519d3",
      "parents": [
        "8b1f9ee56e21e505a3d5d3e33f823006d1abdbaf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 22 17:13:07 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:24 2008 -0500"
      },
      "message": "NFS: Clean up the write request locking.\n\nEnsure that we set/clear NFS_PAGE_TAG_LOCKED when the nfs_page is hashed.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "150030b78a454ba50d5e267b0dcf01b162809192",
      "tree": "4de766e7abbfd73a052f14f8efd3a26eb7b59d87",
      "parents": [
        "009e577e079656d51d0fe9b15e61e41b00816c29"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Thu Dec 06 16:24:39 2007 -0500"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@linux.intel.com",
        "time": "Thu Dec 06 17:40:25 2007 -0500"
      },
      "message": "NFS: Switch from intr mount option to TASK_KILLABLE\n\nBy using the TASK_KILLABLE infrastructure, we can get rid of the \u0027intr\u0027\nmount option.  We have to use _killable everywhere instead of _interruptible\nas we get rid of rpc_clnt_sigmask/sigunmask.\n\nSigned-off-by: Liam R. Howlett \u003chowlett@gmail.com\u003e\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\n"
    },
    {
      "commit": "5334eb13d455dd26b7064980b118e3c957929701",
      "tree": "90aef84a73803d60f780b73f64f2791a394e9ad5",
      "parents": [
        "f16c960332b125491178fc2da7ea7893b0d65d05"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Nov 21 15:04:31 2007 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 26 16:24:48 2007 -0500"
      },
      "message": "NFS: make nfs_wb_page_priority() static\n\nnfs_wb_page_priority() can now become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "61e930a904966cc37e0a3404276f0b73037e57ca",
      "tree": "65553920bd6a471c2bae5a35ed3b4cee8bdf1258",
      "parents": [
        "4fa4d23fa20de67df919030c1216295664866ad7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 18 17:08:05 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Oct 19 17:18:57 2007 -0400"
      },
      "message": "NFS: Fix a writeback race...\n\nThis patch fixes a regression that was introduced by commit\n44dd151d5c21234cc534c47d7382f5c28c3143cd\n\nWe cannot zero the user page in nfs_mark_uptodate() any more, since\n\n  a) We\u0027d be modifying the page without holding the page lock\n  b) We can race with other updates of the page, most notably\n     because of the call to nfs_wb_page() in nfs_writepage_setup().\n\nInstead, we do the zeroing in nfs_update_request() if we see that we\u0027re\ncreating a request that might potentially be marked as up to date.\n\nThanks to Olivier Paquet for reporting the bug and providing a test-case.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c9e51e4180696aa67915ec5665e4ec74125565de",
      "tree": "d66e1427b16e56bc7da0dfb583a6d8edb55a2c3e",
      "parents": [
        "b2e8fb6efa209c82203c79b491b5bc952d44aa57"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 16 23:25:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "mm: count reclaimable pages per BDI\n\nCount per BDI reclaimable pages; nr_reclaimable \u003d nr_dirty + nr_unstable.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c4dc4beed23827e155d7cbc2a1ffa3949eddd194",
      "tree": "b7f115c159fe26b90b7e5b7d5dcf2f9318b69bf1",
      "parents": [
        "1f7d6668c29b1dfa307a44844f9bb38356fc989b"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 16 23:25:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:44 2007 -0700"
      },
      "message": "nfs: remove congestion_end()\n\nThese patches aim to improve balance_dirty_pages() and directly address three\nissues:\n  1) inter device starvation\n  2) stacked device deadlocks\n  3) inter process starvation\n\n1 and 2 are a direct result from removing the global dirty limit and using\nper device dirty limits. By giving each device its own dirty limit is will\nno longer starve another device, and the cyclic dependancy on the dirty limit\nis broken.\n\nIn order to efficiently distribute the dirty limit across the independant\ndevices a floating proportion is used, this will allocate a share of the total\nlimit proportional to the device\u0027s recent activity.\n\n3 is done by also scaling the dirty limit proportional to the current task\u0027s\nrecent dirty rate.\n\nThis patch:\n\nnfs: remove congestion_end().  It\u0027s redundant, clear_bdi_congested() already\nwakes the waiters.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\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: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "60ccd4ec4170c9487e3792322626acd160197bce",
      "tree": "b35353518bd7945a40e39edfa543ce80aaa3f8b4",
      "parents": [
        "80eb209def76d375677840800eb838abce1e6639"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 29 17:48:19 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:53 2007 -0400"
      },
      "message": "NFS: Remove nfs_begin_data_update/nfs_end_data_update\n\nThe lower level routines in fs/nfs/proc.c, fs/nfs/nfs3proc.c and\nfs/nfs/nfs4proc.c should already be dealing with the revalidation issues.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "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": "7b159fc18d417980f57aef64cab3417ee6af70f8",
      "tree": "880f31179a9836ad9cd63b91dd6d77b61b01017c",
      "parents": [
        "34901f70d119d88126e7390351b8c780646628e1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 25 14:09:54 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:23 2007 -0400"
      },
      "message": "NFS: Fall back to synchronous writes when a background write errors...\n\nThis helps prevent huge queues of background writes from building up\nwhenever the server runs out of disk or quota space, or if someone changes\nthe file access modes behind our backs.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "34901f70d119d88126e7390351b8c780646628e1",
      "tree": "e7dbbc44377adfcdbf4f09331428ad4c90fc3032",
      "parents": [
        "ed90ef51a33f572fa7d00c8b05f7457be727e74f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 25 14:09:54 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:21 2007 -0400"
      },
      "message": "NFS: Writeback optimisation\n\nSchedule writes using WB_SYNC_NONE first, then come back for a second pass\nusing WB_SYNC_ALL.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ed90ef51a33f572fa7d00c8b05f7457be727e74f",
      "tree": "4c41336dd045cd9a857454a5d8a595288d64d6e1",
      "parents": [
        "90e9a3f9b0a14198a8ae5a0a5c13ad30f0b8b40d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 20 13:13:28 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:18 2007 -0400"
      },
      "message": "NFS: Clean up NFS writeback flush code\n\nThe only user of nfs_sync_mapping_range() is nfs_getattr(), which uses it\nto flush out the entire inode without sending a commit. We therefore\nreplace nfs_sync_mapping_range with a more appropriate helper.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f758c885199611504ff681e3ba66c410b4e9e995",
      "tree": "8e68116aec5f0d99ce721d45f5ee299e52940284",
      "parents": [
        "9cccef95052c7169040c3577e17d4f6fa230cc28"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jul 22 19:27:32 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:13 2007 -0400"
      },
      "message": "NFS: Clean up nfs_writepages()\n\nJust call write_cache_pages directly instead of hacking the writeback\ncontrol structure in order to find out if we were called from writepages()\nor directly from the VM.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9cccef95052c7169040c3577e17d4f6fa230cc28",
      "tree": "56d0cfc610272f67bde429565d3b23b83d2df6af",
      "parents": [
        "94387fb1aa16ee853d00f959373132a181b0196b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jul 22 17:09:05 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:15:11 2007 -0400"
      },
      "message": "NFS: Clean up write code...\n\nThe addition of nfs_page_mkwrite means that We should no longer need to\ncreate requests inside nfs_writepage()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1b3b4a1a2deb7d3e5d66063bd76304d840c966b3",
      "tree": "dfa71fe35420aa18997cabff53afcf3a0db0825a",
      "parents": [
        "7d1cca72994c0e910ca443076dcfcfd473871dda"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 28 10:29:36 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 01 10:14:54 2007 -0400"
      },
      "message": "NFS: Fix a write request leak in nfs_invalidate_page()\n\nRyusuke Konishi says:\n\nThe recent truncate_complete_page() clears the dirty flag from a page\nbefore calling a_ops-\u003einvalidatepage(),\n^^^^^^\nstatic void\ntruncate_complete_page(struct address_space *mapping, struct page *page)\n{\n        ...\n        cancel_dirty_page(page, PAGE_CACHE_SIZE);  \u003c--- Inserted here at\nkernel 2.6.20\n\n        if (PagePrivate(page))\n                do_invalidatepage(page, 0);   ---\u003e will call\na_ops-\u003einvalidatepage()\n        ...\n}\n\nand this is disturbing nfs_wb_page_priority() from calling \nnfs_writepage_locked() that is expected to handle the pending\nrequest (\u003dnfs_page) associated with the page.\n\nint nfs_wb_page_priority(struct inode *inode, struct page *page, int how)\n{\n        ...\n        if (clear_page_dirty_for_io(page)) {\n                ret \u003d nfs_writepage_locked(page, \u0026wbc);\n                if (ret \u003c 0)\n                        goto out;\n        }\n        ...\n}\n\nSince truncate_complete_page() will get rid of the page after\na_ops-\u003einvalidatepage() returns, the request (\u003dnfs_page) associated\nwith the page becomes a garbage in nfs_inode-\u003enfs_page_tree.\n------------------------\n\nFix this by ensuring that nfs_wb_page_priority() recognises that it may\nalso need to clear out non-dirty pages that have an nfs_page associated\nwith them.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "587142f85f796cf0b823dd3080e815f02ff6b952",
      "tree": "891e9389d09916ff2c307dc5ada1c65303660c8d",
      "parents": [
        "4e56e082dd89266d320ccfbc7bd0102186a765ac"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 02 09:57:54 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:38 2007 -0400"
      },
      "message": "NFS: Replace NFS_I(inode)-\u003ereq_lock with inode-\u003ei_lock\n\nThere is no justification for keeping a special spinlock for the exclusive\nuse of the NFS writeback code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2aefa104313996d1a9582476cee53d1296c834bf",
      "tree": "858c9af6784949b714e728be52ffde7fba842811",
      "parents": [
        "5c36968343fcd013a3f7ae93f246c2e75596780b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 17 15:40:59 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:26 2007 -0400"
      },
      "message": "NFS: Remove the redundant \u0027dirty\u0027 and \u0027commit\u0027 lists from nfs_inode\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5c36968343fcd013a3f7ae93f246c2e75596780b",
      "tree": "96a3f2867e4631d84179952b1af170f3e48eae4b",
      "parents": [
        "9fd367f0f376ccfb2592eed9be0eece70429894f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 17 15:27:42 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:26 2007 -0400"
      },
      "message": "NFS cleanup: speed up nfs_scan_commit using radix tree tags\n\nAdd a tag for requests that are waiting for a COMMIT\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9fd367f0f376ccfb2592eed9be0eece70429894f",
      "tree": "9fa7b6570db80dd7025a5c33ebd7c82ca73698a7",
      "parents": [
        "c03b40246123b2ced79e2620d1d2c089bb12369a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 17 15:10:24 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:26 2007 -0400"
      },
      "message": "NFS cleanup: Rename NFS_PAGE_TAG_WRITEBACK to NFS_PAGE_TAG_LOCKED\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c03b40246123b2ced79e2620d1d2c089bb12369a",
      "tree": "59851fd137ee3ef4d7a3f6a5c6953011f45f8f96",
      "parents": [
        "a50f7951a31d3b976e829250853f89c9d2da32c0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Jun 17 13:26:38 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:26 2007 -0400"
      },
      "message": "NFS: Convert struct nfs_page to use krefs\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "88be9f990fe70f0f177ef44a16a477599e91f825",
      "tree": "d48ed0c934fc20dc3f7cacfc3b1eca3058246b65",
      "parents": [
        "de05a0cc2a2ae16eb8d8dbf88fe728ace45beb9a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 10:42:27 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:23 2007 -0400"
      },
      "message": "NFS: Replace vfsmount and dentry in nfs_open_context with struct path\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "44dd151d5c21234cc534c47d7382f5c28c3143cd",
      "tree": "eb84acd25a07a70a0418be7b94b3516865043f0f",
      "parents": [
        "d9df8d6b38228afab519094048aa2c082b0b2cf4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 11:58:03 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:23 2007 -0400"
      },
      "message": "NFS: Don\u0027t mark a written page as uptodate until it is on disk\n\nThe write may fail, so we should not mark the page as uptodate until we are\ncertain that the data has been accepted and written to disk by the server.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7fe7f8487ae742239dd8c66596e2311c30d057d1",
      "tree": "c506bd7dcacc9d5b25b3295bd1f327e534532c54",
      "parents": [
        "585a2858b970cb6e2e5ca4877eefd18b4dba8ed4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 20 10:18:27 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 24 10:44:20 2007 -0400"
      },
      "message": "NFS: Avoid a deadlock situation on write\n\nWhen processes are allowed to attempt to lock a non-contiguous range of nfs\nwrite requests, it is possible for generic_writepages to \u0027wrap round\u0027 the\naddress space, and call writepage() on a request that is already locked by\nthe same process.\n\nWe avoid the deadlock by checking if the page index is contiguous with the\nlist of nfs write requests that is already held in our\nnfs_pageio_descriptor prior to attempting to lock a new request.\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": "60945cb7c8377b727288275f21791914fe65311c",
      "tree": "eb84b18a1e590d3c56b3779b4e1d071b21fca2bc",
      "parents": [
        "550facd138d8f6b0ca683c1e894b5cd0f381cb63"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Thu May 10 22:55:08 2007 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 19:33:45 2007 -0400"
      },
      "message": "NFS: use zero_user_page\n\nUse zero_user_page() instead of the newly deprecated memclear_highpage_flush().\n\nSigned-off-by: Nate Diller \u003cnate.diller@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": "277866a0e3a4f97e859f7a621f5b4f5359c9526c",
      "tree": "20b244f5c0c7b6a692f0290f70f0fefae9d88d5a",
      "parents": [
        "79df3c19aa601d264719b04e3a788a7b852f4859"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue May 08 00:35:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:21 2007 -0700"
      },
      "message": "nfs: fix congestion control: use atomic_longs\n\nChange the atomic_t in struct nfs_server to atomic_long_t in anticipation\nof machines that can handle 8+TB of (4K) pages under writeback.\n\nHowever I suspect other things in NFS will start going *bang* by then.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e63340ae6b6205fef26b40a75673d1c9c0c8bb90",
      "tree": "8d3212705515edec73c3936bb9e23c71d34a7b41",
      "parents": [
        "04c9167f91e309c9c4ea982992aa08e83b2eb42e"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 08 00:28:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "header cleaning: don\u0027t include smp_lock.h when not used\n\nRemove includes of \u003clinux/smp_lock.h\u003e where it is not used/needed.\nSuggested by Al Viro.\n\nBuilds cleanly on x86_64, i386, alpha, ia64, powerpc, sparc,\nsparc64, and arm (all 59 defconfigs).\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ca52fec152282ef73e5e882b847b36b1febbb1c6",
      "tree": "8eb28f127a04b83af3abdfbf3d97c630e1668986",
      "parents": [
        "724c439c204b12a3537b71289fb4c0a42c3aa566"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 17 17:22:13 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:09 2007 -0700"
      },
      "message": "NFS: Use pgoff_t in structures and functions that pass page cache offsets\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "724c439c204b12a3537b71289fb4c0a42c3aa566",
      "tree": "d167ca161a3420c81759275b5ab3cc3611bd1db3",
      "parents": [
        "8d5658c949e6d89edc579a1f112aeee3bc232a8e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 17 17:22:13 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:08 2007 -0700"
      },
      "message": "NFS: Clean up nfs_sync_mapping_wait()\n\nIt has no business touching wbc-\u003epages_skipped.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8d5658c949e6d89edc579a1f112aeee3bc232a8e",
      "tree": "f206d3f6809eeb0ca23c1999cf79aa294968b113",
      "parents": [
        "c63c7b051395368573779c8309aa5c990dcf2f96"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 10 09:26:35 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:07 2007 -0700"
      },
      "message": "NFS: Fix a buffer overflow in the allocation of struct nfs_read/writedata\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c63c7b051395368573779c8309aa5c990dcf2f96",
      "tree": "db54090eef99349d15b95fcd8c2620a2403d8db8",
      "parents": [
        "8b09bee3083897e375bd0bf9d60f48daedfab3e0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 02 19:29:52 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:06 2007 -0700"
      },
      "message": "NFS: Fix a race when doing NFS write coalescing\n\nCurrently we do write coalescing in a very inefficient manner: one pass in\ngeneric_writepages() in order to lock the pages for writing, then one pass\nin nfs_flush_mapping() and/or nfs_sync_mapping_wait() in order to gather\nthe locked pages for coalescing into RPC requests of size \"wsize\".\n\nIn fact, it turns out there is actually a deadlock possible here since we\nonly start I/O on the second pass. If the user signals the process while\nwe\u0027re in nfs_sync_mapping_wait(), for instance, then we may exit before\nstarting I/O on all the requests that have been queued up.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bcb71bba7e64f0442d0ca339d7d3117a7060589f",
      "tree": "072e9a28395eee87e539a48553b20fa9cb768e94",
      "parents": [
        "d8a5ad75cc4d577987964e37a4c43b1c648c201e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 02 18:48:28 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:04 2007 -0700"
      },
      "message": "NFS: Another cleanup of the read/write request coalescing code\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d8a5ad75cc4d577987964e37a4c43b1c648c201e",
      "tree": "91604bf17f7a81cc60a214426c7ddca89bf4faee",
      "parents": [
        "91e59c368c6ba5eed0369a085c42c9f270b97aa8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 02 18:48:28 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:04 2007 -0700"
      },
      "message": "NFS: Cleanup the coalescing code\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "91e59c368c6ba5eed0369a085c42c9f270b97aa8",
      "tree": "172975fb2d21695e1d4d9b4146ac033bcfee872b",
      "parents": [
        "1a0ba9ae485c5fd17d0bff2f14d9dd75b8985593"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 06 13:12:46 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:03 2007 -0700"
      },
      "message": "NFS: Don\u0027t wait for congestion in nfs_update_request()\n\nIt is redundant, and will interfere with the call to\nbalance_dirty_pages_ratelimited_nr in generic_file_write().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d585158b608248a6ba8ae75e234672e048d3fde9",
      "tree": "2e3e94f5887346eabc61ac0063b849461f98bd1a",
      "parents": [
        "dc87c3985e9b442c60994308a96f887579addc39"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:02 2007 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:02 2007 -0700"
      },
      "message": "NFS: Fix nfs_set_page_dirty()\n\nBe more careful about testing page-\u003emapping.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2b82f190c81bf1524447c021df4e9ce8ef379bd5",
      "tree": "3f4ebb8c0379715fe38897474856bdbab5750250",
      "parents": [
        "612c9384fd0486686699f7d49b774f0c7a79c511"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 20 16:12:50 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Apr 20 22:56:30 2007 -0700"
      },
      "message": "NFS: Fix race in nfs_set_page_dirty\n\nProtect nfs_set_page_dirty() against races with nfs_inode_add_request.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "612c9384fd0486686699f7d49b774f0c7a79c511",
      "tree": "443192b69689488f0be8ca72f3e8f73db0a53988",
      "parents": [
        "6d677e3504cd173b2ff7fc393ee4241b3c0f92a6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 20 16:12:45 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Apr 20 22:56:29 2007 -0700"
      },
      "message": "NFS: Fix the \u0027desynchronized value of nfs_i.ncommit\u0027 error\n\nRedirtying a request that is already marked for commit will screw up the\naccounting for NR_UNSTABLE_NFS as well as nfs_i.ncommit.\nEnsure that all requests on the commit queue are labelled with the\nPG_NEED_COMMIT flag, and avoid moving them onto the dirty list inside\nnfs_page_mark_flush().\n\nAlso inline nfs_mark_request_dirty() into nfs_page_mark_flush() for\natomicity reasons. Avoid dropping the spinlock until we\u0027re done marking the\nrequest in the radix tree and have added it to the -\u003edirty list.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6d677e3504cd173b2ff7fc393ee4241b3c0f92a6",
      "tree": "002ca651de6b2e858072e8060ce4a9943263a5e8",
      "parents": [
        "8e821cad12e80cd1a8a3fbadf91f62f17f32549e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 20 16:12:40 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Apr 20 22:56:29 2007 -0700"
      },
      "message": "NFS: Don\u0027t clear PG_writeback until after we\u0027ve processed unstable writes\n\nEnsure that we don\u0027t release the PG_writeback lock until after the page has\neither been redirtied, or queued on the nfs_inode \u0027commit\u0027 list.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8e821cad12e80cd1a8a3fbadf91f62f17f32549e",
      "tree": "7a3755731152198410008921b3a2b8e7015e5f0e",
      "parents": [
        "7ab77e03c1f665d5dee78f1248fffd11fa0c5154"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 20 16:12:34 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Apr 20 22:56:29 2007 -0700"
      },
      "message": "NFS: clean up the unstable write code\n\nGet rid of the inlined #ifdefs.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eb4cac10d9f7b006da842e2d37414d13e1333781",
      "tree": "8dbb82c4b1b4ef0c499711adbe0f4ff6efe4f5e2",
      "parents": [
        "0492c371372ef5eac3a952509391dea231b0de89"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Apr 15 16:21:49 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Apr 15 16:48:11 2007 -0700"
      },
      "message": "NFS: Fix a list corruption problem\n\nWe must remove the request from whatever list it is currently on before we\ncan add it to the dirty list.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a6d41b32a17ca902ef50fdfa170d7f23264bad5",
      "tree": "1a380f2e7fe7858da3dfb53ec85e3d4b100c948f",
      "parents": [
        "60fa3f769f7651a60125a0f44e3ffe3246d7cf39"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 14 19:10:12 2007 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Apr 14 21:46:48 2007 -0700"
      },
      "message": "NFS: Ensure PG_writeback is cleared when writeback fails\n\nIf the writebacks are cancelled via nfs_cancel_dirty_list, or due to the\nmemory allocation failing in nfs_flush_one/nfs_flush_multi, then we must\nensure that the PG_writeback flag is cleared.\n\nAlso ensure that we actually own the PG_writeback flag whenever we\nschedule a new writeback by making nfs_set_page_writeback() return the\nvalue of test_set_page_writeback().\nThe PG_writeback page flag ends up replacing the functionality of the\nPG_FLUSHING nfs_page flag, so we rip that out too.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "89a09141df6ac1c3821fbe44ca8384eb37692965",
      "tree": "ccb21055fca86ac2657b3262ac37eb3e5c44bea0",
      "parents": [
        "b74a2f0913694556a027795d2954d30523fac4c5"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Mar 16 13:38:26 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Mar 16 19:25:05 2007 -0700"
      },
      "message": "[PATCH] nfs: fix congestion control\n\nThe current NFS client congestion logic is severly broken, it marks the\nbacking device congested during each nfs_writepages() call but doesn\u0027t\nmirror this in nfs_writepage() which makes for deadlocks.  Also it\nimplements its own waitqueue.\n\nReplace this by a more regular congestion implementation that puts a cap on\nthe number of active writeback pages and uses the bdi congestion waitqueue.\n\nAlso always use an interruptible wait since it makes sense to be able to\nSIGKILL the process even for mounts without \u0027intr\u0027.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a301b777714087ea1d63dbec0173a13d416cd7a9",
      "tree": "ccf5e747d0411c7af15279c66389ad4e1155ef04",
      "parents": [
        "b0c4fddca2bc3967381b728732a8850de35e1b20"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 06 11:07:15 2007 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 12 22:40:38 2007 -0800"
      },
      "message": "NFS: Don\u0027t use ClearPageUptodate() when writeback fails\n\nClearPageUptodate() will just cause races here. What we really want to do\nis to invalidate the page cache.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a3f565b1e530a756472401835107d08fd291f242",
      "tree": "84a15e4810f63689e3f85bbbc6497ee41934705e",
      "parents": [
        "4dc2eaecd4cf0687727e418540bccf956a62ebcf"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jan 31 12:14:01 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:09 2007 -0800"
      },
      "message": "NFS: fix print format for tk_pid\n\nThe tk_pid field is an unsigned short.  The proper print format specifier for\nthat type is %5u, not %4d.\n\nAlso clean up some miscellaneous print formatting nits.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7c85d9007d05436e71d2b805b96c1e36a8193bd4",
      "tree": "916565d0ce3905073cd877611580fabf23ea51fe",
      "parents": [
        "d30c8348a4ba292a09addd122de2f3189c21a7ff"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 13 15:23:48 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:07 2007 -0800"
      },
      "message": "NFS: Fixup some outdated comments...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d30c8348a4ba292a09addd122de2f3189c21a7ff",
      "tree": "4aa5bf398902741643c8e6e88d5676ca02b5dfa2",
      "parents": [
        "f40313ac39fedca519c36fdc454acf2632e641da"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 13 15:23:47 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:07 2007 -0800"
      },
      "message": "NFS: nfs_writepages() cleanup\n\nStrip out the call to nfs_commit_inode(), and allow that to be done by\nnfs_write_inode().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f40313ac39fedca519c36fdc454acf2632e641da",
      "tree": "355656191392ce44cb1bdb4d415134fd65b2b196",
      "parents": [
        "02241bc47e8961768de83d855accd0dcad1df045"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jan 13 02:28:08 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:07 2007 -0800"
      },
      "message": "NFS: Micro-optimisation for nfs_wb_page()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "02241bc47e8961768de83d855accd0dcad1df045",
      "tree": "c6d3c4894c4fe2d73816b8c123abbd365072369d",
      "parents": [
        "8e0969f0451eaf7cf32f2ec3946196d8d0b1cb2c"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jan 13 02:28:07 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:06 2007 -0800"
      },
      "message": "NFS: Ensure that -\u003ewritepage() uses flush_stable() when reclaiming pages\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "01cce933d8b524d9312f5098c70fa1b6ac190572",
      "tree": "7601e02e874a6eb44faca3cdf06664c7377ac687",
      "parents": [
        "2485822d51f8b338d289abe00eb7ce5249794a08"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:41 2006 -0800"
      },
      "message": "[PATCH] nfs: change uses of f_{dentry,vfsmnt} to use f_path\n\nChange all the uses of f_{dentry,vfsmnt} to f_path.{dentry,mnt} in the nfs\nclient code.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "21b4e736922f546e0f1aa7b9d6c442f309a2444a",
      "tree": "e1be8645297f8ebe87445251743ebcc52081a20d",
      "parents": [
        "34161db6b14d984fb9b06c735b7b42f8803f6851",
        "68380b581383c028830f79ec2670f4a193854aa6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 07 16:35:17 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 07 16:35:17 2006 -0500"
      },
      "message": "Merge branch \u0027master\u0027 of /home/trondmy/kernel/linux-2.6/ into merge_linus\n"
    },
    {
      "commit": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e6b4f8da3a88457148038bc952043e99a7fdba64",
      "tree": "858c2a0e04b442395e7ecd0f60c8d2a3304b83e1",
      "parents": [
        "55acbda0965ca0a29b0ca276e7d17a55edc11d1b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:14 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:23 2006 -0800"
      },
      "message": "[PATCH] slab: remove SLAB_NOFS\n\nSLAB_NOFS is an alias of GFP_NOFS.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a18030445fd4dd20e2248007b5d1cf0b5d89c69d",
      "tree": "0b41749bcfc185a6adccd124b53a2037f9fb1f26",
      "parents": [
        "9cf85e0a243b56f4ef8439a1e6430307fd9dcda6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:45:19 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:42 2006 -0500"
      },
      "message": "NFS: Clean up calls to mark_inode_dirty() part 2\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3925675cb37cc9c3fd1d3f56ce0fa729f995f863",
      "tree": "9e4ab16c91ab7d679246ade359a00803665ba391",
      "parents": [
        "e507d9ebbb2d5db5948a6fb3c33f015d60708d19"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:36:09 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:41 2006 -0500"
      },
      "message": "NFS: Fix up the dirty page accounting\n\nThere is now no reason to account for the dirty pages in the NFS code,\nsince the VM code will now do it for us via __set_page_dirty_nobuffers(),\nand set_page_writeback().\n\nWe still need to keep the accounting of stable writes, though.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e507d9ebbb2d5db5948a6fb3c33f015d60708d19",
      "tree": "193bffc35de3d7592e54f2124c49989e78543910",
      "parents": [
        "fa8d8c5b77a2dc467b5365a5651710161b84f16d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:42 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:40 2006 -0500"
      },
      "message": "NFS: Ensure the inode is marked as dirty if we break out of nfs_wb_all()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "61822ab5e3ed09fcfc49e37227b655202adf6130",
      "tree": "224a470689463469672ed38b0da3d9f47bc8a245",
      "parents": [
        "e261f51f25b98c213e0b3d7f2109b117d714f69d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:42 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:40 2006 -0500"
      },
      "message": "NFS: Ensure we only call set_page_writeback() under the page lock\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e261f51f25b98c213e0b3d7f2109b117d714f69d",
      "tree": "92dfd162f8721f99de74c8227a7f0655143eed9a",
      "parents": [
        "4d770ccf4257b23a7ca2a85de1b1c22657b581d8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:41 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:39 2006 -0500"
      },
      "message": "NFS: Make nfs_updatepage() mark the page as dirty.\n\nThis will ensure that we can call set_page_writeback() from within\nnfs_writepage(), which is always called with the page lock set.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4d770ccf4257b23a7ca2a85de1b1c22657b581d8",
      "tree": "6d4002f6a9497e3eb3dd5dee6b27e9c5dc28e46e",
      "parents": [
        "1a54533ec8d92a5edae97ec6ae10023ee71c4b46"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:41 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:39 2006 -0500"
      },
      "message": "NFS: Ensure that nfs_wb_page() calls writepage when necessary.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1a54533ec8d92a5edae97ec6ae10023ee71c4b46",
      "tree": "a09db8af7974f13baa8d906149b77bf7db58bf1f",
      "parents": [
        "200baa2112012dd8a13db9da3ee6885403f9c013"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:40 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:38 2006 -0500"
      },
      "message": "NFS: Add nfs_set_page_dirty()\n\nWe will want to allow nfs_writepage() to distinguish between pages that\nhave been marked as dirty by the VM, and those that have been marked as\ndirty by nfs_updatepage().\nIn the former case, the entire page will want to be written out, and so any\nrequests that were pending need to be flushed out first.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "200baa2112012dd8a13db9da3ee6885403f9c013",
      "tree": "261f9c2b85927c2dfaaecfb7ab808d353bd84da4",
      "parents": [
        "e21195a740533348e77efa8a2e2cf03bb4092b2b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:40 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:38 2006 -0500"
      },
      "message": "NFS: Remove nfs_writepage_sync()\n\nMaintaining two parallel ways of doing synchronous writes is rather\npointless. This patch gets rid of the legacy nfs_writepage_sync(), and\nreplaces it with the faster asynchronous writes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e21195a740533348e77efa8a2e2cf03bb4092b2b",
      "tree": "c4d10d076a353eac0a73a1f1a0079782106c4dca",
      "parents": [
        "87a4ce16082e92b4b6d27596a517b302f3692650"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:39 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:37 2006 -0500"
      },
      "message": "NFS: More cleanups of fs/nfs/write.c\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "87a4ce16082e92b4b6d27596a517b302f3692650",
      "tree": "5cc37898459d69135b09ed9485d54745d15922ba",
      "parents": [
        "49a70f278658894d2899824cd4037095fb6711fe"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:39 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:37 2006 -0500"
      },
      "message": "NFS: Remove call to igrab() from nfs_writepage()\n\nWe always ensure that the nfs_open_context holds a reference to the dentry,\nso the test in nfs_writepage() for whether or not the inode is referenced\nis redundant.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "49a70f278658894d2899824cd4037095fb6711fe",
      "tree": "8fc0e55be04a421ee9091a989c30807d891d7930",
      "parents": [
        "277459d2e2cd40594967757e8fd016c4c7016614"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:38 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:36 2006 -0500"
      },
      "message": "NFS: Cleanup: add common helper nfs_page_length()\n\nClean up a lot of ad-hoc page length calculations in fs/nfs/write.c\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "277459d2e2cd40594967757e8fd016c4c7016614",
      "tree": "a552d90847fa64f7326f5856640859c8e41df862",
      "parents": [
        "1c75950b9a2254ef08f986e00ad20266ae9ba7f1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:35 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:36 2006 -0500"
      },
      "message": "NFS: Store pointer to the nfs_page in page-\u003eprivate\n\nThis will allow fast lookup of the nfs_page from the struct page instead of\nhaving to search the radix tree.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1c75950b9a2254ef08f986e00ad20266ae9ba7f1",
      "tree": "cc1a242601b27b8128c8c385f1b858a7b863f155",
      "parents": [
        "3f442547b76bf9fb70d7aecc41cf1980459253c9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 09 16:18:38 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:35 2006 -0500"
      },
      "message": "NFS: cleanup of nfs_sync_inode_wait()\n\nAllow callers to directly pass it a struct writeback_control.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3f442547b76bf9fb70d7aecc41cf1980459253c9",
      "tree": "aab3982d110b01e028ce477cb02873ddf1abad36",
      "parents": [
        "28c6925fce3927a9fe3c5b44af5fb266680fdcea"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Sep 17 14:46:44 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:35 2006 -0500"
      },
      "message": "NFS: Clean up nfs_scan_dirty()\n\nPass down struct writeback control.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "28c6925fce3927a9fe3c5b44af5fb266680fdcea",
      "tree": "89692ec971c9703a0c437c40816b1f84ab2e3a74",
      "parents": [
        "c8541ecdd5692bcfbcb5305cab9a873288d29175"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Sep 16 13:04:50 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:34 2006 -0500"
      },
      "message": "NFS: Clean up nfs_flush_inode()\n\nMake it take a struct writepages argument, and rename to\nnfs_flush_mapping().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a99b71c9c43499bf2312c64f5c1d367aaf559dc4",
      "tree": "a9fa03a8dcee03c6f05bd286be368396176b13db",
      "parents": [
        "6d5fcb5a52bfd00eab3ba2c7ca890823388436ae"
      ],
      "author": {
        "name": "Frank Filz",
        "email": "ffilzlnx@us.ibm.com",
        "time": "Tue Oct 17 10:24:36 2006 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:30 2006 -0500"
      },
      "message": "NFS: Remove use of the Big Kernel Lock around calls to rpc_execute.\n\nRemove use of the Big Kernel Lock around calls to rpc_execute.\n\nSigned-off-by: Frank Filz \u003cffilz@us.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e8e058e830f46a76f837522e5e2df46d4303111f",
      "tree": "3d6b6e1efcab646902caf4322c277c82577a3a60",
      "parents": [
        "cf1308ff7829017dab0dbcc817c63dc9c212923e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Nov 15 17:31:56 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:28 2006 -0500"
      },
      "message": "NFS: Fix nfs_sync_inode_wait(FLUSH_INVALIDATE)\n\nCurrently nfs_sync_inode_wait() will fail to loop correctly when we call\nnfs_sync_inode_wait with the FLUSH_INVALIDATE argument.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8aca67f0ae2d8811165c22326825a645cc8e1b48",
      "tree": "19e82f4bc7b4f865a9dcf4744e7c224ea517ba10",
      "parents": [
        "e6b3c4db6fbcd0d33720696f37790d6b8be12313"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 13 16:23:44 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:26 2006 -0500"
      },
      "message": "SUNRPC: Fix a potential race in rpc_wake_up_task()\n\nUse RCU to ensure that we can safely call rpc_finish_wakeup after we\u0027ve\ncalled __rpc_do_wake_up_task. If not, there is a theoretical race, in which\nthe rpc_task finishes executing, and gets freed first.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "b6dff26a08189932eeb0fa4261e09e733b0fc540"
}
