)]}'
{
  "log": [
    {
      "commit": "0522f6adedd2736cbca3c0e16ca51df668993eee",
      "tree": "36ff5ee208fa97cf86b717ed0eb2e9ca4251315d",
      "parents": [
        "c5efa5fc91f1f6d1d47e65f39e7ec6d1157c777d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:42:24 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:43:53 2010 -0400"
      },
      "message": "NFS: Fix another nfs_wb_page() deadlock\n\nJ.R. Okajima reports that the call to sync_inode() in nfs_wb_page() can\ndeadlock with other writeback flush calls. It boils down to the fact\nthat we cannot ever call writeback_single_inode() while holding a page\nlock (even if we do set nr_to_write to zero) since another process may\nalready be waiting in the call to do_writepages(), and so will deny us\nthe I_SYNC lock.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c5efa5fc91f1f6d1d47e65f39e7ec6d1157c777d",
      "tree": "614e6098c92ba9d240ec2b8ea4d9d79ff9334077",
      "parents": [
        "59844a9bd73e084b0ffefc0e13226098e28c71ad"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:42:11 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 26 08:43:52 2010 -0400"
      },
      "message": "NFS: Ensure that we mark the inode as dirty if we exit early from commit\n\nIf we exit from nfs_commit_inode() without ensuring that the COMMIT rpc\ncall has been completed, we must re-mark the inode as dirty. Otherwise,\nfuture calls to sync_inode() with the WB_SYNC_ALL flag set will fail to\nensure that the data is on the disk.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ba8b06e67ed7a560b0e7c80091bcadda4f4727a5",
      "tree": "cd737661ffb38a614697b1e055d68e7b41a7e982",
      "parents": [
        "71d0a6112a363e703e383ae5b12c492485c39701"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 27 18:33:54 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 27 18:33:54 2010 -0400"
      },
      "message": "NFS: Ensure that nfs_wb_page() waits for Pg_writeback to clear\n\nNeil Brown reports that he is seeing the BUG_ON(ret \u003d\u003d 0) trigger in\nnfs_page_async_flush. According to the trace in\n     https://bugzilla.novell.com/show_bug.cgi?id\u003d599628\nthe problem appears to be due to nfs_wb_page() not waiting for the\nPG_writeback flag to clear.\n\nThere is a ditto problem in nfs_wb_page_cancel()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "71d0a6112a363e703e383ae5b12c492485c39701",
      "tree": "fc22ab92565fb61a37a77f829a82fa9b8ea6497f",
      "parents": [
        "cdd29ecfcb9554132cd94b82ae8b69ba37adb3b5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 22 15:35:57 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 22 15:35:57 2010 -0400"
      },
      "message": "NFS: Fix an unstable write data integrity race\n\nCommit 2c61be0a9478258f77b66208a0c4b1f5f8161c3c (NFS: Ensure that the WRITE\nand COMMIT RPC calls are always uninterruptible) exposed a race on file\nclose. In order to ensure correct close-to-open behaviour, we want to wait\nfor all outstanding background commit operations to complete.\n\nThis patch adds an inode flag that indicates if a commit operation is under\nway, and provides a mechanism to allow -\u003ewrite_inode() to wait for its\ncompletion if this is a data integrity flush.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2c61be0a9478258f77b66208a0c4b1f5f8161c3c",
      "tree": "84654744fc5f43f1b21f8fa484aba0a15787d5df",
      "parents": [
        "a6305ddb080fb483ca41ca56cacb6f96089f0c8e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:54:50 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:54:50 2010 -0400"
      },
      "message": "NFS: Ensure that the WRITE and COMMIT RPC calls are always uninterruptible\n\nWe always want to ensure that WRITE and COMMIT completes, whether or not\nthe user presses ^C. Do this by making the call asynchronous, and allowing\nthe user to do an interruptible wait for rpc_task completion.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a6305ddb080fb483ca41ca56cacb6f96089f0c8e",
      "tree": "82c41752da42726ad1d7ed27203acbf06892dbaa",
      "parents": [
        "b80c3cb628f0ebc241b02e38dd028969fb8026a2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:07:08 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:08:17 2010 -0400"
      },
      "message": "NFS: Fix a race with the new commit code\n\nThis patch fixes a race which occurs due to the fact that we release the\nPG_writeback flag while still holding the nfs_page locked.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b80c3cb628f0ebc241b02e38dd028969fb8026a2",
      "tree": "12b0b9a7d8c4dbac5ab17b5cef9f3d5e32df16b1",
      "parents": [
        "1544fa0f7a46241582abc48f07b74f3d846379e4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:07:07 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:08:17 2010 -0400"
      },
      "message": "NFS: Ensure that writeback_single_inode() calls write_inode() when syncing\n\nSince writeback_single_inode() checks the inode-\u003ei_state flags _before_ it\nflushes out the data, we need to ensure that the I_DIRTY_DATASYNC flag is\nalready set. Otherwise we risk not seeing a call to write_inode(), which\nagain means that we break fsync() et al...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7f2f12d963e7c33a93bfb0b22f0178eb1e6a4196",
      "tree": "cfc2694fd38f40bc22d22c3ef228f871ed827fe2",
      "parents": [
        "acdc53b2146c7ee67feb1f02f7bc3020126514b8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:28 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:55 2010 -0500"
      },
      "message": "NFS: Simplify nfs_wb_page()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "acdc53b2146c7ee67feb1f02f7bc3020126514b8",
      "tree": "3d8b087e8526c4caed87229fe12c2a2b261dd0a5",
      "parents": [
        "c988950eb6dd6f8e6d98503ca094622729e9aa13"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:26 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:55 2010 -0500"
      },
      "message": "NFS: Replace __nfs_write_mapping with sync_inode()\n\nNow that we have correct COMMIT semantics in writeback_single_inode, we can\nreduce and simplify nfs_wb_all(). Also replace nfs_wb_nocommit() with a\ncall to filemap_write_and_wait(), which doesn\u0027t need to hold the\ninode-\u003ei_mutex.\n\nWith that done, we can eliminate nfs_write_mapping() altogether.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c988950eb6dd6f8e6d98503ca094622729e9aa13",
      "tree": "5a5b34050d4f20909e7378108aa131e615ef52cd",
      "parents": [
        "2928db1ffeacc9717c2d5c230d450bcc377b3ae9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:21 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:55 2010 -0500"
      },
      "message": "NFS: Simplify nfs_wb_page_cancel()\n\nIn all cases we should be able to just remove the request and call\ncancel_dirty_page().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2928db1ffeacc9717c2d5c230d450bcc377b3ae9",
      "tree": "c0dea3d26d45c3ea1a3602984ed4738b93373f67",
      "parents": [
        "5bad5abec4058c5214bfc72cec418348d6747977"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:18 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:54 2010 -0500"
      },
      "message": "NFS: Ensure inode is always marked I_DIRTY_DATASYNC, if it has unstable pages\n\nSince nfs_scan_list() doesn\u0027t wait for locked pages, we have a race in\nwhich it is possible to end up with an inode that needs to send a COMMIT,\nbut which does not have the I_DIRTY_DATASYNC flag set.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5bad5abec4058c5214bfc72cec418348d6747977",
      "tree": "dab4b4916a3709632da7d3f43df63a5b8601414c",
      "parents": [
        "420e3646bb7d93a571734034249fbb1ae1a7a5c7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:02:24 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:54 2010 -0500"
      },
      "message": "NFS: Run COMMIT as an asynchronous RPC call when wbc-\u003efor_background is set\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "420e3646bb7d93a571734034249fbb1ae1a7a5c7",
      "tree": "dc3328f6df5769e275253c23d862cb0a16ab50f1",
      "parents": [
        "ff778d02bf867e1733a09b34ad6dbb723b024814"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:00:02 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:54 2010 -0500"
      },
      "message": "NFS: Reduce the number of unnecessary COMMIT calls\n\nIf the caller is doing a non-blocking flush, and there are still writebacks\npending on the wire, we can usually defer the COMMIT call until those\nwrites are done.\n\nAlso ensure that we honour the wbc-\u003enonblocking flag.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ff778d02bf867e1733a09b34ad6dbb723b024814",
      "tree": "d22e33628b93f31c08089a3bf0ec4cc00a409b7a",
      "parents": [
        "8fc795f703c5138e1a8bfb88c69f52632031aa6a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 16:53:39 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:54 2010 -0500"
      },
      "message": "NFS: Add a count of the number of unstable writes carried by an inode\n\nIn order to know when we should do opportunistic commits of the unstable\nwrites, when the VM is doing a background flush, we add a field to count\nthe number of unstable writes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8fc795f703c5138e1a8bfb88c69f52632031aa6a",
      "tree": "aed975562fe5557ff552bc0fe45b5d2b6f5e56c9",
      "parents": [
        "9467c4fdd66f6810cecef0f1173330f3c6e67d45"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 16:46:56 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:53 2010 -0500"
      },
      "message": "NFS: Cleanup - move nfs_write_inode() into fs/nfs/write.c\n\nThe sole purpose of nfs_write_inode is to commit unstable writes, so\nmove it into fs/nfs/write.c, and make nfs_commit_inode static.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7549ad5f9b6eda49bbac4b14c5b8f37bf464f922",
      "tree": "ece4aaa45462bae3e3fa0a831de31cff60e0dd90",
      "parents": [
        "2c1740098c708b465e87637b237feb2fd98f129a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 08 09:32:34 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 09 14:29:21 2010 -0500"
      },
      "message": "NFS: Remove a redundant check for PageFsCache in nfs_migrate_page()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "0aa05887af728b058af91197f0ae9b3ae63dd74a",
      "tree": "81175366e25e4ccbcf79969bfada1c29e612369a",
      "parents": [
        "82be934a59ff891cac598727e5a862ba2b9d1fac"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Tue Jan 26 15:42:03 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 26 15:42:03 2010 -0500"
      },
      "message": "NFS: Make nfs_commitdata_release static\n\nThe symbol nfs_commitdata_release is only used locally\nin this file. Make it static to prevent the following sparse warning:\n\nwarning: symbol \u0027nfs_commitdata_release\u0027 was not declared. Should it be static?\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\n"
    },
    {
      "commit": "c9edda7140ec6a22accf7f2f86da362dfbfd41fc",
      "tree": "c69acf2c9b114086fef8986d54772fa1e08ab044",
      "parents": [
        "92dcffb916d309aa01778bf8963a6932e4014d07"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 26 15:41:34 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 26 15:41:34 2010 -0500"
      },
      "message": "NFS: Fix a reference leak in nfs_wb_cancel_page()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\n"
    },
    {
      "commit": "52c9948b1fd80381ba5a9a87dcc4fbe3cf4979b8",
      "tree": "7bca6a20560f428442f18450df0948774f982df0",
      "parents": [
        "f40542532e96dda5506eb76badea322f2ae4731c",
        "190f38e5cedc910940b1da9015f00458c18f97b4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Dec 13 13:56:27 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Dec 13 13:56:27 2009 -0500"
      },
      "message": "Merge branch \u0027nfs-for-2.6.33\u0027\n"
    },
    {
      "commit": "190f38e5cedc910940b1da9015f00458c18f97b4",
      "tree": "3b13c1cd5c536b6187b3196610b97e70a0ba0372",
      "parents": [
        "053e324f67b9921fe7de0c4cbc720d29cb4bf207"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 10 09:05:55 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 10 09:05:55 2009 -0500"
      },
      "message": "NFS: Fix nfs_migrate_page()\n\nThe call to migrate_page() will cause the page-\u003eprivate field to be\ncleared.\nAlso fix up the locking around the page-\u003eprivate transfer, so that we ensure\nthat calls to nfs_page_find_request() don\u0027t end up racing.\n\nFinally, fix up a double free bug: nfs_unlock_request() already calls\nnfs_release_request() for us...\n\nReported-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nTested-by: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6b2f3d1f769be5779b479c37800229d9a4809fc3",
      "tree": "046ef6736ec6c25ab1c68741ba715d13645af336",
      "parents": [
        "59bc055211b8d266ab6089158058bf8268e02006"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Oct 27 11:05:28 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Dec 10 15:02:50 2009 +0100"
      },
      "message": "vfs: Implement proper O_SYNC semantics\n\nWhile Linux provided an O_SYNC flag basically since day 1, it took until\nLinux 2.4.0-test12pre2 to actually get it implemented for filesystems,\nsince that day we had generic_osync_around with only minor changes and the\ngreat \"For now, when the user asks for O_SYNC, we\u0027ll actually give\nO_DSYNC\" comment.  This patch intends to actually give us real O_SYNC\nsemantics in addition to the O_DSYNC semantics.  After Jan\u0027s O_SYNC\npatches which are required before this patch it\u0027s actually surprisingly\nsimple, we just need to figure out when to set the datasync flag to\nvfs_fsync_range and when not.\n\nThis patch renames the existing O_SYNC flag to O_DSYNC while keeping it\u0027s\nnumerical value to keep binary compatibility, and adds a new real O_SYNC\nflag.  To guarantee backwards compatiblity it is defined as expanding to\nboth the O_DSYNC and the new additional binary flag (__O_SYNC) to make\nsure we are backwards-compatible when compiled against the new headers.\n\nThis also means that all places that don\u0027t care about the differences can\njust check O_DSYNC and get the right behaviour for O_SYNC, too - only\nplaces that actuall care need to check __O_SYNC in addition.  Drivers and\nnetwork filesystems have been updated in a fail safe way to always do the\nfull sync magic if O_DSYNC is set.  The few places setting O_SYNC for\nlower layers are kept that way for now to stay failsafe.\n\nWe enforce that O_DSYNC is set when __O_SYNC is set early in the open path\nto make sure we always get these sane options.\n\nNote that parisc really screwed up their headers as they already define a\nO_DSYNC that has always been a no-op.  We try to repair it by using it for\nthe new O_DSYNC and redefinining O_SYNC to send both the traditional\nO_SYNC numerical value _and_ the O_DSYNC one.\n\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nAcked-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "0110ee152b69f8cbde19d8bc1dd59e197e419d76",
      "tree": "f7a70abaaa97f03e358b2fb07103f5af4e98d5a5",
      "parents": [
        "9dfdf404c99347e2e224e25f8626e7b6399a05cd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Dec 07 09:00:24 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Dec 07 09:00:24 2009 -0500"
      },
      "message": "NFS: Fix up the declaration of nfs4_restart_rpc when NFSv4 not configured\n\nAlso rename it: it is used in generic code, and so should not have a \u0027nfs4\u0027\nprefix.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d61e612a728fb9bf848c4383f8f6645e822d5b57",
      "tree": "b4024efc797fa3b992b042f484574c1d43893a61",
      "parents": [
        "f26468fb9384e73fb357d2e84d3e9c88c7d1129d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 05 19:32:19 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Dec 05 19:32:19 2009 -0500"
      },
      "message": "NFSv41: Clean up slot table management\n\nWe no longer need to maintain a distinction between nfs41_sequence_done and\nnfs41_sequence_free_slot.\n\nThis fixes a number of slot table leakages in the NFSv4.1 code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e608e79f1bf4b967afcf57777e63b5f0939b00e8",
      "tree": "d649b5714435b7d2d4edd5779fa22122d61ee0c5",
      "parents": [
        "1d9ddde94aed01c4618cf6f70883cc511c3b2b62"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Dec 04 15:55:29 2009 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Dec 04 15:55:29 2009 -0500"
      },
      "message": "nfs41: call free slot from nfs4_restart_rpc\n\nnfs41_sequence_free_slot can be called multiple times on SEQUENCE operation\nerrors.\nNo reason to inline nfs4_restart_rpc\n\nReported-by: Trond Myklebust \u003ctrond.myklebust@netapp.com\u003e\n\nnfs_writeback_done and nfs_readpage_retry call nfs4_restart_rpc outside the\nerror handler, and the slot is not freed prior to restarting in the rpc_prepare\nstate during session reset.\n\nFix this by moving the call to nfs41_sequence_free_slot from the error\npath of nfs41_sequence_done into nfs4_restart_rpc, and by removing the test\nfor NFS4CLNT_SESSION_SETUP.\nAlways free slot and goto the rpc prepare state on async errors.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b17621fed6aa039387e35f9b4d34d98f213e5673",
      "tree": "bc755d1aa204518600a6d82dd51d970c685dc68c",
      "parents": [
        "951c30d135390a108f102b0f6e3cfa6241f2a1aa"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@gmail.com",
        "time": "Thu Dec 03 13:54:25 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 13:54:25 2009 +0100"
      },
      "message": "writeback: introduce wbc.for_background\n\nIt will lower the flush priority for NFS, and maybe more in future.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1fe06ad89255c211fe100d7f690d10b161398df8",
      "tree": "826d32bf081a6729aeaa08fe42422e49a9b86f6f",
      "parents": [
        "2c96ce9f2084c1e04d02883e622f74a537a63aea"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Sep 15 15:10:20 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 16 15:16:18 2009 +0200"
      },
      "message": "writeback: get rid of wbc-\u003efor_writepages\n\nIt\u0027s only set, it\u0027s never checked. Kill it.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6a396f67d2442e30150ffb5e1142dbb2f2181d3f",
      "tree": "2ea4f3ab1d3766204a55ec26600b848ed3a7e8aa",
      "parents": [
        "f884dcaead5f17bf586ac5fe6a3ad07b5203616a",
        "cccddf4f5580131c9b963900e1d3400655e633cc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 19 18:21:52 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 19 18:21:52 2009 -0400"
      },
      "message": "Merge branch \u0027nfsv4_xdr_cleanups-for-2.6.32\u0027 into nfs-for-2.6.32\n\nConflicts:\n\tfs/nfs/nfs4xdr.c\n"
    },
    {
      "commit": "1ae88b2e446261c038f2c0c3150ffae142b227a2",
      "tree": "b3c9c11e4391c59086308e2674661688db5b12f5",
      "parents": [
        "7cb7beb31aa3d941833b6a6e553687422c31e4b6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 12 09:12:30 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 12 08:21:39 2009 -0700"
      },
      "message": "NFS: Fix an O_DIRECT Oops...\n\nWe can\u0027t call nfs_readdata_release()/nfs_writedata_release() without\nfirst initialising and referencing args.context. Doing so inside\nnfs_direct_read_schedule_segment()/nfs_direct_write_schedule_segment()\ncauses an Oops.\n\nWe should rather be calling nfs_readdata_free()/nfs_writedata_free() in\nthose cases.\n\nLooking at the O_DIRECT code, the \"struct nfs_direct_req\" is already\nreferencing the nfs_open_context for us. Since the readdata and writedata\nstructures carry a reference to that, we can simplify things by getting rid\nof the extra nfs_open_context references, so that we can replace all\ninstances of nfs_readdata_release()/nfs_writedata_release().\n\nReported-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nTested-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "074cc1deec5dee63fcd5d966b36fa4f3765b50fc",
      "tree": "14508949385a168ab2e43ca5bf7423473f25d839",
      "parents": [
        "c140aa91357c415c91269884518fa1d6fdebc20d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 10 08:54:13 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Aug 10 08:54:13 2009 -0400"
      },
      "message": "NFS: Add a -\u003emigratepage() aop for NFS\n\nMake NFS a bit more friendly to NUMA and memory hot removal...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "81e4e1ba7ed4a1fdcf0e2ee944f1575010471464",
      "tree": "a97bd3c8ec33dd18598169db83555bf5bd237b91",
      "parents": [
        "373c0a7ed3ea3b34efedb7c83ffb521adff7c894"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 11 11:22:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 11 11:22:34 2009 -0700"
      },
      "message": "Revert \"fuse: Fix build error\" as unnecessary\n\nThis reverts commit 097041e576ee3a50d92dd643ee8ca65bf6a62e21.\n\nTrond had a better fix, which is the parent of this one (\"Fix compile\nerror due to congestion_wait() changes\")\n\nRequested-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Larry Finger \u003cLarry.Finger@lwfinger.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "097041e576ee3a50d92dd643ee8ca65bf6a62e21",
      "tree": "103bb259744701fb702015d539ecb4fe12a0fb83",
      "parents": [
        "69ca06c9454169c4a9303e8834adae9080f94859"
      ],
      "author": {
        "name": "Larry Finger",
        "email": "Larry.Finger@lwfinger.net",
        "time": "Fri Jul 10 20:06:42 2009 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 10 19:09:46 2009 -0700"
      },
      "message": "fuse: Fix build error\n\nWhen building v2.6.31-rc2-344-g69ca06c, the following build errors are\nfound due to missing includes:\n\n CC [M]  fs/fuse/dev.o\nfs/fuse/dev.c: In function ‘request_end’:\nfs/fuse/dev.c:289: error: ‘BLK_RW_SYNC’ undeclared (first use in this function)\n...\nfs/nfs/write.c: In function ‘nfs_set_page_writeback’:\nfs/nfs/write.c:207: error: ‘BLK_RW_ASYNC’ undeclared (first use in this function)\n\nSigned-off-by: Larry Finger@lwfinger.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8aa7e847d834ed937a9ad37a0f2ad5b8584c1ab0",
      "tree": "76c8b4f1362a928d426f2201790ab5d128f57724",
      "parents": [
        "c2cc49a2f8a479dde96a599646d30b6cc9dbed78"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 09 14:52:32 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.(none)",
        "time": "Fri Jul 10 20:31:53 2009 +0200"
      },
      "message": "Fix congestion_wait() sync/async vs read/write confusion\n\nCommit 1faa16d22877f4839bd433547d770c676d1d964c accidentally broke\nthe bdi congestion wait queue logic, causing us to wait on congestion\nfor WRITE (\u003d\u003d 1) when we really wanted BLK_RW_ASYNC (\u003d\u003d 0) instead.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "eedc020e718b8ce45381383ec66030f09eb02a1e",
      "tree": "f29fe9309b67be4d5387c2ced72c063fb4df53c0",
      "parents": [
        "aae2006e9b0c294114915c13022fa348e1a88023"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Apr 01 09:22:41 2009 -0400"
      },
      "committer": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jun 17 12:25:07 2009 -0700"
      },
      "message": "nfs41: use rpc prepare call state for session reset\n\n[nfs41: change nfs4_restart_rpc argument]\n[nfs41: check for session not minorversion]\n[nfs41: trigger the state manager for session reset]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[always define nfs4_restart_rpc]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "21d9a851aaa4161a9fddde720594659f3dae7fdd",
      "tree": "6c18c057a56d5318a8e46d4615c03fefd5f5d498",
      "parents": [
        "def6ed7ef45ed19c3d6ca765f3bfdff1fe4c6bba"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Apr 01 09:22:27 2009 -0400"
      },
      "committer": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jun 17 10:46:50 2009 -0700"
      },
      "message": "nfs41 commit sequence setup done support\n\nSeparate commit calls from nfs41: sequence setup/done support\n\nImplement the commit rpc_call_prepare method for\nasynchronuos nfs rpcs, call nfs41_setup_sequence from\nrespective rpc_call_validate_args methods.\n\nCall nfs4_sequence_done from respective rpc_call_done methods.\n\nNote that we need to pass a pointer to the nfs_server in calls data\nfor passing on to nfs4_sequence_done.\n\nSigned-off-by: Andy Adamson\u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[pnfs: client data server write validate and release]\nSigned-off-by: Andy Adamson\u003candros@umich.edu\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: Support sessions with O_DIRECT.]\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: separate free slot from sequence done]\n[nfs41: nfs4_sequence_free_slot use nfs_client for data server]\nSigned-off-by: Andy Adamson\u003candros@umich.edu\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "def6ed7ef45ed19c3d6ca765f3bfdff1fe4c6bba",
      "tree": "98e072aa00e6c284dac719c6c7f97abd7c930d90",
      "parents": [
        "f11c88af26453aee2823a1fd9120d0cd8dae7b9a"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Apr 01 09:22:26 2009 -0400"
      },
      "committer": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jun 17 10:46:49 2009 -0700"
      },
      "message": "nfs41 write sequence setup done support\n\nSeparate write calls from nfs41: sequence setup/done support\n\nImplement the write rpc_call_prepare method for\nasynchronuos nfs rpcs, call nfs41_setup_sequence from\nrespective rpc_call_validate_args methods.\n\nCall nfs4_sequence_done from respective rpc_call_done methods.\n\nNote that we need to pass a pointer to the nfs_server in calls data\nfor passing on to nfs4_sequence_done.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[pnfs: client data server write validate and release]\nSigned-off-by: Andy Adamson \u003candros@umich.edu\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[move the nfs4_sequence_free_slot call in nfs_readpage_retry from]\n[nfs41: separate free slot from sequence done\nSigned-off-by: Andy Adamson \u003candros@umich.edu\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: Support sessions with O_DIRECT.]\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n[nfs41: nfs4_sequence_free_slot use nfs_client for data server]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5f7dbd5c752d88310d8fe1feedefd5c6496eff48",
      "tree": "870e270d87cf112494500b655f08980539ffa291",
      "parents": [
        "f3752975caa716709c5ea0b0820b86111d921df4"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Apr 01 09:22:05 2009 -0400"
      },
      "committer": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jun 17 10:46:30 2009 -0700"
      },
      "message": "nfs41: set up seq_res.sr_slotid\n\nInitialize nfs4_sequence_res sr_slotid to NFS4_MAX_SLOT_TABLE.\n\n[was nfs41: sequence res use slotid]\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\n[pulled definition of struct nfs4_sequence_res.sr_slotid to here]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "47c62564200609b6de60f535f61f0c73dd10c7c9",
      "tree": "9d21b42cd34b14e75574dcb22eb945aefccfe345",
      "parents": [
        "2e3c230bc7149a6af65d26a0c312e230e0c33cc3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 16 08:13:41 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:17:40 2009 -0400"
      },
      "message": "NFS: Fix up a mismerged patch\n\nMove the definition of nfs_need_commit() into the #ifdef CONFIG_NFS_V3\nsection as originally intended in the patch \"NFS: cleanup - remove\nstruct nfs_inode-\u003encommit\"\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "72cb77f4a5ace37b12dcb47a0e8637a2c28ad881",
      "tree": "62fbdd7a34884f3ea9e1b0ba6bd5a4d78263f847",
      "parents": [
        "fb8a1f11b64e213d94dfa1cebb2a42a7b8c115c4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:30 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:30 2009 -0400"
      },
      "message": "NFS: Throttle page dirtying while we\u0027re flushing to disk\n\nThe following patch is a combination of a patch by myself and Peter\nStaubach.\n\nTrond: If we allow other processes to dirty pages while a process is doing\na consistency sync to disk, we can end up never making progress.\n\nPeter: Attached is a patch which addresses a continuing problem with\nthe NFS client generating out of order WRITE requests.  While\nthis is compliant with all of the current protocol\nspecifications, there are servers in the market which can not\nhandle out of order WRITE requests very well.  Also, this may\nlead to sub-optimal block allocations in the underlying file\nsystem on the server.  This may cause the read throughputs to\nbe reduced when reading the file from the server.\n\nPeter: There has been a lot of work recently done to address out of\norder issues on a systemic level.  However, the NFS client is\nstill susceptible to the problem.  Out of order WRITE\nrequests can occur when pdflush is in the middle of writing\nout pages while the process dirtying the pages calls\ngeneric_file_buffered_write which calls\ngeneric_perform_write which calls\nbalance_dirty_pages_rate_limited which ends up calling\nwriteback_inodes which ends up calling back into the NFS\nclient to writes out dirty pages for the same file that\npdflush happens to be working with.\n\nSigned-off-by: Peter Staubach \u003cstaubach@redhat.com\u003e\n[modification by Trond to merge the two similar patches]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fb8a1f11b64e213d94dfa1cebb2a42a7b8c115c4",
      "tree": "4b21038fae0e1a8a763d4118bd6543dc77e9b5aa",
      "parents": [
        "a65318bf3afc93ce49227e849d213799b072c5fd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:29 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:29 2009 -0400"
      },
      "message": "NFS: cleanup - remove struct nfs_inode-\u003encommit\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d7fb120774f062ce7db439863ab5d4190d6f989c",
      "tree": "621ce0a776c3bc4b66d0cea87e06f6ea7ed79398",
      "parents": [
        "8491945f11c227400ef294d560f6d7aace76bc33"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 06 20:08:56 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 07 18:19:05 2008 -0400"
      },
      "message": "NFS: Don\u0027t use range_cyclic for data integrity syncs\n\nIt is more efficient to write linearly starting from the beginning of the\nfile.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a3d01454bc58b5a211ef64a7670572a40b71e682",
      "tree": "68c1ba383fb2c6702a8cc02bc81d51da6fb2920b",
      "parents": [
        "1b83d707032a1be40a60ed0a9bd841662cc04a5d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 11 12:21:19 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 15 18:10:51 2008 -0400"
      },
      "message": "NFS: Remove BKL requirement from attribute updates\n\nThe main problem is dealing with inode-\u003ei_size: we need to set the\ninode-\u003ei_lock on all attribute updates, and so vmtruncate won\u0027t cut it.\nMake an NFS-private version of vmtruncate that has the necessary locking\nsemantics.\n\nThe result should be that the following inode attribute updates are\nprotected by inode-\u003ei_lock\n\tnfsi-\u003ecache_validity\n\tnfsi-\u003eread_cache_jiffies\n\tnfsi-\u003eattrtimeo\n\tnfsi-\u003eattrtimeo_timestamp\n\tnfsi-\u003echange_attr\n\tnfsi-\u003elast_updated\n\tnfsi-\u003ecache_change_attribute\n\tnfsi-\u003eaccess_cache\n\tnfsi-\u003eaccess_cache_entry_lru\n\tnfsi-\u003eaccess_cache_inode_lru\n\tnfsi-\u003eacl_access\n\tnfsi-\u003eacl_default\n\tnfsi-\u003enfs_page_tree\n\tnfsi-\u003encommit\n\tnfsi-\u003enpages\n\tnfsi-\u003eopen_files\n\tnfsi-\u003esilly_list\n\tnfsi-\u003eacl\n\tnfsi-\u003eopen_states\n\tinode-\u003ei_size\n\tinode-\u003ei_atime\n\tinode-\u003ei_mtime\n\tinode-\u003ei_ctime\n\tinode-\u003ei_nlink\n\tinode-\u003ei_uid\n\tinode-\u003ei_gid\n\nThe following is protected by dir-\u003ei_mutex\n\tnfsi-\u003ecookieverf\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "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"
    }
  ],
  "next": "c63c7b051395368573779c8309aa5c990dcf2f96"
}
