)]}'
{
  "log": [
    {
      "commit": "9f0ec176b3071e0472582c07ae1e68055b28184d",
      "tree": "a767381b136e8ac9f7839917b477fd7cd8cf9dc3",
      "parents": [
        "90fecfcb3437dfc9bec4ee3306584dcd6843701b"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Fri Apr 27 17:53:44 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:54:19 2012 -0400"
      },
      "message": "NFSv4.1 set RPC_TASK_SOFTCONN for filelayout DS RPC calls\n\nRPC_TASK_SOFTCONN returns connection errors to the caller which allows the pNFS\nfile layout to quickly try the MDS or perhaps another DS.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1d1afcbc294cc7c788eb5c7b6b98e8d63caf002c",
      "tree": "88abc7e7018f733410fa51039351e4f0e2dd84c3",
      "parents": [
        "7ad84aa9448571678c243f0c5ef383fbe5b50f4f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 14:04:55 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 15:17:43 2012 -0400"
      },
      "message": "NFS: Clean up - Rename nfs_unlock_request and nfs_unlock_request_dont_release\n\nFunction rename to ensure that the functionality of nfs_unlock_request()\nmirrors that of nfs_lock_request(). Then let nfs_unlock_and_release_request()\ndo the work of what used to be called nfs_unlock_request()...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\n"
    },
    {
      "commit": "7ad84aa9448571678c243f0c5ef383fbe5b50f4f",
      "tree": "7d2baea4ff52fe62b23bf8adbb81a824ee768938",
      "parents": [
        "d1182b33ed9b62470cb6ab892a8a301542120086"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 13:19:15 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 15:17:34 2012 -0400"
      },
      "message": "NFS: Clean up - simplify nfs_lock_request()\n\nWe only have two places where we need to grab a reference when trying\nto lock the nfs_page. We\u0027re better off making that explicit.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\n"
    },
    {
      "commit": "d1182b33ed9b62470cb6ab892a8a301542120086",
      "tree": "bb300d0801aeb873ae6d74fcf93deafdc993305a",
      "parents": [
        "3aff4ebb95b20ad8db2c1447e8c52097d89af5a7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 13:37:43 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 15:17:28 2012 -0400"
      },
      "message": "NFS: nfs_set_page_writeback no longer needs to reference the page\n\nWe now hold a reference to the nfs_page across the calls to\nnfs_set_page_writeback and nfs_end_page_writeback, and that\nmeans we already have a reference to the struct page.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\n"
    },
    {
      "commit": "3aff4ebb95b20ad8db2c1447e8c52097d89af5a7",
      "tree": "ad56aceafbcbd0650e71e029ffa138eedffd33ba",
      "parents": [
        "dc327ed4cd320be689596365372a3683208c3ba0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 14:30:35 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 09 15:16:07 2012 -0400"
      },
      "message": "NFS: Prevent a deadlock in the new writeback code\n\nWe have to unlock the nfs_page before we call nfs_end_page_writeback\nto avoid races with functions that expect the page to be unlocked\nwhen PG_locked and PG_writeback are not set.\nThe problem is that nfs_unlock_request also releases the nfs_page,\ncausing a deadlock if the release of the nfs_open_context\ntriggers an iput() while the PG_writeback flag is still set...\n\nThe solution is to separate the unlocking and release of the nfs_page,\nso that we can do the former before nfs_end_page_writeback and the\nlatter after.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\n"
    },
    {
      "commit": "8d197a568fc337c66729b289c7fa0f28c14ba5ac",
      "tree": "d4a7ff5108863b8ad0dba5f28a589fdd14ffff64",
      "parents": [
        "01da47bde78ff2149f6546a0f17e25983aaddd7b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Apr 29 12:50:01 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 15:42:41 2012 -0400"
      },
      "message": "NFS: Always trust the PageUptodate flag when we have a delegation\n\nWe can always use the optimal full page write if we know that we\nhold a delegation.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "25b11dcdbfcad69a5ec03265e2dce19e5eca936b",
      "tree": "f7f6ebbf62344f6cb6107815c489ce9918acd2c0",
      "parents": [
        "9146ab5055152bbacb5690c384df2fd610fb3c68"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 12:07:22 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 13:48:13 2012 -0400"
      },
      "message": "NFS: Clean up nfs read and write error paths\n\nMove the error handling for nfs_generic_pagein() into a single function.\nDitto for nfs_generic_flush().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\n"
    },
    {
      "commit": "68cd6fa4f3be07ba648e22617dfa16a40d671d19",
      "tree": "6946e7ae1fd063d166066ab3f023ce42cdaa3ff0",
      "parents": [
        "24fc9211f4d48c04882a52e42b21c9b4abc4f9bf"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Apr 30 14:30:22 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 14:32:36 2012 -0400"
      },
      "message": "NFS: Define dummy nfs_init_cinfo() and nfs_init_cinfo_from_inode()\n\nThese are needed when v3 and v4 are not enabled.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9b5415b536cc3193e9608a7fced1372df8ce4dcf",
      "tree": "02d031861e7fa008d02bb74f46f480aed521f445",
      "parents": [
        "80a16b21a81eb639f0b726549f4c46c0e9aff92e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:31:47 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 15:03:51 2012 -0400"
      },
      "message": "NFS: Fix a use-before-initialised warning in fs/nfs/write.c and fs/nfs/pnfs.c\n\nIf the allocation of nfs_write_header fails, the list of nfs_pages that\nneeds to be cleaned up is still on desc-\u003epg_list...\n\nReported-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Fred Isaman \u003ciisaman@netapp.com\u003e\n"
    },
    {
      "commit": "1763da1234cba663b849476d451bdccac5147859",
      "tree": "b2b4bf3e1ce8624217c78508054fc620aac79a55",
      "parents": [
        "56f9cd684d25f1bae901c5a872b8427f8b417c3f"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:57 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:39 2012 -0400"
      },
      "message": "NFS: rewrite directio write to use async coalesce code\n\nThis also has the advantage that it allows directio to use pnfs.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "56f9cd684d25f1bae901c5a872b8427f8b417c3f",
      "tree": "3b909f475e6e88db67b01d9b39ebca54d20fc4d3",
      "parents": [
        "b359f9d09bcbaede09243cfe844172ba055d89fd"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:56 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:39 2012 -0400"
      },
      "message": "NFS: avoid some stat gathering for direct io\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b359f9d09bcbaede09243cfe844172ba055d89fd",
      "tree": "877bf10e68d09d15e042e28a8fbb0ac93136d64c",
      "parents": [
        "f453a54a01c7c0453ad9550906e3d2663dd486ac"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:55 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:38 2012 -0400"
      },
      "message": "NFS: add dreq to nfs_commit_info\n\nNeed this to pass into nfs_commitdata_init, in order to keep data-\u003edreq\naccurate.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f453a54a01c7c0453ad9550906e3d2663dd486ac",
      "tree": "1eac38e7e186ea0339066e7da417a20e0274b2c0",
      "parents": [
        "ea2cf2282b4278461266013e9c002ee1c66700ff"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:54 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:38 2012 -0400"
      },
      "message": "NFS: create nfs_commit_completion_ops\n\nFactors out the code that needs to change when directio\nstarts using these code paths.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ea2cf2282b4278461266013e9c002ee1c66700ff",
      "tree": "244de055925710de27206ee0d5d09caa6353bd62",
      "parents": [
        "84c53ab5c093058c756dcef1879d38be6de90a3c"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:53 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:38 2012 -0400"
      },
      "message": "NFS: create struct nfs_commit_info\n\nIt is COMMIT that is handled the most differently between\nthe paged and direct paths.  Create a structure that encapsulates\neverything either path needs to know about the commit state.\n\nWe could use void to hide some of the layout driver stuff, but\nTrond suggests pulling it out to ensure type checking, given the\nhuge changes being made, and the fact that it doesn\u0027t interfere\nwith other drivers.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "84c53ab5c093058c756dcef1879d38be6de90a3c",
      "tree": "7ded11d20d02ad5df31d8f1246844ad069776d97",
      "parents": [
        "584aa810b6240d88c28113a90c5029449814a3b5"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:52 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:38 2012 -0400"
      },
      "message": "NFS: create nfs_generic_commit_list\n\nSimple refactoring.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9533da2979757258d3fd5429d830a297013d69ed",
      "tree": "c35817f49943485506aba05d80fe298d7c50adf7",
      "parents": [
        "061ae2edb7375ab6776468b075da71008a098b55"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:49 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:38 2012 -0400"
      },
      "message": "NFS: remove unused wb_complete field from struct nfs_page\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "061ae2edb7375ab6776468b075da71008a098b55",
      "tree": "a34f25d4d85d90a196b058b879eef3ba374f6d16",
      "parents": [
        "6c75dc0d498caa402fb17b1bf769835a9db875c8"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:48 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:38 2012 -0400"
      },
      "message": "NFS: create completion structure to pass into page_init functions\n\nFactors out the code that will need to change when directio\nstarts using these code paths.  This will allow directio to use\nthe generic pagein and flush routines\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6c75dc0d498caa402fb17b1bf769835a9db875c8",
      "tree": "b367bb2428c011f20b8fd47a6dd0b8603ee136ba",
      "parents": [
        "4db6e0b74c0f6dfc2f9c0690e8df512e3b635983"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:47 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:37 2012 -0400"
      },
      "message": "NFS: merge _full and _partial write rpc_ops\n\nDecouple nfs_pgio_header and nfs_write_data, and have (possibly\nmultiple) nfs_write_datas each take a refcount on nfs_pgio_header.\n\nFor the moment keeps nfs_write_header as a way to preallocate a single\nnfs_write_data with the nfs_pgio_header.  The code doesn\u0027t need this,\nand would be prettier without, but given the amount of churn I am\nalready introducing I didn\u0027t want to play with tuning new mempools.\n\nThis also fixes bug in pnfs_ld_handle_write_error.  In the case of\ndesc-\u003epg_bsize \u003c PAGE_CACHE_SIZE, the pages list was empty, causing\nreplay attempt to do nothing.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "30dd374f6fc1b202db3a1b57b61afff1326bad92",
      "tree": "7d3b631be897dd79a916ee8d410fd2bb92da4890",
      "parents": [
        "cd841605f7a721878d8a2d1362484723d8abf569"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:45 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:37 2012 -0400"
      },
      "message": "NFS: create struct nfs_page_array\n\nBoth nfs_read_data and nfs_write_data devote several fields which\ncan be combined into a single shared struct.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd841605f7a721878d8a2d1362484723d8abf569",
      "tree": "b5c37db575cd545a183577249909e042fe38d646",
      "parents": [
        "b5542849764aa56fd3f05c0041195b637b9d2ac2"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:44 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:37 2012 -0400"
      },
      "message": "NFS: create common nfs_pgio_header for both read and write\n\nIn order to avoid duplicating all the data in nfs_read_data whenever we\nsplit it up into multiple RPC calls (either due to a short read result\nor due to rsize \u003c PAGE_SIZE), we split out the bits that are the same\nper RPC call into a separate \"header\" structure.\n\nThe goal this patch moves towards is to have a single header\nrefcounted by several rpc_data structures.  Thus, want to always refer\nfrom rpc_data to the header, and not the other way.  This patch comes\nclose to that ideal, but the directio code currently needs some\nspecial casing, isolated in the nfs_direct_[read_write]hdr_release()\nfunctions.  This will be dealt with in a future patch.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c5996c4efb95bbb80a25acc890357c9eae998eeb",
      "tree": "06f0955c48ba20ff1bd28da1261343cb4f2ab7ff",
      "parents": [
        "31f6852a4c187c031456581b35e146c0d5bbdecd"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:41 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:37 2012 -0400"
      },
      "message": "NFS: reverse arg order in nfs_initiate_[read|write]\n\nMake it consistent with nfs_initiate_commit.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0b7c01533aa9f4a228d07d2768d084acb3a387bc",
      "tree": "aa57b08ce42f1effea2294354e3c9770b70e7612",
      "parents": [
        "799ba8d53d32c84bd2a867ca2689538a48176140"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:39 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 14:10:37 2012 -0400"
      },
      "message": "NFS: add a struct nfs_commit_data to replace nfs_write_data in commits\n\nCommits don\u0027t need the vectors of pages, etc. that writes do. Split out\na separate structure for the commit operation.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8ccd271f7a3a846ce6f85ead0760d9d12994a611",
      "tree": "6f85cdf26023d05f2160f472318bac591233fa75",
      "parents": [
        "73fb7bc7c57d971b11f2e00536ac2d3e316e0609"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Fri Apr 20 14:47:35 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 20 14:57:30 2012 -0400"
      },
      "message": "NFS: put open context on error in nfs_flush_multi\n\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ca138f368a36dba40d3ef4a53d64af2011cda3c7",
      "tree": "542ffcce3992273475946a3c5a60155630320ca6",
      "parents": [
        "adae0fe0ea87e8fb1a72dde304937c60759b495f"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Apr 05 15:26:36 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 18 11:05:49 2012 -0400"
      },
      "message": "NFS: check for req\u003d\u003dNULL in nfs_try_to_update_request cleanup\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c6cb80d00be42f30716ec817b963bcec094433b5",
      "tree": "8049071fc2c5f01a730eb47bfa95ee095ce677df",
      "parents": [
        "6f00866ddd15724eb20eac4ddf6e2c6c1a6cfcdc"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Mar 19 14:54:39 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 21 09:31:45 2012 -0400"
      },
      "message": "NFS: Remove nfs4_setup_sequence from generic write code\n\nThis is an NFS v4 specific operation, so it belongs in the NFS v4 code\nand not the generic client.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3b3be88d67cc17d0f0ab6edaf131516793fc947e",
      "tree": "293bc2bcc7cf7a175786ec33a4e2aff8c5c7ebca",
      "parents": [
        "5ae67c4fee869c9b3c87b727a9ea511b6326b834"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 17 11:59:30 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 20 13:08:26 2012 -0400"
      },
      "message": "NFS: Use cond_resched_lock() to reduce latencies in the commit scans\n\nEnsure that we conditionally drop the inode-\u003ei_lock when it is safe\nto do so in the commit loops.\nWe do so after locking the nfs_page, but before removing it from the\ncommit list. We can then use list_safe_reset_next to recover the loop\nafter the lock is retaken.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c4f1b62a4b50a01e8d820717906b674807ef9ca3",
      "tree": "00235f72dd714761d9536408d3c7342d0da10c6d",
      "parents": [
        "540a0f7584169651f485e8ab67461fcb06934e38"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Tue Mar 20 12:51:24 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 20 13:05:08 2012 -0400"
      },
      "message": "NFS: ncommit count is being double decremented\n\nThe decrement is handled by each call to nfs_request_remove_commit_list,\nno need to do it again in nfs_scan_commit.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8dd3775889345850ecddd689b5c200cdd91bd8c9",
      "tree": "ea697cfcac3f3a927e90d0048e9ed76b5a3ea8e5",
      "parents": [
        "95a13f7b33be87d85d8e6652126a3f4d64d164db"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 15 17:16:40 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 17 11:09:33 2012 -0400"
      },
      "message": "NFSv4.1: Clean ups and bugfixes for the pNFS read/writeback/commit code\n\nMove more pnfs-isms out of the generic commit code.\n\nBugfixes:\n\n- filelayout_scan_commit_lists doesn\u0027t need to get/put the lseg.\n  In fact since it is run under the inode-\u003ei_lock, the lseg_put()\n  can deadlock.\n\n- Ensure that we distinguish between what needs to be done for\n  commit-to-data server and what needs to be done for commit-to-MDS\n  using the new flag PG_COMMIT_TO_DS. Otherwise we may end up calling\n  put_lseg() on a bucket for a struct nfs_page that got written\n  through the MDS.\n\n- Fix a case where we were using list_del() on an nfs_page-\u003ewb_list\n  instead of list_del_init().\n\n- filelayout_initiate_commit needs to call filelayout_commit_release\n  on error instead of the mds_ops-\u003erpc_release(). Otherwise it won\u0027t\n  clear the commit lock.\n\nCleanups:\n\n- Let the files layout manage the commit lists for the pNFS case.\n  Don\u0027t expose stuff like pnfs_choose_commit_list, and the fact\n  that the commit buckets hold references to the layout segment\n  in common code.\n\n- Cast out the put_lseg() calls for the struct nfs_read/write_data-\u003elseg\n  into the pNFS layer from whence they came.\n\n- Let the pNFS layer manage the NFS_INO_PNFS_COMMIT bit.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\n"
    },
    {
      "commit": "d6d6dc7cdfda7c8f49a89a7b7261846f319da6d1",
      "tree": "fd26cf912b676f2752c16ccce1f410872a2a485c",
      "parents": [
        "9994b62b5621f88828d442fcd03fe3ce4c43344b"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 08 17:29:35 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 10 17:14:10 2012 -0500"
      },
      "message": "NFS: remove nfs_inode radix tree\n\nThe radix tree is only being used to compile lists of reqs needing commit.\nIt is simpler to just put the reqs directly into a list.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9994b62b5621f88828d442fcd03fe3ce4c43344b",
      "tree": "b337f13fa873d0931b81f6e9a51ac739e6e074f1",
      "parents": [
        "ad1e3968292e3af1c49ccbd0fb7d2674010f8efc"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Mar 08 17:29:34 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 10 17:13:58 2012 -0500"
      },
      "message": "NFS: remove NFS_PAGE_TAG_LOCKED\n\nThe last real use of this tag was removed by\ncommit 7f2f12d963 NFS: Simplify nfs_wb_page()\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9d12b216aa87f68c96f6dd8eb5d2d0ccc9989b1c",
      "tree": "74dbe1f8b150b3a66f5cb3589e5efd51ad9dfff5",
      "parents": [
        "d2d7ce28a2f8ec6ca2a49145e643d2e3c7d21ba3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 17 22:04:25 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 31 19:28:06 2012 -0500"
      },
      "message": "NFSv41: Add a new helper nfs4_init_sequence()\n\nClean up\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a6bc32b899223a877f595ef9ddc1e89ead5072b8",
      "tree": "a9529f7af2cf8e77bb6670acea32169c891a2b76",
      "parents": [
        "66199712e9eef5aede09dbcd9dfff87798a66917"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Thu Jan 12 17:19:43 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:09 2012 -0800"
      },
      "message": "mm: compaction: introduce sync-light migration for use by compaction\n\nThis patch adds a lightweight sync migrate operation MIGRATE_SYNC_LIGHT\nmode that avoids writing back pages to backing storage.  Async compaction\nmaps to MIGRATE_ASYNC while sync compaction maps to MIGRATE_SYNC_LIGHT.\nFor other migrate_pages users such as memory hotplug, MIGRATE_SYNC is\nused.\n\nThis avoids sync compaction stalling for an excessive length of time,\nparticularly when copying files to a USB stick where there might be a\nlarge number of dirty pages backed by a filesystem that does not support\n-\u003ewritepages.\n\n[aarcange@redhat.com: This patch is heavily based on Andrea\u0027s work]\n[akpm@linux-foundation.org: fix fs/nfs/write.c build]\n[akpm@linux-foundation.org: fix fs/btrfs/disk-io.c build]\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andy Isaacson \u003cadi@hexapodia.org\u003e\nCc: Nai Xia \u003cnai.xia@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b969c4ab9f182a6e1b2a0848be349f99714947b0",
      "tree": "dc1c6e4375cfec7b15f13a37307eba8a9e07f40f",
      "parents": [
        "7335084d446b83cbcb15da80497d03f0c1dc9e21"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Thu Jan 12 17:19:34 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:09 2012 -0800"
      },
      "message": "mm: compaction: determine if dirty pages can be migrated without blocking within -\u003emigratepage\n\nAsynchronous compaction is used when allocating transparent hugepages to\navoid blocking for long periods of time.  Due to reports of stalling,\nthere was a debate on disabling synchronous compaction but this severely\nimpacted allocation success rates.  Part of the reason was that many dirty\npages are skipped in asynchronous compaction by the following check;\n\n\tif (PageDirty(page) \u0026\u0026 !sync \u0026\u0026\n\t\tmapping-\u003ea_ops-\u003emigratepage !\u003d migrate_page)\n\t\t\trc \u003d -EBUSY;\n\nThis skips over all mapping aops using buffer_migrate_page() even though\nit is possible to migrate some of these pages without blocking.  This\npatch updates the -\u003emigratepage callback with a \"sync\" parameter.  It is\nthe responsibility of the callback to fail gracefully if migration would\nblock.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andy Isaacson \u003cadi@hexapodia.org\u003e\nCc: Nai Xia \u003cnai.xia@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e2fecb215b321db0e4a5b2597349a63c07bec42f",
      "tree": "eae83638b30a0ae5e742abd8cfb29fd5503e4102",
      "parents": [
        "fe0fe83585f88346557868a803a479dfaaa0688a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 08:57:46 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 08:57:46 2012 -0500"
      },
      "message": "NFS: Remove pNFS bloat from the generic write path\n\nWe have no business doing any this in the standard write release path.\nGet rid of it, and put it in the pNFS layer.\n\nAlso, while we\u0027re at it, get rid of the completely bogus unlock/relock\nsemantics that were present in nfs_writeback_release_full(). It is\nnot only unnecessary, but actually dangerous to release the write lock\njust in order to take it again in nfs_page_async_flush(). Better just\nto open code the pgio operations in a pnfs helper.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "2b72c9ccd22c4a3299e5a358dcd639fb253730f4",
      "tree": "d7d01bf3cf5b4d7a460c50b7f5432aaa4b32b9db",
      "parents": [
        "6f276e49fd108362be3fd67154aaaacf872ea026"
      ],
      "author": {
        "name": "Rakib Mullick",
        "email": "rakib.mullick@gmail.com",
        "time": "Tue Nov 01 12:23:42 2011 +0600"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Nov 02 23:50:24 2011 -0400"
      },
      "message": "nfs: Remove unused variable from write.c\n\nWhen CONFIG_NFS\u003dy and CONFIG_NFS_V3_{,V4}\u003dn we get the following warning.\n\n\tfs/nfs/write.c: In function ‘nfs_writeback_done’:\n\tfs/nfs/write.c:1246:21: warning: unused variable ‘server’\n\n Remove the variable \u0027server\u0027 to fix the above warning.\n\nSigned-off-by: Rakib Mullick \u003crakib.mullick@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "afeacc8c1f38b7bb93d4bc7b4ba04c2605061ef0",
      "tree": "e6eb248db3f932808ff2495a094e728d7d7f61e1",
      "parents": [
        "79bb1ee46ad1b76069108ca9b5467a3c14574744"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Thu May 26 16:00:52 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:30:31 2011 -0400"
      },
      "message": "fs: add export.h to files using EXPORT_SYMBOL/THIS_MODULE macros\n\nThese files were getting \u003clinux/module.h\u003e via an implicit include\npath, but we want to crush those out of existence since they cost\ntime during compiles of processing thousands of lines of headers\nfor no reason.  Give them the lightweight header that just contains\nthe EXPORT_SYMBOL infrastructure.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "fbb5a9abf0d589e9471dc93b18025b7b921d22c9",
      "tree": "0f9ad68b242159289fd57b39dddd5fb4da7ea708",
      "parents": [
        "d00c5d43866720963a265fa3129f3203cac35b8e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Oct 19 12:17:29 2011 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Oct 19 13:58:37 2011 -0700"
      },
      "message": "NFS: Get rid of unnecessary calls to ClearPageError() in read code\n\nThe generic file read code does that for us anyway.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d00c5d43866720963a265fa3129f3203cac35b8e",
      "tree": "0121c93156007c7764a818cc70b6864614e40536",
      "parents": [
        "b8ef70639b609c5d12c618f1d9ffae6ac13aebe3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Oct 19 12:17:29 2011 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Oct 19 13:58:30 2011 -0700"
      },
      "message": "NFS: Get rid of nfs_restart_rpc()\n\nIt can trivially be replaced with rpc_restart_call_prepare.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a9a4a87a5942e9271523197a90aaa82349c818fb",
      "tree": "88001fc58944798ff41d36a08ccf2bdace2cda6e",
      "parents": [
        "919066d690541f4bd727b0e0fc2f7a20a7e3b3a7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 17 16:08:46 2011 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 09:14:34 2011 -0700"
      },
      "message": "NFS: Use the inode-\u003ei_version to cache NFSv4 change attribute information\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8ce160c5ef06cc89c2b6b26bfa5ef7a5ce2c93e0",
      "tree": "3f9bc67bba0f7cac91677759ed0eceefbf74984e",
      "parents": [
        "1b0ae068779874f54b55aac3a2a992bcf3f2c3c4"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Thu Sep 22 21:50:14 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 09:08:13 2011 -0700"
      },
      "message": "pnfs: recoalesce when ld write pagelist fails\n\nFor pnfs pagelist write failure, we need to pg_recoalesce and resend IO to\nmds.\n\nSigned-off-by: Peng Tao \u003cpeng_tao@emc.com\u003e\nSigned-off-by: Jim Rees \u003crees@umich.edu\u003e\nCc: stable@kernel.org [3.0]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2da956523526e440ef4f4dd174e26f5ac06fe011",
      "tree": "718d8edd26d3eb59727dea97075ff59ba4d068fa",
      "parents": [
        "b9dd3abbbc708da5e3c53424a5b2c66ab580f97e"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 12 10:57:42 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 09:08:11 2011 -0700"
      },
      "message": "nfs: don\u0027t try to migrate pages with active requests\n\nnfs_find_and_lock_request will take a reference to the nfs_page and\nwill then put it if the req is already locked. It\u0027s possible though\nthat the reference will be the last one. That put then can kick off\na whole series of reference puts:\n\nnfs_page\n   nfs_open_context\n      dentry\n          inode\n\nIf the inode ends up being deleted, then the VFS will call\ntruncate_inode_pages. That function will try to take the page lock, but\nit was already locked when migrate_page was called. The code\ndeadlocks.\n\nFix this by simply refusing the migration request if PagePrivate is\nalready set, indicating that the page is already associated with an\nactive read or write request.\n\nWe\u0027ve had a customer test a backported version of this patch and\nthe preliminary results seem good.\n\nCc: stable@kernel.org\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReported-by: Harshula Jayasuriya \u003charshula@redhat.com\u003e\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3236c3e1adc0c7ec83eaff1de2d06746b7c5bb28",
      "tree": "56f360348d301c7f238a7bac464440f84930e293",
      "parents": [
        "59b7c05fffba030e5d9e72324691e2f99aa69b79"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Oct 11 09:49:21 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 09:08:10 2011 -0700"
      },
      "message": "nfs: don\u0027t redirty inode when ncommit \u003d\u003d 0 in nfs_commit_unstable_pages\n\ncommit 420e3646 allowed the kernel to reduce the number of unnecessary\ncommit calls by skipping the commit when there are a large number of\noutstanding pages.\n\nHowever, the current test in nfs_commit_unstable_pages does not handle\nthe edge condition properly. When ncommit \u003d\u003d 0, then that means that the\nkernel doesn\u0027t need to do anything more for the inode. The current test\nthough in the WB_SYNC_NONE case will return true, and the inode will end\nup being marked dirty. Once that happens the inode will never be clean\nuntil there\u0027s a WB_SYNC_ALL flush.\n\nFix this by immediately returning from nfs_commit_unstable_pages when\nncommit \u003d\u003d 0.\n\nMike noticed this problem initially in RHEL5 (2.6.18-based kernel) which\nhas a backported version of 420e3646. The inode cache there was growing\nvery large. The inode cache was unable to be shrunk since the inodes\nwere all marked dirty. Calling sync() would essentially \"fix\" the\nproblem -- the WB_SYNC_ALL flush would result in the inodes all being\nmarked clean.\n\nWhat I\u0027m not clear on is how big a problem this is in mainline kernels\nas the writeback code there is very different. Either way, it seems\nincorrect to re-mark the inode dirty in this case.\n\nReported-by: Mike McLean \u003cmikem@redhat.com\u003e\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nCc: stable@kernel.org [2.6.34+]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "59b7c05fffba030e5d9e72324691e2f99aa69b79",
      "tree": "20736d2dede2244fa76413302db0d89c43b8ee70",
      "parents": [
        "899e3ee404961a90b828ad527573aaaac39f0ab1"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Oct 17 18:22:55 2011 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 18 09:08:09 2011 -0700"
      },
      "message": "Revert \"NFS: Ensure that writeback_single_inode() calls write_inode() when syncing\"\n\nThis reverts commit b80c3cb628f0ebc241b02e38dd028969fb8026a2.\n\nThe reverted commit was rendered obsolete by a VFS fix: commit\n5547e8aac6f71505d621a612de2fca0dd988b439 (writeback: Update dirty flags in\ntwo steps). We now no longer need to worry about writeback_single_inode()\nmissing our marking the inode for COMMIT in \u0027do_writepages()\u0027 call.\n\nReverting this patch, fixes a performance regression in which the inode\nwould continuously get queued to the dirty list, causing the writeback\ncode to unnecessarily try to send a COMMIT.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust\u003e\nTested-by: Simon Kirby \u003csim@hostway.ca\u003e\nCc: stable@kernel.org [2.6.35+]\n"
    },
    {
      "commit": "f13c3620a4d1123dbf032f93f350b856ef292ced",
      "tree": "b368b1d8d0174277396de2edb9bec565d300732b",
      "parents": [
        "042b60beb410caf68f576d63d6849d0f0a545eb0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Sep 12 11:47:53 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 13 17:06:57 2011 -0400"
      },
      "message": "NFS: Fix a typo in nfs_flush_multi\n\nFix a typo which causes an Oops in the RPC layer, when using wsize \u003c 4k.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nTested-by: Sricharan R \u003cr.sricharan@ti.com\u003e\n"
    },
    {
      "commit": "28890d3598c352ae065b560e0fded3e79c800ba1",
      "tree": "93267c5b29b9e81185e66a6c2e70e67dc626b63f",
      "parents": [
        "91d41fdf31f74e6e2e5f3cb018eca4200e36e202",
        "ed1e6211a0a134ff23592c6f057af982ad5dab52"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 13:23:02 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 13:23:02 2011 -0700"
      },
      "message": "Merge branch \u0027nfs-for-3.1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs\n\n* \u0027nfs-for-3.1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (44 commits)\n  NFSv4: Don\u0027t use the delegation-\u003einode in nfs_mark_return_delegation()\n  nfs: don\u0027t use d_move in nfs_async_rename_done\n  RDMA: Increasing RPCRDMA_MAX_DATA_SEGS\n  SUNRPC: Replace xprt-\u003eresend and xprt-\u003esending with a priority queue\n  SUNRPC: Allow caller of rpc_sleep_on() to select priority levels\n  SUNRPC: Support dynamic slot allocation for TCP connections\n  SUNRPC: Clean up the slot table allocation\n  SUNRPC: Initalise the struct xprt upon allocation\n  SUNRPC: Ensure that we grab the XPRT_LOCK before calling xprt_alloc_slot\n  pnfs: simplify pnfs files module autoloading\n  nfs: document nfsv4 sillyrename issues\n  NFS: Convert nfs4_set_ds_client to EXPORT_SYMBOL_GPL\n  SUNRPC: Convert the backchannel exports to EXPORT_SYMBOL_GPL\n  SUNRPC: sunrpc should not explicitly depend on NFS config options\n  NFS: Clean up - simplify the switch to read/write-through-MDS\n  NFS: Move the pnfs write code into pnfs.c\n  NFS: Move the pnfs read code into pnfs.c\n  NFS: Allow the nfs_pageio_descriptor to signal that a re-coalesce is needed\n  NFS: Use the nfs_pageio_descriptor-\u003epg_bsize in the read/write request\n  NFS: Cache rpc_ops in struct nfs_pageio_descriptor\n  ...\n"
    },
    {
      "commit": "f01ef569cddb1a8627b1c6b3a134998ad1cf4b22",
      "tree": "29ea1a0942c8549c24411e976cd6891c7e995e89",
      "parents": [
        "a93a1329271038f0e8337061d3b41b3b212a851e",
        "bcff25fc8aa47a13faff8b4b992589813f7b450a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 10:39:54 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 10:39:54 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback: (27 commits)\n  mm: properly reflect task dirty limits in dirty_exceeded logic\n  writeback: don\u0027t busy retry writeback on new/freeing inodes\n  writeback: scale IO chunk size up to half device bandwidth\n  writeback: trace global_dirty_state\n  writeback: introduce max-pause and pass-good dirty limits\n  writeback: introduce smoothed global dirty limit\n  writeback: consolidate variable names in balance_dirty_pages()\n  writeback: show bdi write bandwidth in debugfs\n  writeback: bdi write bandwidth estimation\n  writeback: account per-bdi accumulated written pages\n  writeback: make writeback_control.nr_to_write straight\n  writeback: skip tmpfs early in balance_dirty_pages_ratelimited_nr()\n  writeback: trace event writeback_queue_io\n  writeback: trace event writeback_single_inode\n  writeback: remove .nonblocking and .encountered_congestion\n  writeback: remove writeback_control.more_io\n  writeback: skip balance_dirty_pages() for in-memory fs\n  writeback: add bdi_dirty_limit() kernel-doc\n  writeback: avoid extra sync work at enqueue time\n  writeback: elevate queue_io() into wb_writeback()\n  ...\n\nFix up trivial conflicts in fs/fs-writeback.c and mm/filemap.c\n"
    },
    {
      "commit": "5f00bcb38ef9a980a33c6dbdc0044964b05f22dd",
      "tree": "3175fb9375aecb50bde1be0bf4fa8aa8155131d6",
      "parents": [
        "34006cee28f7344f9557a4be3816c7891b1bbab1",
        "b6844e8f64920cdee620157252169ba63afb0c89"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Mon Jul 25 13:59:46 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 25 14:53:52 2011 -0400"
      },
      "message": "Merge branch \u0027master\u0027 into devel and apply fixup from Stephen Rothwell:\n\nvfs/nfs: fixup for nfs_open_context change\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3d4ff43d895c50319af45eb4bf04a4618eccdf76",
      "tree": "b412cd076920a903a854a20bceed4a0ce511fd13",
      "parents": [
        "82a2c1b77ada3b81911deeb871719ec5ff77f83c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:40:12 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:44 2011 -0400"
      },
      "message": "nfs_open_context doesn\u0027t need struct path either\n\njust dentry, please...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1f9453578f059d2651aa6c6b16756627fc9f2a74",
      "tree": "05d0b81eb0c191ce0e5fd770189e1649dab3b4d9",
      "parents": [
        "dce81290eed64d24493989bb7a08f9e20495e184"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 13 15:59:57 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 15 09:12:22 2011 -0400"
      },
      "message": "NFS: Clean up - simplify the switch to read/write-through-MDS\n\nUse nfs_pageio_reset_read_mds and nfs_pageio_reset_write_mds instead of\ncompletely reinitialising the struct nfs_pageio_descriptor.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dce81290eed64d24493989bb7a08f9e20495e184",
      "tree": "eb25c828d3343196fe31d95da2d7d743692fa71e",
      "parents": [
        "493292ddc78d18ee2ad2d5c24c2b7dd6a24641d2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jul 13 15:59:19 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 15 09:12:22 2011 -0400"
      },
      "message": "NFS: Move the pnfs write code into pnfs.c\n\n...and ensure that we recoalese to take into account differences in\ndifferences in block sizes when falling back to write through the MDS.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d097971d8ab4042eaa4bff98698ae9cc55942327",
      "tree": "cf8e4d1c7d7e93e7061b5adde0e589ab63345a76",
      "parents": [
        "50828d7e6767a92726708bc0666e2b8b84575808"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 12 13:42:02 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 15 09:12:20 2011 -0400"
      },
      "message": "NFS: Use the nfs_pageio_descriptor-\u003epg_bsize in the read/write request\n\nInstead of looking up the rsize and wsize, the routines that generate the\nRPC requests should really be using the pg_bsize, since that is what we\nuse when deciding whether or not to coalesce write requests...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "50828d7e6767a92726708bc0666e2b8b84575808",
      "tree": "80f4a2fd19eb0cf232b6d5232eec28a45230c8e6",
      "parents": [
        "275acaafd45fbc8ecc3beabd6367e60b3049606a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 12 13:42:02 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 15 09:12:20 2011 -0400"
      },
      "message": "NFS: Cache rpc_ops in struct nfs_pageio_descriptor\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "275acaafd45fbc8ecc3beabd6367e60b3049606a",
      "tree": "7da9d9a606c274742d41860cb429c7d25a917f1d",
      "parents": [
        "3b6091846d5b6113d695c79caec7cc96b62d469b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 12 13:42:02 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 15 09:12:17 2011 -0400"
      },
      "message": "NFS: Clean up: split out the RPC transmission from nfs_pagein_multi/one\n\n...and do the same for nfs_flush_multi/one.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3b6091846d5b6113d695c79caec7cc96b62d469b",
      "tree": "ab842567b2afacfe019408277de88f97bf000562",
      "parents": [
        "6e4efd568574221840ee8dd86f176dc977c1330c"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Fri Jul 15 03:33:42 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 15 09:11:28 2011 -0400"
      },
      "message": "NFS: fix return value of nfs_pagein_one/nfs_flush_one\n\nSigned-off-by: Peng Tao \u003cpeng_tao@emc.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6e4efd568574221840ee8dd86f176dc977c1330c",
      "tree": "b43afc1ae5400bbadbc122d2bfb5a69b3a26e7f8",
      "parents": [
        "87ed5eb44ad9338b1617a0e78dea81d681325298"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 12 13:42:02 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 12 13:42:02 2011 -0400"
      },
      "message": "NFS: Clean up nfs_read_rpcsetup and nfs_write_rpcsetup\n\nSplit them up into two parts: one which sets up the struct nfs_read/write_data,\nthe other which sets up the actual RPC call or pNFS call.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "87ed5eb44ad9338b1617a0e78dea81d681325298",
      "tree": "17570d0d4cab601d13efad77d5aaaa02a8433dab",
      "parents": [
        "c47abcf8ff4d0c56d20ce541e80d3e1c975f54b5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 12 13:42:01 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 12 13:42:01 2011 -0400"
      },
      "message": "NFS: Don\u0027t use DATA_SYNC writes\n\nIf we\u0027re writing back data, and the FLUSH_STABLE flag is set, then we\nalways want to use NFS_FILE_SYNC, since we\u0027re always in a situation where\nwe\u0027re doing page reclaim, and so we want to free up the page as quickly\nas possible.\n\nIf we\u0027re in the FLUSH_COND_STABLE case, then we either want to use another\nunstable write (if we have to do a commit anyway) or again, we want to\nuse NFS_FILE_SYNC because we know that we have no more pages to write\nout.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7c24d9489fe57d67cb56c6bdad58d89806e7fd97",
      "tree": "4df86fc0437ac2ed2c90123060d4676422fbd95e",
      "parents": [
        "47cb498e9316314e7e681f417135589195ad78a7"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Mon Jun 13 18:22:38 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 12 13:40:28 2011 -0400"
      },
      "message": "NFSv4.1: File layout only supports whole file layouts\n\nAsk for whole file layouts. Until support for layout segments is fully\nsupported in the file layout code, discard non-whole file layouts.\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": "e885de1a5bc9f46ef8f934c5a7602c89d2d51e8d",
      "tree": "fec97da658ce241c055f5fc8bb7e2e84ee1cc259",
      "parents": [
        "d8007d4dd6ff8749cc8a4063c3ec87442db76d82"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 10 13:30:23 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 12 13:40:28 2011 -0400"
      },
      "message": "NFSv4.1: Fall back to ordinary i/o through the mds if we have no layout segment\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d8007d4dd6ff8749cc8a4063c3ec87442db76d82",
      "tree": "f778176d24666f2e2c7cd7ef4dc5917aa11cc207",
      "parents": [
        "1751c3638f2a07a8c66a803a31791bab9bd3fced"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 10 13:30:23 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 12 13:40:28 2011 -0400"
      },
      "message": "NFSv4.1: Add an initialisation callback for pNFS\n\nEnsure that we always get a layout before setting up the i/o request.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1751c3638f2a07a8c66a803a31791bab9bd3fced",
      "tree": "5c1f39f879c0a0049c50b4f36a256ba1986d82b2",
      "parents": [
        "f062eb6ced3b297277b94b4da3113b1d3782e539"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 10 13:30:23 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 12 13:40:28 2011 -0400"
      },
      "message": "NFS: Cleanup of the nfs_pageio code in preparation for a pnfs bugfix\n\nWe need to ensure that the layouts are set up before we can decide to\ncoalesce requests. To do so, we want to further split up the struct\nnfs_pageio_descriptor operations into an initialisation callback, a\ncoalescing test callback, and a \u0027do i/o\u0027 callback.\n\nThis patch cleans up the existing callback methods before adding the\n\u0027initialisation\u0027 callback.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2bea038c52e88badbbd5b420c1de918f7f2579e9",
      "tree": "84e3c8533b493f0c4cc64e27e37ffb96d81a4521",
      "parents": [
        "b0af8dfdd67699e25083478c63eedef2e72ebd85"
      ],
      "author": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Thu Jun 16 11:35:46 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 28 14:12:11 2011 -0400"
      },
      "message": "pnfs: write: Set mds_offset in the generic layer - it is needed by all LDs\n\nIn current pnfs tree, all the layouts set mds_offset in their\n.write_pagelist member.\nmds_offset is only used by generic layer and should be handled by it.\n\nThis patch is for upstream. It is needed in this -rc series to fix a\nbug in objects layout_commit.\n\nI\u0027ll send patches for objects and blocks to be\nsquashed into current pnfs tree.\n\nTODO: It looks like the read path needs the same patch.\n\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "846d5a091b0506b75489577cde27f39b37a192a4",
      "tree": "739bd1e28f86d4620b55401d0cc4b5ab4e44eb91",
      "parents": [
        "b7a2441f9966fe3e1be960a876ab52e6029ea005"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Thu May 05 21:10:38 2011 -0600"
      },
      "committer": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Jun 08 08:25:23 2011 +0800"
      },
      "message": "writeback: remove .nonblocking and .encountered_congestion\n\nRemove two unused struct writeback_control fields:\n\n\t.encountered_congestion\t(completely unused)\n\t.nonblocking\t\t(never set, checked/showed in XFS,NFS/btrfs)\n\nThe .for_background check in nfs_write_inode() is also removed btw,\nas .for_background implies WB_SYNC_NONE.\n\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nProposed-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "dfed206b8857d41a91ebba030f99e30017a44dda",
      "tree": "ac4c161b548e872e92da36499a2e8c28f5a34aeb",
      "parents": [
        "a0fe8bf427f4987d7b82678292ca03cfd7331467"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed May 25 20:25:22 2011 +0300"
      },
      "committer": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Sun May 29 20:56:43 2011 +0300"
      },
      "message": "NFSv4.1: unify pnfs_pageio_init functions\n\nUse common code for pnfs_pageio_init_{read,write} and use\na common generic pg_test function.\n\nNote that this function always assumes the the layout driver\u0027s\npg_test method is implemented.\n\n[Fix BUG]\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n"
    },
    {
      "commit": "fb3296eb4636763918edef2d22e45b85b15d4518",
      "tree": "31c85255ccfa03cbca2d1e4e52028e489276a73b",
      "parents": [
        "f7da7a129d57bfe0f74573dc03531c63e1360fae"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Sun May 22 19:47:26 2011 +0300"
      },
      "committer": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Sun May 29 20:52:32 2011 +0300"
      },
      "message": "pnfs: Use byte-range for layoutget\n\nAdd offset and count parameters to pnfs_update_layout and use them to get\nthe layout in the pageio path.\n\nOrder cache layout segments in the following order:\n* offset (ascending)\n* length (descending)\n* iomode (RW before READ)\n\nTest byte range against the layout segment in use in pnfs_{read,write}_pg_test\nso not to coalesce pages not using the same layout segment.\n\n[fix lseg ordering]\n[clean up pnfs_find_lseg lseg arg]\n[remove unnecessary FIXME]\n[fix ordering in pnfs_insert_layout]\n[clean up pnfs_insert_layout]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n"
    },
    {
      "commit": "a75b9df9d3bfc3cd1083974c045ae31ce5f3434f",
      "tree": "039cc65774c895d704f23a2c89b7f1bcd736e0b9",
      "parents": [
        "2887fe45522843149ccf72e01f43813be4fb36c5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 11 18:00:51 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed May 11 22:52:13 2011 -0400"
      },
      "message": "NFSv4.1: Ensure that layoutget uses the correct gfp modes\n\nCurrently, writebacks may end up recursing back into the filesystem due to\nGFP_KERNEL direct reclaims in the pnfs subsystem.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c0d0e96b840dcc73f9b9d45bf8f405dbce72a079",
      "tree": "001b16eb41bf390bac014b4d76dc8ac91e6b4c13",
      "parents": [
        "561f0b0ad073859a87d22845ddfd9df149b22e5f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 12 12:29:15 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 12 19:34:23 2011 -0400"
      },
      "message": "NFS: Get rid of pointless test in nfs_commit_done\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4b38a6db01b09198f4045661815a0039c3d80660",
      "tree": "cf298d705d7ac00f49fc02ea5e6ea3f0a17c109e",
      "parents": [
        "160bc1604f8a33202578846c9a63e2a61105a4b7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 11 11:56:23 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 12 19:34:22 2011 -0400"
      },
      "message": "NFS: Eliminate duplicate call to nfs_mark_request_dirty\n\nWe only need to call nfs_mark_request_dirty() once in nfs_writepage_setup().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0d88f6e804c824454b5ed0d3034ed3dcf7467a87",
      "tree": "3323e2860f7bf892c889270cf936a3c4a45f3b80",
      "parents": [
        "95042f9eb78a8d9a17455e2ef263f2f310ecef15"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 12 19:18:08 2011 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 12 14:17:24 2011 -0700"
      },
      "message": "nfs: don\u0027t call __mark_inode_dirty while holding i_lock\n\nnfs_scan_commit() is called with the inode-\u003ei_lock held, but it then\ncalls __mark_inode_dirty() while still holding the lock. This causes\na deadlock.\n\nPush the inode-\u003ei_lock into nfs_scan_commit() so it can protect only\nthe parts of the code it needs to and can be dropped before the call\nto __mark_inode_dirty() to avoid the deadlock.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nTested-by: Will Simoneau \u003csimoneau@ele.uri.edu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "b608b283a962caaa280756bc8563016a71712acf"
}
