)]}'
{
  "log": [
    {
      "commit": "4d65c520fb4abed970069d18c119cfe85624f46d",
      "tree": "74671eb263380317f1e4a958a6a7f73749e98eec",
      "parents": [
        "16c29dafcc86024048f1dbb8349d31cb22c7c55a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 25 14:15:11 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Mar 27 17:48:07 2011 +0200"
      },
      "message": "NFS: Fix a hang in the writeback path\n\nNow that the inode scalability patches have been merged, it is no longer\nsafe to call igrab() under the inode-\u003ei_lock.\nNow that we no longer call nfs_clear_request() until the nfs_page is\nbeing freed, we know that we are always holding a reference to the\nnfs_open_context, which again holds a reference to the path, and so\nthe inode cannot be freed until the last nfs_page has been removed\nfrom the radix tree and freed.\n\nWe can therefore skip the igrab()/iput() altogether.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ef31153786bc1e4304e6b9422cc8b9efef455611",
      "tree": "32739af2c6b0f2ab0fdf05e84b674d94721ffa6d",
      "parents": [
        "de4b15c7e9fe9fdd1eb6333be0a08c822db1ca0e"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Sat Mar 12 02:58:10 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 15:49:48 2011 -0400"
      },
      "message": "NFSv4.1 convert layoutcommit sync to boolean\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "863a3c6c686d5773f7192a4818769e15db12ce08",
      "tree": "3ff8bf04c583aa0c16ae30b0821bc9148d49a47a",
      "parents": [
        "e0c2b3801828aadb65dec9f67f7c6b7a675ad007"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Mar 23 13:27:54 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:04 2011 -0400"
      },
      "message": "NFSv4.1: layoutcommit\n\nThe filelayout driver sends LAYOUTCOMMIT only when COMMIT goes to\nthe data server (as opposed to the MDS) and the data server WRITE\nis not NFS_FILE_SYNC.\n\nOnly whole file layout support means that there is only one IOMODE_RW layout\nsegment.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Mingyang Guo \u003cguomingyang@nrchpc.ac.cn\u003e\nSigned-off-by: Tao Guo \u003cguotao@nrchpc.ac.cn\u003e\nSigned-off-by: Zhang Jingwang \u003czhangjingwang@nrchpc.ac.cn\u003e\nTested-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e0c2b3801828aadb65dec9f67f7c6b7a675ad007",
      "tree": "547d70967ad8f41a18f2d3112dbd12e64f972af2",
      "parents": [
        "988b6dceb0ae6d642587c8594529b94f6be0c5ea"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:53 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:04 2011 -0400"
      },
      "message": "NFSv4.1: filelayout driver specific code for COMMIT\n\nImplement all the hooks created in the previous patches.\nThis requires exporting quite a few functions and adding a few\nstructure fields.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "988b6dceb0ae6d642587c8594529b94f6be0c5ea",
      "tree": "78438f297eb2f8c9058872ac8a0f33d1a99b461c",
      "parents": [
        "a861a1e1c398fe34701569fd8ac9225dfe0a9a7e"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:52 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:03 2011 -0400"
      },
      "message": "NFSv4.1: remove GETATTR from ds commits\n\nAny COMMIT compound directed to a data server needs to have the\nGETATTR calls suppressed.  We here, make sure the field we are testing\n(data-\u003elseg) is set and refcounted correctly.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a861a1e1c398fe34701569fd8ac9225dfe0a9a7e",
      "tree": "fe28b8cfa4b8a6066ee6f2feeaa2b61e9bfaa0c0",
      "parents": [
        "425eb736cd905181a4dd4dc8d66342a7c7ab2f27"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:51 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:03 2011 -0400"
      },
      "message": "NFSv4.1: add generic layer hooks for pnfs COMMIT\n\nWe create three major hooks for the pnfs code.\n\npnfs_mark_request_commit() is called during writeback_done from\nnfs_mark_request_commit, which gives the driver an opportunity to\nclaim it wants control over commiting a particular req.\n\npnfs_choose_commit_list() is called from nfs_scan_list\nto choose which list a given req should be added to, based on\nwhere we intend to send it for COMMIT.  It is up to the driver\nto have preallocated list headers for each destination it may need.\n\npnfs_commit_list() is how the driver actually takes control, it is\nused instead of nfs_commit_list().\n\nIn order to pass information between the above functions, we create\na union in nfs_page to hold a lseg (which is possible because the req is\nnot on any list while in transition), and add some flags to indicate\nif we need to use the pnfs code.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5917ce8440ba0b3f2adee613b5f1258ac5efff02",
      "tree": "39292e35e834db27bad2164ee5cab05082ecca2a",
      "parents": [
        "64bfeb49bd1c2351a8415f7fe6b25eef208872a5"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:48 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:03 2011 -0400"
      },
      "message": "NFSv4.1: pull out code from nfs_commit_release\n\nCreate a separate support function for later use by data server\ncommit code.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "64bfeb49bd1c2351a8415f7fe6b25eef208872a5",
      "tree": "2d0bd4540611ef09f1143779fe88ee49c5491d8d",
      "parents": [
        "5f452431e229ea14df61b0ac89eed5881414eef9"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:47 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:03 2011 -0400"
      },
      "message": "NFSv4.1: pull error handling out of nfs_commit_list\n\nCreate a separate support function for later use by data server\ncommit code.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9ace33cdc6562699a780b4716d9d52c55dd2151a",
      "tree": "911f8661b4565fbe2b870a8ab488ede32d2841e3",
      "parents": [
        "465d52437d5ce8d4eb9da0d3e3818b51cff163a1"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:45 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:02 2011 -0400"
      },
      "message": "NFSv4.1: rearrange nfs_commit_rpcsetup\n\nReorder nfs_commit_rpcsetup, preparing for a pnfs entry point.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "465d52437d5ce8d4eb9da0d3e3818b51cff163a1",
      "tree": "eb78b7c5e1e07a6a726e6b7d5dbc683eaad26902",
      "parents": [
        "8ef2ce3e16d9bec6cf015207c1c82a5b864046ac"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Mar 23 13:27:44 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:29:02 2011 -0400"
      },
      "message": "NFSv4.1: don\u0027t send COMMIT to ds for data sync writes\n\nBased on consensus reached in Feb 2011 interim IETF meeting regarding\nuse of LAYOUTCOMMIT, it has been decided that a NFS_DATA_SYNC return\nfrom a WRITE to data server should not initiate a COMMIT.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b8413f98f997bb3ed7327e6d7117e7e91ce010c3",
      "tree": "9921bcb0dc978d2c7fe549e81080c0539fef8c71",
      "parents": [
        "b31268ac793fd300da66b9c28bbf0a200339ab96"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 21 15:37:01 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 21 21:09:24 2011 -0400"
      },
      "message": "NFS: Fix a hang/infinite loop in nfs_wb_page()\n\nWhen one of the two waits in nfs_commit_inode() is interrupted, it\nreturns a non-negative value, which causes nfs_wb_page() to think\nthat the operation was successful causing it to busy-loop rather\nthan exiting.\nIt also causes nfs_file_fsync() to incorrectly report the file as\nbeing successfully committed to disk.\n\nThis patch fixes both problems by ensuring that we return an error\nif the attempts to wait fail.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b31268ac793fd300da66b9c28bbf0a200339ab96",
      "tree": "910978e11c5e6d94fb5be82f38cbc6d3ef65c020",
      "parents": [
        "8e26de238fd794c8ea56a5c98bf67c40cfeb051d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 21 17:02:00 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 21 21:08:17 2011 -0400"
      },
      "message": "FS: Use stable writes when not doing a bulk flush\n\nIf we\u0027re only doing a single write, and there are no other unstable\nwrites being queued up, we might want to just flip to using a stable\nwrite RPC call.\n\nReviewed-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "36fe432d33e078caee5c954e15e929819c2cacae",
      "tree": "84bccc3434a423f8eabae42d543fad5914124ae2",
      "parents": [
        "c76069bda0f17cd3e153e54d9ac01242909c6b15"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 03 15:13:49 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:45 2011 -0500"
      },
      "message": "NFSv4.1: Clear lseg pointer in -\u003edoio function\n\nNow that we have access to the pointer, clear it immediately after\nthe put, instead of in caller.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c76069bda0f17cd3e153e54d9ac01242909c6b15",
      "tree": "b21a8844fdcfbda430cda191c84597393398e461",
      "parents": [
        "a69aef1496726ed88386dad65abfcc8cd3195304"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 03 15:13:48 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:44 2011 -0500"
      },
      "message": "NFSv4.1: rearrange -\u003edoio args\n\nThis will make it possible to clear the lseg pointer in the same\nfunction as it is put, instead of in the caller nfs_pageio_doio().\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a69aef1496726ed88386dad65abfcc8cd3195304",
      "tree": "66766c9eed54e6dc7ddf9ecaf8765a7bc833685e",
      "parents": [
        "7ffd10640dc008f6d5a375bd6450755745c63c7d"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 03 15:13:47 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:44 2011 -0500"
      },
      "message": "NFSv4.1: pnfs filelayout driver write\n\nAllows the pnfs filelayout driver to write to the data servers.\n\nNote that COMMIT to data servers will be implemented in a future\npatch.  To avoid improper behavior, for the moment any WRITE to a data\nserver that would also require a COMMIT to the data server is sent\nNFS_FILE_SYNC.\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Mingyang Guo \u003cguomingyang@nrchpc.ac.cn\u003e\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: Ricardo Labiaga \u003cRicardo.Labiaga@netapp.com\u003e\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0382b74409c6b9ef12c952b50bb44f557a361a43",
      "tree": "0eebc04006a3b70fb6605c42ee89cdc0ccd8b1cf",
      "parents": [
        "44b83799a922a153957c65ccfc985a8c902958c8"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Thu Mar 03 15:13:45 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:44 2011 -0500"
      },
      "message": "NFSv4.1: implement generic pnfs layer write switch\n\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@fieldses.org\u003e\nSigned-off-by: Mike Sager \u003csager@netapp.com\u003e\nSigned-off-by: Ricardo Labiaga \u003cRicardo.Labiaga@netapp.com\u003e\nSigned-off-by: Tao Guo \u003cguotao@nrchpc.ac.cn\u003e\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "44b83799a922a153957c65ccfc985a8c902958c8",
      "tree": "4dad6ec4655a876c3f12a15919fad407fd22ef59",
      "parents": [
        "5053aa568d4017aeb1fa35247d4ad96be262920f"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 03 15:13:44 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:44 2011 -0500"
      },
      "message": "NFSv4.1: trigger LAYOUTGET for writes\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5053aa568d4017aeb1fa35247d4ad96be262920f",
      "tree": "a15850e0465c555310a41880c7e9454109a1f952",
      "parents": [
        "b029bc9b0880cbaf999f580c0ea8f06dd274fc77"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 03 15:13:43 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:44 2011 -0500"
      },
      "message": "NFSv4.1: Send lseg down into nfs_write_rpcsetup\n\nWe grab the lseg sent in from the doio function and attach it to\neach struct nfs_write_data created.  This is how the lseg will be\nsent to the layout driver.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d138d5d17be6a60d883e8bd4e22bc218d3adfab3",
      "tree": "157dcb197e44823b0dc7500b9ba5f691b536402c",
      "parents": [
        "80fe2b192dbc53261e385dc26d90f5195f1c62e7"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Thu Mar 03 15:13:41 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:43 2011 -0500"
      },
      "message": "NFSv4.1: rearrange nfs_write_rpcsetup\n\nReorder nfs_write_rpcsetup, preparing for a pnfs entry point.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bae724ef95b0d0a1f4518f5451e7c8aabc41f820",
      "tree": "07a2c1866698f183235f7133ac7c004121717bf8",
      "parents": [
        "94ad1c80e28f9700c84b4d28d1e5302ddf63a6fd"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Tue Mar 01 01:34:15 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:42 2011 -0500"
      },
      "message": "NFSv4.1: shift pnfs_update_layout locations\n\nMove the pnfs_update_layout call location to nfs_pageio_do_add_request().\nGrab the lseg sent in the doio function to nfs_read_rpcsetup and attach\nit to each nfs_read_data so it can be sent to the layout driver.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: Tao Guo \u003cguotao@nrchpc.ac.cn\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "94ad1c80e28f9700c84b4d28d1e5302ddf63a6fd",
      "tree": "2c600c1f8e85648c7693b5f0018b5d0b7e960b5f",
      "parents": [
        "d684d2ae10a4f95d3035abf698d7d611ff2cd279"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Tue Mar 01 01:34:14 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:42 2011 -0500"
      },
      "message": "NFSv4.1: coelesce across layout stripes\n\nAdd a pg_test layout driver hook which is used to avoid coelescing I/O across\nlayout stripes.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildeb@us.ibm.com\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: Tao Guo \u003cguotao@nrchpc.ac.cn\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "136028967a283929c6f01518d0700b73fa622d56",
      "tree": "14c55e191897a726c6cedb09a988d2f07e0e3da4",
      "parents": [
        "83762c56c1ba7c5b4b92fb32d570661633228bc6"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Feb 11 15:42:38 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 11 15:38:40 2011 -0500"
      },
      "message": "NFS: change nfs_writeback_done to return void\n\nThe return values are not used by any callers.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d2224e7afbf2a6556f4f8f25bc0e96d99ec4d2bd",
      "tree": "e8eea0db32178870bee34073547b982216035e45",
      "parents": [
        "bf294b41cefcb22fc3139e0f42c5b3f06728bd5e"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Sun Mar 06 17:14:13 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 10 15:04:53 2011 -0500"
      },
      "message": "nfs: close NFSv4 COMMIT vs. CLOSE race\n\nI\u0027ve been adding in more artificial delays in the NFSv4 commit and close\ncodepaths to uncover races. The kernel I\u0027m testing has the patch to\nclose the race in __rpc_wait_for_completion_task that\u0027s in Trond\u0027s\ncthon2011 branch. The reproducer I\u0027ve been using does this in a loop:\n\n\tmkdir(\"DIR\");\n\tfd \u003d open(\"DIR/FILE\", O_WRONLY|O_CREAT|O_EXCL, 0644);\n\twrite(fd, \"abcdefg\", 7);\n\tclose(fd);\n\tunlink(\"DIR/FILE\");\n\trmdir(\"DIR\");\n\nThe above reproducer shouldn\u0027t result in any silly-renaming. However,\nwhen I add a \"msleep(100)\" just after the nfs_commit_clear_lock call in\nnfs_commit_release, I can almost always force one to occur. If I can\nforce it to occur with that, then it can happen without that delay\ngiven the right timing.\n\nnfs_commit_inode waits for the NFS_INO_COMMIT bit to clear when called\nwith FLUSH_SYNC set. nfs_commit_rpcsetup on the other hand does not wait\nfor the task to complete before putting its reference to it, so the last\nreference get put in rpc_release task and gets queued to a workqueue.\n\nIn this situation, the last open context reference may be put by the\nCOMMIT release instead of the close() syscall. The close() syscall\nreturns too quickly and the unlink runs while the d_count is still\nhigh since the COMMIT release hasn\u0027t put its dentry reference yet.\n\nFix this by having rpc_commit_rpcsetup wait for the RPC call to complete\nbefore putting the task reference when FLUSH_SYNC is set. With this, the\nlast reference is put by the process that\u0027s initiating the FLUSH_SYNC\ncommit and the race is closed.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0da2a4ac33c291728d8be5bdb865467dcb078d13",
      "tree": "7f6af191fa9020a8d4bd0cdb828fd15fecd39411",
      "parents": [
        "c56eb8fb6dccb83d9fe62fd4dc00c834de9bc470"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Jan 19 14:18:50 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 19 15:37:49 2011 -0500"
      },
      "message": "NFS: fix handling of malloc failure during nfs_flush_multi()\n\nCleanup of the allocated list entries should not call\nput_nfs_open_context() on each entry, as the context will\nalways be NULL, causing an oops.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2df485a774ba59c3f43bfe84107672c1d9b731a0",
      "tree": "a958e82f619290cb5cb28301e30186ef594cd7b4",
      "parents": [
        "0de1b7e800188782973598158e0acbb9e08e6c99"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 22:39:17 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 07 23:02:44 2010 -0500"
      },
      "message": "nfs: remove extraneous and problematic calls to nfs_clear_request\n\nWhen a nfs_page is freed, nfs_free_request is called which also calls\nnfs_clear_request to clean out the lock and open contexts and free the\npagecache page.\n\nHowever, a couple of places in the nfs code call nfs_clear_request\nthemselves. What happens here if the refcount on the request is still high?\nWe\u0027ll be releasing contexts and freeing pointers while the request is\npossibly still in use.\n\nRemove those bare calls to nfs_clear_context. That should only be done when\nthe request is being freed.\n\nNote that when doing this, we need to watch out for tests of req-\u003ewb_page.\nPreviously, nfs_set_page_tag_locked() and nfs_clear_page_tag_locked()\nwould check the value of req-\u003ewb_page to figure out if the page is mapped\ninto the nfsi-\u003enfs_page_tree. We now indicate the page is mapped using\nthe new bit PG_MAPPED in req-\u003ewb_flags .\n\nReported-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1b430beee5e388605dfb092b214ef0320f752cf6",
      "tree": "c1b1ece282aab771fd1386a3fe0c6e82cb5c5bfe",
      "parents": [
        "d19d5476f4b9f91d2de92b91588bb118beba6c0d"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Oct 26 14:21:26 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "writeback: remove nonblocking/encountered_congestion references\n\nThis removes more dead code that was somehow missed by commit 0d99519efef\n(writeback: remove unused nonblocking and congestion checks).  There are\nno behavior change except for the removal of two entries from one of the\next4 tracing interface.\n\nThe nonblocking checks in -\u003ewritepages are no longer used because the\nflusher now prefer to block on get_request_wait() than to skip inodes on\nIO congestion.  The latter will lead to more seeky IO.\n\nThe nonblocking checks in -\u003ewritepage are no longer used because it\u0027s\nredundant with the WB_SYNC_NONE check.\n\nWe no long set -\u003enonblocking in VM page out and page migration, because\na) it\u0027s effectively redundant with WB_SYNC_NONE in current code\nb) it\u0027s old semantic of \"Don\u0027t get stuck on request queues\" is mis-behavior:\n   that would skip some dirty inodes on congestion and page out others, which\n   is unfair in terms of LRU age.\n\nInspired by Christoph Hellwig. Thanks!\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Steve French \u003csfrench@samba.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a00dd6c03dd97a777c291a8af8682be4b5fadf8d",
      "tree": "184600accd17f16115becb5f3454f18e88987643",
      "parents": [
        "5c78f58e2d5cef65c255a556184f1f43c8d84c84"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Sep 28 09:14:01 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 29 14:42:30 2010 -0400"
      },
      "message": "NFS: don\u0027t use FLUSH_SYNC on WB_SYNC_NONE COMMIT calls (try #2)\n\nWB_SYNC_NONE is supposed to mean \"don\u0027t wait on anything\". That should\nalso include not waiting for COMMIT calls to complete.\n\nWB_SYNC_NONE is also implied when wbc-\u003enonblocking and\nwbc-\u003efor_background are set, so we can replace those checks in\nnfs_commit_unstable_pages with a check for WB_SYNC_NONE.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dfb4f309830359352539919f23accc59a20a3758",
      "tree": "c692dbb873e212bd919e6b98dac62478cb9ba968",
      "parents": [
        "7c563cc9f3f4aca70c27bd08a135499227f67014"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Fri Sep 24 09:17:01 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 24 09:17:01 2010 -0400"
      },
      "message": "NFSv4.1: keep seq_res.sr_slot as pointer rather than an index\n\nHaving to explicitly initialize sr_slotid to NFS4_MAX_SLOT_TABLE\nresulted in numerous bugs.  Keeping the current slot as a pointer\nto the slot table is more straight forward and robust as it\u0027s\nimplicitly set up to NULL wherever the seq_res member is initialized\nto zeroes.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5df6b8e65ad0f2eaee202ff002ac00d1ac605315",
      "tree": "2eff6606f8e39dc1fd7eb8a05feb2a9927151805",
      "parents": [
        "fe21ea18c742ab0eb8f6f8ebc543374839a02a87",
        "3dce9a5c3a39a664e372886ea86c42ae7ae33dfc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:19:36 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:19:36 2010 -0700"
      },
      "message": "Merge branch \u0027nfs-for-2.6.36\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.36\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (42 commits)\n  NFS: NFSv4.1 is no longer a \"developer only\" feature\n  NFS: NFS_V4 is no longer an EXPERIMENTAL feature\n  NFS: Fix /proc/mount for legacy binary interface\n  NFS: Fix the locking in nfs4_callback_getattr\n  SUNRPC: Defer deleting the security context until gss_do_free_ctx()\n  SUNRPC: prevent task_cleanup running on freed xprt\n  SUNRPC: Reduce asynchronous RPC task stack usage\n  SUNRPC: Move the bound cred to struct rpc_rqst\n  SUNRPC: Clean up of rpc_bindcred()\n  SUNRPC: Move remaining RPC client related task initialisation into clnt.c\n  SUNRPC: Ensure that rpc_exit() always wakes up a sleeping task\n  SUNRPC: Make the credential cache hashtable size configurable\n  SUNRPC: Store the hashtable size in struct rpc_cred_cache\n  NFS: Ensure the AUTH_UNIX credcache is allocated dynamically\n  NFS: Fix the NFS users of rpc_restart_call()\n  SUNRPC: The function rpc_restart_call() should return success/failure\n  NFSv4: Get rid of the bogus RPC_ASSASSINATED(task) checks\n  NFSv4: Clean up the process of renewing the NFSv4 lease\n  NFSv4.1: Handle NFS4ERR_DELAY on SEQUENCE correctly\n  NFS: nfs_rename() should not have to flush out writebacks\n  ...\n"
    },
    {
      "commit": "77a63f3d1e0a3e7ede8d10f569e8481b13ff47c5",
      "tree": "f08c0c2dab44348919ec296254c3cc39d34e9f85",
      "parents": [
        "a63ecd835f075b21d7d5cef9580447f5fbb36263"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 01 13:40:40 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 01 15:10:01 2010 -0700"
      },
      "message": "NFS: Fix a typo in include/linux/nfs_fs.h\n\nnfs_commit_inode() needs to be defined irrespectively of whether or not\nwe are supporting NFSv3 and NFSv4.\n\nAllow the compiler to optimise away code in the NFSv2-only case by\nconverting it into an inlined stub function.\n\nReported-and-tested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cfb506e1d330387dfaf334dd493b3773d388863d",
      "tree": "4c376c8ff15082553f8f0f64a65dfe573072f7c7",
      "parents": [
        "b608b283a962caaa280756bc8563016a71712acf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 30 15:31:57 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 30 15:38:56 2010 -0400"
      },
      "message": "NFS: Ensure that writepage respects the nonblock flag\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b608b283a962caaa280756bc8563016a71712acf",
      "tree": "217a745ab305219fab676d4a215c1a709004bd57",
      "parents": [
        "674b2222920012244ca59978b356b25412a8dcc7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 30 15:31:54 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 30 15:38:42 2010 -0400"
      },
      "message": "NFS: kswapd must not block in nfs_release_page\n\nSee https://bugzilla.kernel.org/show_bug.cgi?id\u003d16056\n\nIf other processes are blocked waiting for kswapd to free up some memory so\nthat they can make progress, then we cannot allow kswapd to block on those\nprocesses.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "f11ac8db5d07b6e99d41ff4aa39d878ee5cef1c5",
      "tree": "4393cbc2653145ba3269d5143f5db7811a59698b",
      "parents": [
        "1f0e890dba5b0f543fea47732116b1c65d55614e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 25 16:35:53 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 30 14:41:56 2010 -0400"
      },
      "message": "NFSv4: Ensure that we track the NFSv4 lock state in read/write requests.\n\nThis patch fixes bugzilla entry 14501:\n  https://bugzilla.kernel.org/show_bug.cgi?id\u003d14501\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "035168ab39f66e4946d493f9ee20d11e154f332a",
      "tree": "9315dded7db8ccba9fb3601bdc3ab03310bd87ff",
      "parents": [
        "71ac6da9944e2c9ec73ca64ca7bca74428858585"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 16 09:52:26 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 22 13:24:02 2010 -0400"
      },
      "message": "NFSv4.1: Make nfs4_setup_sequence take a nfs_server argument\n\nIn anticipation of the day when we have per-filesystem sessions, and also\nin order to allow the session to change in the event of a filesystem\nmigration event.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "0773769191d943358a8392fa86abd756d004c4b6"
}
