)]}'
{
  "log": [
    {
      "commit": "3110ff8048fb757b36112b044b384aea9c44d6e4",
      "tree": "5260f4973bd0848ddef3fb3c111386e59616abbc",
      "parents": [
        "46c8ac74250a396aca855e494f49a960797a6b5e"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri May 02 13:42:44 2008 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 16 09:43:29 2008 -0700"
      },
      "message": "nfs: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dbae4c73f08b8a7980cc912954ade3d4c1fb6147",
      "tree": "8a1ddd0b9df5ae7e919a235e9c765266d68a0e3f",
      "parents": [
        "c9d8f89d9816c1d16ada492aa547a4d692508c0d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 14 14:54:53 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:53:08 2008 -0400"
      },
      "message": "NFS: Ensure that rpc_run_task() errors are propagated back to the caller\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fdd1e74c89fe39259a29c494209abad63ff76f82",
      "tree": "7ec3708b7b7badeb20f705cf865afbb9c63b5406",
      "parents": [
        "73e3302f60c0e11a0db0b34b903f591139c4f937"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 15 16:33:58 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Apr 19 16:53:01 2008 -0400"
      },
      "message": "NFS: Ensure that the read code cleans up properly when rpc_run_task() fails\n\nIn the case of readpage() we need to ensure that the pages get unlocked,\nand that the error is flagged.\n\nIn the case of O_DIRECT, we need to ensure that the pages are all released.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4af68bffac444a23f027e18ff244101e63b79227",
      "tree": "b420ed303d851933af8338608500cb2e284f3789",
      "parents": [
        "6d884e8fc8114dc8877218f06a9a9a1d801901e4"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@citi.umich.edu",
        "time": "Wed Mar 19 11:54:04 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 17:59:59 2008 -0400"
      },
      "message": "nfs: remove duplicate initializations of nfs_read_data field\n\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c7c350e92aab1bba68f26a6027b734adcf9824ba",
      "tree": "aa99bd94c3049dd871d9c030d70a5f3d87591a95",
      "parents": [
        "2f42b5d043ee271d1e5d30ecd77186b6c4d4e534",
        "f8512ad0da16cbe156f3a7627971cdf0b39c4138"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 17:59:44 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 17:59:44 2008 -0400"
      },
      "message": "Merge branch \u0027hotfixes\u0027 into devel\n"
    },
    {
      "commit": "f8512ad0da16cbe156f3a7627971cdf0b39c4138",
      "tree": "2658c63faeda07505793ccc747ee4efbffdaa69c",
      "parents": [
        "264e3e889d86e552b4191d69bb60f4f3b383135a"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@citi.umich.edu",
        "time": "Wed Mar 19 11:24:39 2008 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 19 17:59:02 2008 -0400"
      },
      "message": "nfs: don\u0027t ignore return value from nfs_pageio_add_request\n\nIgnoring the return value from nfs_pageio_add_request can cause deadlocks.\n\nIn read path:\n  call nfs_pageio_add_request from readpage_async_filler\n  assume at this point that there are requests already in desc, that\n    can\u0027t be merged with the current request.\n  so nfs_pageio_doio is fired up to clear out desc.\n  assume something goes wrong in setting up the io, so desc-\u003epg_error is set.\n  This causes nfs_pageio_add_request to return 0, *WITHOUT* adding the original\n    request.\n  BUT, since return code is ignored, readpage_async_filler assumes it has\n    been added, and does nothing further, leaving page locked.\n  do_generic_mapping_read will eventually call lock_page, resulting in deadlock\n\nIn write path:\n  page is marked dirty by generic_perform_write\n  nfs_writepages is called\n  call nfs_pageio_add_request from nfs_page_async_flush\n  assume at this point that there are requests already in desc, that\n    can\u0027t be merged with the current request.\n  so nfs_pageio_doio is fired up to clear out desc.\n  assume something goes wrong in setting up the io, so desc-\u003epg_error is set.\n  This causes nfs_page_async_flush to return 0, *WITHOUT* adding the original\n    request, yet marking the request as locked (PG_BUSY) and in writeback,\n    clearing dirty marks.\n  The next time a write is done to the page, deadlock will result as\n    nfs_write_end calls nfs_update_request\n\nSigned-off-by: Fred Isaman \u003ciisaman@citi.umich.edu\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5e4424af9a1f062c6451681dff24a26e27741cc6",
      "tree": "fcba54a8fc2d94c1d691ab5b8b956ac71b5cb8d4",
      "parents": [
        "ff2d7db848f8db7cade39e55f78f86d77e0de01a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:53:49 2008 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Feb 28 23:26:28 2008 -0800"
      },
      "message": "SUNRPC: Remove now-redundant RCU-safe rpc_task free path\n\nNow that we\u0027ve tightened up the locking rules for RPC queue wakeups, we can\nremove the RCU-safe kfree calls...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "101070ca2fe67186f5f5517b66cb4757b17f4e29",
      "tree": "b131c97e3033fc4c848e8cb3d76f675735b95085",
      "parents": [
        "5746006f1d17d9d5a3015051ea54de4341cb31f9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 19 20:04:23 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:40:37 2008 -0800"
      },
      "message": "NFS: Ensure that the asynchronous RPC calls complete on nfsiod.\n\nWe want to ensure that rpc_call_ops that involve mntput() are run on nfsiod\nrather than on rpciod, so that they don\u0027t deadlock when the resulting\numount calls rpc_shutdown_client(). Hence we specify that read, write and\ncommit calls must complete on nfsiod.\nDitto for NFSv4 open, lock, locku and close asynchronous calls.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "383ba71938519959be8e0b598ec658f0c211ff45",
      "tree": "01eb0155676fe69d40f01dc137ea3be952d88997",
      "parents": [
        "4b5621f6b127bce9218998c187bd25bf7f9fc371"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Feb 19 20:04:20 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 25 21:40:33 2008 -0800"
      },
      "message": "NFS: Fix a deadlock with lazy umount\n\nWe can\u0027t allow rpc callback functions like task-\u003etk_ops-\u003erpc_call_prepare()\nand task-\u003etk_ops-\u003erpc_call_done() to call mntput() in any way, since\nthat will cause a deadlock when the call to rpc_shutdown_client() attempts\nto wait on \u0027task\u0027 to complete.\n\nWe can avoid the above deadlock by moving calls to mntput to\ntask-\u003etk_ops-\u003erpc_release() callback, since at that time the task will be\nmarked as completed, and so rpc_shutdown_client won\u0027t attempt to wait on\nit.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "eebd2aa355692afaf9906f62118620f1a1c19dbb",
      "tree": "207eead3a736963c3e50942038c463f2f611ccce",
      "parents": [
        "b98348bdd08dc4ec11828aa98a78edde15c53cfa"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:13 2008 -0800"
      },
      "message": "Pagecache zeroing: zero_user_segment, zero_user_segments and zero_user\n\nSimplify page cache zeroing of segments of pages through 3 functions\n\nzero_user_segments(page, start1, end1, start2, end2)\n\n        Zeros two segments of the page. It takes the position where to\n        start and end the zeroing which avoids length calculations and\n\tmakes code clearer.\n\nzero_user_segment(page, start, end)\n\n        Same for a single segment.\n\nzero_user(page, start, length)\n\n        Length variant for the case where we know the length.\n\nWe remove the zero_user_page macro. Issues:\n\n1. Its a macro. Inline functions are preferable.\n\n2. The KM_USER0 macro is only defined for HIGHMEM.\n\n   Having to treat this special case everywhere makes the\n   code needlessly complex. The parameter for zeroing is always\n   KM_USER0 except in one single case that we open code.\n\nAvoiding KM_USER0 makes a lot of code not having to be dealing\nwith the special casing for HIGHMEM anymore. Dealing with\nkmap is only necessary for HIGHMEM configurations. In those\nconfigurations we use KM_USER0 like we do for a series of other\nfunctions defined in highmem.h.\n\nSince KM_USER0 is depends on HIGHMEM the existing zero_user_page\nfunction could not be a macro. zero_user_* functions introduced\nhere can be be inline because that constant is not used when these\nfunctions are called.\n\nAlso extract the flushing of the caches to be outside of the kmap.\n\n[akpm@linux-foundation.org: fix nfs and ntfs build]\n[akpm@linux-foundation.org: fix ntfs build some more]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3a10c30acc4821ca000b52ed0edafd0d3bf26a52",
      "tree": "535fe870e12f9a032112b16d4e31fe1d813ea2c3",
      "parents": [
        "fc6014771bde8a215a9a4ea24b45f76afeb3c922"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Jan 23 08:58:59 2008 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:06:11 2008 -0500"
      },
      "message": "nfs: obliterate NFS_FLAGS macro\n\nuse NFS_I(inode)-\u003eflags instead\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0773769191d943358a8392fa86abd756d004c4b6",
      "tree": "2eeba848f7c1e6ba90696190f05db26c2f31655e",
      "parents": [
        "e8f5d77c8029ff8f5dcd1dfc133aac0bbbffd92b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 25 18:42:54 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:39 2008 -0500"
      },
      "message": "NFS/SUNRPC: Convert users of rpc_init_task+rpc_execute to rpc_run_task()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bdc7f021f3a1fade77adf3c2d7f65690566fddfe",
      "tree": "c076431ac83fc75cde00dc3d3a218fabae449980",
      "parents": [
        "b3ef8b3bb93300e58a4c4806207de3de4eb76f48"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:40:00 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:32 2008 -0500"
      },
      "message": "NFS: Clean up the (commit|read|write)_setup() callback routines\n\nMove the common code for setting up the nfs_write_data and nfs_read_data\nstructures into fs/nfs/read.c, fs/nfs/write.c and fs/nfs/direct.c.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3ff7576ddac06c3d07089e241b40826d24bbf1ac",
      "tree": "7f5998434b7d0dd1f08ff7ee65c93fab4861a6d3",
      "parents": [
        "c970aa85e71bd581726c42df843f6f129db275ac"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:40:00 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:30 2008 -0500"
      },
      "message": "SUNRPC: Clean up the initialisation of priority queue scheduling info.\n\nWe want the default scheduling priority (priority \u003d\u003d 0) to remain\nRPC_PRIORITY_NORMAL.\n\nAlso ensure that the priority wait queue scheduling is per process id\ninstead of sometimes being per thread, and sometimes being per inode.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "84115e1cd4a3614c4e566d4cce31381dce3dbef9",
      "tree": "01b2de7163deb6b3a789811183d8b8c1329b900c",
      "parents": [
        "e8914c65f7f8d4e8701b8e78a12b714872ea0402"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 14 15:39:59 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 30 02:05:30 2008 -0500"
      },
      "message": "SUNRPC: Cleanup of rpc_task initialisation\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8850df999cd16aa141098e2e8be04a590276f3cc",
      "tree": "de5d934bff3ae6595dcfcf6d725dd991bb242f21",
      "parents": [
        "c4812998398d9cbce8646494704c52297359ede0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 28 17:20:07 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:19:06 2007 -0400"
      },
      "message": "NFS: Fix atime revalidation in read()\n\nNFSv3 will correctly update atime on a read() call, so there is no need to\nset the NFS_INO_INVALID_ATIME flag unless the call to nfs_refresh_inode()\nfails.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd3758e37ddea66fccca7d93c4b601e8a2e51926",
      "tree": "07566d3ee457524a97b534a4f214b9178b1278c8",
      "parents": [
        "c03025d55540bd648f2546659090140ecc835572"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Aug 10 17:44:32 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Oct 09 17:18:31 2007 -0400"
      },
      "message": "NFS: Replace file-\u003eprivate_data with calls to nfs_file_open_context()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "88be9f990fe70f0f177ef44a16a477599e91f825",
      "tree": "d48ed0c934fc20dc3f7cacfc3b1eca3058246b65",
      "parents": [
        "de05a0cc2a2ae16eb8d8dbf88fe728ace45beb9a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jun 05 10:42:27 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:23 2007 -0400"
      },
      "message": "NFS: Replace vfsmount and dentry in nfs_open_context with struct path\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "de05a0cc2a2ae16eb8d8dbf88fe728ace45beb9a",
      "tree": "363a6afc01a935d9e34b3559235687f8fec4d512",
      "parents": [
        "44dd151d5c21234cc534c47d7382f5c28c3143cd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun May 20 13:05:05 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 10 23:40:23 2007 -0400"
      },
      "message": "NFS: Minor read optimisation...\n\nSince PG_uptodate may now end up getting set during the call to\nnfs_wb_page(), we can avoid putting a read request on the wire in those\nsituations.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "60945cb7c8377b727288275f21791914fe65311c",
      "tree": "eb84b18a1e590d3c56b3779b4e1d071b21fca2bc",
      "parents": [
        "550facd138d8f6b0ca683c1e894b5cd0f381cb63"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Thu May 10 22:55:08 2007 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon May 14 19:33:45 2007 -0400"
      },
      "message": "NFS: use zero_user_page\n\nUse zero_user_page() instead of the newly deprecated memclear_highpage_flush().\n\nSigned-off-by: Nate Diller \u003cnate.diller@gmail.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8d5658c949e6d89edc579a1f112aeee3bc232a8e",
      "tree": "f206d3f6809eeb0ca23c1999cf79aa294968b113",
      "parents": [
        "c63c7b051395368573779c8309aa5c990dcf2f96"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Apr 10 09:26:35 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:07 2007 -0700"
      },
      "message": "NFS: Fix a buffer overflow in the allocation of struct nfs_read/writedata\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8b09bee3083897e375bd0bf9d60f48daedfab3e0",
      "tree": "5122ee611fc46799660db63442107e5677234266",
      "parents": [
        "bcb71bba7e64f0442d0ca339d7d3117a7060589f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 02 18:48:28 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:05 2007 -0700"
      },
      "message": "NFS: Cleanup for nfs_readpages()\n\nDo the coalescing of read requests into block sized requests at start of\nI/O as we scan through the pages instead of going through a second pass.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bcb71bba7e64f0442d0ca339d7d3117a7060589f",
      "tree": "072e9a28395eee87e539a48553b20fa9cb768e94",
      "parents": [
        "d8a5ad75cc4d577987964e37a4c43b1c648c201e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 02 18:48:28 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:04 2007 -0700"
      },
      "message": "NFS: Another cleanup of the read/write request coalescing code\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d8a5ad75cc4d577987964e37a4c43b1c648c201e",
      "tree": "91604bf17f7a81cc60a214426c7ddca89bf4faee",
      "parents": [
        "91e59c368c6ba5eed0369a085c42c9f270b97aa8"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 02 18:48:28 2007 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Apr 30 22:17:04 2007 -0700"
      },
      "message": "NFS: Cleanup the coalescing code\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a3f565b1e530a756472401835107d08fd291f242",
      "tree": "84a15e4810f63689e3f85bbbc6497ee41934705e",
      "parents": [
        "4dc2eaecd4cf0687727e418540bccf956a62ebcf"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jan 31 12:14:01 2007 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:09 2007 -0800"
      },
      "message": "NFS: fix print format for tk_pid\n\nThe tk_pid field is an unsigned short.  The proper print format specifier for\nthat type is %5u, not %4d.\n\nAlso clean up some miscellaneous print formatting nits.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8e0969f0451eaf7cf32f2ec3946196d8d0b1cb2c",
      "tree": "66f3e1ca0761d77e21ac3d24bacc1574189cfc64",
      "parents": [
        "c228fd3aeef55637354167faead74c579d5da28b"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 13 15:23:44 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Feb 03 15:35:06 2007 -0800"
      },
      "message": "NFS: Remove nfs_readpage_sync()\n\nIt makes no sense to maintain 2 parallel systems for reading in pages.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "21b4e736922f546e0f1aa7b9d6c442f309a2444a",
      "tree": "e1be8645297f8ebe87445251743ebcc52081a20d",
      "parents": [
        "34161db6b14d984fb9b06c735b7b42f8803f6851",
        "68380b581383c028830f79ec2670f4a193854aa6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 07 16:35:17 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 07 16:35:17 2006 -0500"
      },
      "message": "Merge branch \u0027master\u0027 of /home/trondmy/kernel/linux-2.6/ into merge_linus\n"
    },
    {
      "commit": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e6b4f8da3a88457148038bc952043e99a7fdba64",
      "tree": "858c2a0e04b442395e7ecd0f60c8d2a3304b83e1",
      "parents": [
        "55acbda0965ca0a29b0ca276e7d17a55edc11d1b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:14 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:23 2006 -0800"
      },
      "message": "[PATCH] slab: remove SLAB_NOFS\n\nSLAB_NOFS is an alias of GFP_NOFS.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "49a70f278658894d2899824cd4037095fb6711fe",
      "tree": "8fc0e55be04a421ee9091a989c30807d891d7930",
      "parents": [
        "277459d2e2cd40594967757e8fd016c4c7016614"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Dec 05 00:35:38 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:36 2006 -0500"
      },
      "message": "NFS: Cleanup: add common helper nfs_page_length()\n\nClean up a lot of ad-hoc page length calculations in fs/nfs/write.c\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a99b71c9c43499bf2312c64f5c1d367aaf559dc4",
      "tree": "a9fa03a8dcee03c6f05bd286be368396176b13db",
      "parents": [
        "6d5fcb5a52bfd00eab3ba2c7ca890823388436ae"
      ],
      "author": {
        "name": "Frank Filz",
        "email": "ffilzlnx@us.ibm.com",
        "time": "Tue Oct 17 10:24:36 2006 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:30 2006 -0500"
      },
      "message": "NFS: Remove use of the Big Kernel Lock around calls to rpc_execute.\n\nRemove use of the Big Kernel Lock around calls to rpc_execute.\n\nSigned-off-by: Frank Filz \u003cffilz@us.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cf1308ff7829017dab0dbcc817c63dc9c212923e",
      "tree": "9ceec966f682c4674ac45d1ef15d52c3a1f9d737",
      "parents": [
        "0b67130149b006628389ff3e8f46be9957af98aa"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Nov 19 16:44:52 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:27 2006 -0500"
      },
      "message": "NFS: Fix missing page_unlock() in nfs_readpage\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0b67130149b006628389ff3e8f46be9957af98aa",
      "tree": "d91191f883fad795a99396ba18d740ebc3594ca8",
      "parents": [
        "46b9f8e1484352f09f229107ba2a758fe386d7f7"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Nov 14 16:12:23 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:27 2006 -0500"
      },
      "message": "NFS: Fix asynchronous read error handling\n\nWe must always call -\u003eread_done() before we truncate the page data, or\ndecide to flag an error. The reasons are that\n\tin NFSv2, -\u003eread_done() is where the eof flag gets set.\n\tin NFSv3/v4 -\u003eread_done() handles EJUKEBOX-type errors, and\n\t\t  v4 state recovery.\n\nHowever, we need to mark the pages as uptodate before we deal with short\nread errors, since we may need to modify the nfs_read_data arguments.\n\nWe therefore split the current nfs_readpage_result() into two parts:\nnfs_readpage_result(), which calls -\u003eread_done() etc, and\nnfs_readpage_retry(), which subsequently handles short reads.\n\nNote: Removing the code that retries in case of a short read also fixes a\nbug in nfs_direct_read_result(), which used to return a corrupted number of\nbytes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8aca67f0ae2d8811165c22326825a645cc8e1b48",
      "tree": "19e82f4bc7b4f865a9dcf4744e7c224ea517ba10",
      "parents": [
        "e6b3c4db6fbcd0d33720696f37790d6b8be12313"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Nov 13 16:23:44 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 06 10:46:26 2006 -0500"
      },
      "message": "SUNRPC: Fix a potential race in rpc_wake_up_task()\n\nUse RCU to ensure that we can safely call rpc_finish_wakeup after we\u0027ve\ncalled __rpc_do_wake_up_task. If not, there is a theoretical race, in which\nthe rpc_task finishes executing, and gets freed first.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1a1d92c10dd24bbdc28b3d6e2d03ec199dd3a65b",
      "tree": "fade83955f75e718e39153d6f81d221403338bed",
      "parents": [
        "f52720ca5f48574e347dff35ffe6b389ace61537"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Sep 27 01:49:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:10 2006 -0700"
      },
      "message": "[PATCH] Really ignore kmem_cache_destroy return value\n\n* Rougly half of callers already do it by not checking return value\n* Code in drivers/acpi/osl.c does the following to be sure:\n\n\t(void)kmem_cache_destroy(cache);\n\n* Those who check it printk something, however, slab_error already printed\n  the name of failed cache.\n* XFS BUGs on failed kmem_cache_destroy which is not the decision\n  low-level filesystem driver should make. Converted to ignore.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5f004cf2aa8494708fd8d78e78142b7b2748e765",
      "tree": "c4f10f43217737e08d68167e1866ef5b305ac571",
      "parents": [
        "2dec51466a08ac1c67da41bfd0518d43d983a2eb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 14 14:03:14 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:25:02 2006 -0400"
      },
      "message": "NFS: Make read() return an ESTALE if the file has been deleted\n\nCurrently, a read() request will return EIO even if the file has been\ndeleted on the server, simply because that is what the VM will return\nif the call to readpage() fails to update the page.\n\nEnsure that readpage() marks the inode as stale if it receives an ESTALE.\nThen return that error to userland.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "54ceac4515986030c2502960be620198dd8fe25b",
      "tree": "b4ae4305c5652c0fe883ef5ea3243da91dbd2b34",
      "parents": [
        "cf6d7b5de8535a9f0088c5cc28ee2dae87371b4a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:13 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:37 2006 -0400"
      },
      "message": "NFS: Share NFS superblocks per-protocol per-server per-FSID\n\nThe attached patch makes NFS share superblocks between mounts from the same\nserver and FSID over the same protocol.\n\nIt does this by creating each superblock with a false root and returning the\nreal root dentry in the vfsmount presented by get_sb(). The root dentry set\nstarts off as an anonymous dentry if we don\u0027t already have the dentry for its\ninode, otherwise it simply returns the dentry we already have.\n\nWe may thus end up with several trees of dentries in the superblock, and if at\nsome later point one of anonymous tree roots is discovered by normal filesystem\nactivity to be located in another tree within the superblock, the anonymous\nroot is named and materialises attached to the second tree at the appropriate\npoint.\n\nWhy do it this way? Why not pass an extra argument to the mount() syscall to\nindicate the subpath and then pathwalk from the server root to the desired\ndirectory? You can\u0027t guarantee this will work for two reasons:\n\n (1) The root and intervening nodes may not be accessible to the client.\n\n     With NFS2 and NFS3, for instance, mountd is called on the server to get\n     the filehandle for the tip of a path. mountd won\u0027t give us handles for\n     anything we don\u0027t have permission to access, and so we can\u0027t set up NFS\n     inodes for such nodes, and so can\u0027t easily set up dentries (we\u0027d have to\n     have ghost inodes or something).\n\n     With this patch we don\u0027t actually create dentries until we get handles\n     from the server that we can use to set up their inodes, and we don\u0027t\n     actually bind them into the tree until we know for sure where they go.\n\n (2) Inaccessible symbolic links.\n\n     If we\u0027re asked to mount two exports from the server, eg:\n\n\tmount warthog:/warthog/aaa/xxx /mmm\n\tmount warthog:/warthog/bbb/yyy /nnn\n\n     We may not be able to access anything nearer the root than xxx and yyy,\n     but we may find out later that /mmm/www/yyy, say, is actually the same\n     directory as the one mounted on /nnn. What we might then find out, for\n     example, is that /warthog/bbb was actually a symbolic link to\n     /warthog/aaa/xxx/www, but we can\u0027t actually determine that by talking to\n     the server until /warthog is made available by NFS.\n\n     This would lead to having constructed an errneous dentry tree which we\n     can\u0027t easily fix. We can end up with a dentry marked as a directory when\n     it should actually be a symlink, or we could end up with an apparently\n     hardlinked directory.\n\n     With this patch we need not make assumptions about the type of a dentry\n     for which we can\u0027t retrieve information, nor need we assume we know its\n     place in the grand scheme of things until we actually see that place.\n\nThis patch reduces the possibility of aliasing in the inode and page caches for\ninodes that may be accessed by more than one NFS export. It also reduces the\nnumber of superblocks required for NFS where there are many NFS exports being\nused from a server (home directory server + autofs for example).\n\nThis in turn makes it simpler to do local caching of network filesystems, as it\ncan then be guaranteed that there won\u0027t be links from multiple inodes in\nseparate superblocks to the same cache file.\n\nObviously, cache aliasing between different levels of NFS protocol could still\nbe a problem, but at least that gives us another key to use when indexing the\ncache.\n\nThis patch makes the following changes:\n\n (1) The server record construction/destruction has been abstracted out into\n     its own set of functions to make things easier to get right.  These have\n     been moved into fs/nfs/client.c.\n\n     All the code in fs/nfs/client.c has to do with the management of\n     connections to servers, and doesn\u0027t touch superblocks in any way; the\n     remaining code in fs/nfs/super.c has to do with VFS superblock management.\n\n (2) The sequence of events undertaken by NFS mount is now reordered:\n\n     (a) A volume representation (struct nfs_server) is allocated.\n\n     (b) A server representation (struct nfs_client) is acquired.  This may be\n     \t allocated or shared, and is keyed on server address, port and NFS\n     \t version.\n\n     (c) If allocated, the client representation is initialised.  The state\n     \t member variable of nfs_client is used to prevent a race during\n     \t initialisation from two mounts.\n\n     (d) For NFS4 a simple pathwalk is performed, walking from FH to FH to find\n     \t the root filehandle for the mount (fs/nfs/getroot.c).  For NFS2/3 we\n     \t are given the root FH in advance.\n\n     (e) The volume FSID is probed for on the root FH.\n\n     (f) The volume representation is initialised from the FSINFO record\n     \t retrieved on the root FH.\n\n     (g) sget() is called to acquire a superblock.  This may be allocated or\n     \t shared, keyed on client pointer and FSID.\n\n     (h) If allocated, the superblock is initialised.\n\n     (i) If the superblock is shared, then the new nfs_server record is\n     \t discarded.\n\n     (j) The root dentry for this mount is looked up from the root FH.\n\n     (k) The root dentry for this mount is assigned to the vfsmount.\n\n (3) nfs_readdir_lookup() creates dentries for each of the entries readdir()\n     returns; this function now attaches disconnected trees from alternate\n     roots that happen to be discovered attached to a directory being read (in\n     the same way nfs_lookup() is made to do for lookup ops).\n\n     The new d_materialise_unique() function is now used to do this, thus\n     permitting the whole thing to be done under one set of locks, and thus\n     avoiding any race between mount and lookup operations on the same\n     directory.\n\n (4) The client management code uses a new debug facility: NFSDBG_CLIENT which\n     is set by echoing 1024 to /proc/net/sunrpc/nfs_debug.\n\n (5) Clone mounts are now called xdev mounts.\n\n (6) Use the dentry passed to the statfs() op as the handle for retrieving fs\n     statistics rather than the root dentry of the superblock (which is now a\n     dummy).\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7a52411107e1ac8f5be6967936ec237f40a1c7e4",
      "tree": "155ba22e3d333f7e0f6cf1fcbb3d9538f75375fe",
      "parents": [
        "47a5c6fa0e204a2b63309c648bb2fde36836c826"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 15 16:03:45 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 19 11:54:39 2006 -0400"
      },
      "message": "NFS: Fix Oopsable condition in nfs_readpage_sync()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e9f7bee1df223dcf83743b46cb06c08d95497ec0",
      "tree": "67beae4733ef0286645112a52623c81c8f8a19a9",
      "parents": [
        "016eb4a0ed06a3677d67a584da901f0e9a63c666"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 08 09:48:54 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 08 10:22:51 2006 -0700"
      },
      "message": "[PATCH] NFS: large non-page-aligned direct I/O clobbers memory\n\nThe logic in nfs_direct_read_schedule and nfs_direct_write_schedule can\nallow data-\u003enpages to be one larger than rpages.  This causes a page\npointer to be written beyond the end of the pagevec in nfs_read_data (or\nnfs_write_data).\n\nFix this by making nfs_(read|write)_alloc() calculate the size of the\npagevec array, and initialise data-\u003enpages.\n\nAlso get rid of the redundant argument to nfs_commit_alloc().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "79558f3610efd7928e8882b2eaca3093b283630e",
      "tree": "125f16640cd7f9de2074dae89a9c6c405703029c",
      "parents": [
        "01df9c5e918ae5559f2d96da0143f8bfbb9e6171"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 22 13:44:32 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 24 15:51:08 2006 -0400"
      },
      "message": "NFS: Fix issue with EIO on NFS read\n\nThe problem is that we may be caching writes that would extend the file and\ncreate a hole in the region that we are reading. In this case, we need to\ndetect the eof from the server, ensure that we zero out the pages that\nare part of the hole and mark them as up to date.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n(cherry picked from 856b603b01b99146918c093969b6cb1b1b0f1c01 commit)\n"
    },
    {
      "commit": "e4e20512cfe0bacec0764b4925889d1fa94644f9",
      "tree": "4926bdea3262685fe388d23e0f5bd50e5d9f42c2",
      "parents": [
        "ce510193272c295b891e45525a83b543ae3207c1"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Aug 03 15:07:47 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Aug 03 16:55:41 2006 -0400"
      },
      "message": "NFS: make 2 functions static\n\nnfs_writedata_free() and nfs_readdata_free() can now become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n(cherry picked from 5e1ce40f0c3c8f67591aff17756930d7a18ceb1a commit)\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "266bee88699ddbde42ab303bbc426a105cc49809",
      "tree": "2d2b57f869321e177caf173af8d43b5d88c4a79d",
      "parents": [
        "e7374e48009a15a680d53bd1f9828b9b79a8aac9"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Tue Jun 27 12:59:15 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 14:07:19 2006 -0700"
      },
      "message": "[PATCH] fix static linking of NFS\n\nBuilds on ARM report link problems with common configurations like\nstatically linked NFS (for nfsroot).  The symptom is that __init\nsection code references __exit section code; that won\u0027t work since\nthe exit sections are discarded (since they can never be called).\n\nThe best fix for these particular cases would be an \"__init_or_exit\"\nsection annotation.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f7b422b17ee5ee4920e8ae24a6ad04bf3481ce72",
      "tree": "4ae8372762efc092ceb4f884b57cad1efe6594de",
      "parents": [
        "4e5ccf60c5aa79d325c123f47d288a068166f389"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 09 09:34:33 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:33 2006 -0400"
      },
      "message": "NFS: Split fs/nfs/inode.c\n\nAs fs/nfs/inode.c is rather large, heterogenous and unwieldy, the attached\npatch splits it up into a number of files:\n\n (*) fs/nfs/inode.c\n\n     Strictly inode specific functions.\n\n (*) fs/nfs/super.c\n\n     Superblock management functions for NFS and NFS4, normal access, clones\n     and referrals.  The NFS4 superblock functions _could_ move out into a\n     separate conditionally compiled file, but it\u0027s probably not worth it as\n     there\u0027re so many common bits.\n\n (*) fs/nfs/namespace.c\n\n     Some namespace-specific functions have been moved here.\n\n (*) fs/nfs/nfs4namespace.c\n\n     NFS4-specific namespace functions (this could be merged into the previous\n     file).  This file is conditionally compiled.\n\n (*) fs/nfs/internal.h\n\n     Inter-file declarations, plus a few simple utility functions moved from\n     fs/nfs/inode.c.\n\n     Additionally, all the in-.c-file externs have been moved here, and those\n     files they were moved from now includes this file.\n\nFor the most part, the functions have not been changed, only some multiplexor\nfunctions have changed significantly.\n\nI\u0027ve also:\n\n (*) Added some extra banner comments above some functions.\n\n (*) Rearranged the function order within the files to be more logical and\n     better grouped (IMO), though someone may prefer a different order.\n\n (*) Reduced the number of #ifdefs in .c files.\n\n (*) Added missing __init and __exit directives.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "0d0b5cb36faf7002a11736032313f06d6f3d881c",
      "tree": "d767ae12fde00b553546aab9f5aa3e23cd86069d",
      "parents": [
        "bf3fcf89552f24657bcfb6a9d73cd167ebb496c6"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Thu May 25 01:40:53 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:07 2006 -0400"
      },
      "message": "NFS: Optimize allocation of nfs_read/write_data structures\n\nClean up use of page_array, and fix an off-by-one error noticed by Tom\nTalpey which causes kmalloc calls in cases where using the page_array\nis sufficient.\n\nTest plan:\nNormal client functional testing with r/wsize\u003d32768.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1de3fc12ea085690547a54b6efa01c7348f1cebd",
      "tree": "ea865786120cfcefac563c54693fef8d3d718f10",
      "parents": [
        "128e6ced247cda88f96fa9f2e4ba8b2c4a681560"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 25 01:40:44 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 09 09:34:03 2006 -0400"
      },
      "message": "NFS: Clean up and fix page zeroing when we have short reads\n\nThe code that is supposed to zero the uninitialised partial pages when the\nserver returns a short read is currently broken: it looks at the nfs_page\nwb_pgbase and wb_bytes fields instead of the equivalent nfs_read_data\nvalues when deciding where to start truncating the page.\n\nAlso ensure that we are more careful about setting PG_uptodate\nbefore retrying a short read: the retry will change the nfs_read_data\nargs.pgbase and args.count.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "93d2341c750cda0df48a6cc67b35fe25f1ec47df",
      "tree": "f098a3bbfae65ce967591ee94d605c6e6bea21c6",
      "parents": [
        "fec433aaaae32a02329ad7d71b0f3c91b7525077"
      ],
      "author": {
        "name": "Matthew Dobson",
        "email": "colpatch@us.ibm.com",
        "time": "Sun Mar 26 01:37:50 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:57:00 2006 -0800"
      },
      "message": "[PATCH] mempool: use mempool_create_slab_pool()\n\nModify well over a dozen mempool users to call mempool_create_slab_pool()\nrather than calling mempool_create() with extra arguments, saving about 30\nlines of code and increasing readability.\n\nSigned-off-by: Matthew Dobson \u003ccolpatch@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3feb2d49394b7874348a6e43c076b780c1d222c5",
      "tree": "6d27d4170fd9435574bd804033793f9d0d69a355",
      "parents": [
        "5db3a7b2cabe8f0957683f798c4f8fa8605f9ebb"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:37 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:37 2006 -0500"
      },
      "message": "NFS: Uninline nfs_writedata_(alloc|free) and nfs_readdata_(alloc|free)\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ec06c096edec0755534c7126f4caded69de131c2",
      "tree": "1f5b219c09dea1d9886cefe3ea3f7cef560a5e9a",
      "parents": [
        "788e7a89a03e364855583c0ab4649b94925efbb9"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:27 2006 -0500"
      },
      "message": "NFS: Cleanup of NFS read code\n\nSame callback hierarchy inversion as for the NFS write calls. This patch is\nnot strictly speaking needed by the O_DIRECT code, but avoids confusing\ndifferences between the asynchronous read and write code.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "91d5b47023b608227d605d1e916b29dd0215bff7",
      "tree": "31dbb285639ea68db3abc0c4129988f02d50f11a",
      "parents": [
        "d9ef5a8c26aab09762afce43df64736720b4860e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Mon Mar 20 13:44:14 2006 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Mar 20 13:44:14 2006 -0500"
      },
      "message": "NFS: add I/O performance counters\n\nInvoke the byte and event counter macros where we want to count bytes and\nevents.\n\nClean-up: fix a possible NULL dereference in nfs_lock, and simplify\nnfs_file_open.\n\nTest-plan:\nfsx and iozone on UP and SMP systems, with and without pre-emption.  Watch\nfor memory overwrite bugs, and performance loss (significantly more CPU\nrequired per op).\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "40859d7ee64ed6bfad8a4e93f9bb5c1074afadff",
      "tree": "ed4069423c3d6551035d5b6116f50452cdac4103",
      "parents": [
        "325cfed9ae901320e9234b18c21434b783dbe342"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@netapp.com",
        "time": "Wed Nov 30 18:09:02 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:49 2006 -0500"
      },
      "message": "NFS: support large reads and writes on the wire\n\n Most NFS server implementations allow up to 64KB reads and writes on the\n wire.  The Solaris NFS server allows up to a megabyte, for instance.\n\n Now the Linux NFS client supports transfer sizes up to 1MB, too.  This will\n help reduce protocol and context switch overhead on read/write intensive NFS\n workloads, and support larger atomic read and write operations on servers\n that support them.\n\n Test-plan:\n Connectathon and iozone on mount point with wsize\u003drsize\u003e32768 over TCP.\n Tests with NFS over UDP to verify the maximum RPC payload size cap.\n\n Signed-off-by: Chuck Lever \u003ccel@netapp.com\u003e\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "963d8fe53339128ee46a7701f2e36305f0ccff8c",
      "tree": "426736c70a8e05cb1d945d5c7f44ea6475edd113",
      "parents": [
        "abbcf28f23d53e8ec56a91f3528743913fa2694a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 03 09:55:04 2006 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:39 2006 -0500"
      },
      "message": "RPC: Clean up RPC task structure\n\n Shrink the RPC task structure. Instead of storing separate pointers\n for task-\u003etk_exit and task-\u003etk_release, put them in a structure.\n\n Also pass the user data pointer as a parameter instead of passing it via\n task-\u003etk_calldata. This enables us to nest callbacks.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d530838bfa507d67b40d13b00d9cbd7a46a47e78",
      "tree": "f4b2be26c0a7b9ed3233a2be016b7e97427f8705",
      "parents": [
        "4cecb76ff86db46d2823550256c828b6597f418e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:33:38 2005 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 15:33:38 2005 -0500"
      },
      "message": "NFSv4: Fix problem with OPEN_DOWNGRADE\n\n RFC 3530 states that for OPEN_DOWNGRADE \"The share_access and share_deny\n bits specified must be exactly equal to the union of the share_access and\n share_deny bits specified for some subset of the OPENs in effect for\n current openowner on the current file.\n\n Setattr is currently violating the NFSv4 rules for OPEN_DOWNGRADE in that\n it may cause a downgrade from OPEN4_SHARE_ACCESS_BOTH to\n OPEN4_SHARE_ACCESS_WRITE despite the fact that there exists no open file\n with O_WRONLY access mode.\n\n Fix the problem by replacing nfs4_find_state() with a modified version of\n nfs_find_open_context().\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0e574af1be5f569a5d7f2800333b0bfb358a5e34",
      "tree": "bb5b62dece21b8906222dfee022020ed6f81e34c",
      "parents": [
        "4c2cb58c552a34744979a99ccf01762d5eb7e288"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 27 22:12:38 2005 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 27 22:12:38 2005 -0400"
      },
      "message": "NFS: Cleanup initialisation of struct nfs_fattr\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "10d2c46f9408d404bffef89d5052953a3b1d9288",
      "tree": "5eace052aa3b694d9e1e8a523bf66641e0c51966",
      "parents": [
        "f7b3a4359b25311fb5894c8809478a2df6bed480"
      ],
      "author": {
        "name": "Nick Wilson",
        "email": "njw@osdl.org",
        "time": "Thu Sep 22 21:44:28 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Sep 22 22:17:37 2005 -0700"
      },
      "message": "[PATCH] NFS: fix client oops when debugging is on\n\nnfs_readpage_release() causes an oops while accessing a file with NFS\ndebugging turned on (echo 32767 \u003e /proc/sys/sunrpc/nfs_debug) and a kernel\nbuilt with CONFIG_DEBUG_SLAB.\n\nThis patch moves the debugging statement above nfs_release_request() to\navoid accessing freed memory.\n\nSigned-off-by: Nick Wilson \u003cnjw@osdl.org\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dc59250c6ebed099a9bc0a11298e2281dd896657",
      "tree": "80c294437c0868d90abfa617d873370e6dbe6565",
      "parents": [
        "412d582ec1dd59aab2353f8cb7e74f2c79cd20b9"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@citi.umich.edu",
        "time": "Thu Aug 18 11:24:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Aug 18 12:53:57 2005 -0700"
      },
      "message": "[PATCH] NFS: Introduce the use of inode-\u003ei_lock to protect fields in nfsi\n\nDown the road we want to eliminate the use of the global kernel lock entirely\nfrom the NFS client.  To do this, we need to protect the fields in the\nnfs_inode structure adequately.  Start by serializing updates to the\n\"cache_validity\" field.\n\nNote this change addresses an SMP hang found by njw@osdl.org, where processes\ndeadlock because nfs_end_data_update and nfs_revalidate_mapping update the\n\"cache_validity\" field without proper serialization.\n\nTest plan:\n Millions of fsx ops on SMP clients.  Run Nick Wilson\u0027s breaknfs program on\n large SMP clients.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5529680981807b44abf3be30fb6d612ff04f68ff",
      "tree": "57da4e9135c0a85c1f8c6bc797250c0209420b51",
      "parents": [
        "3c7bf1eaee1255315fc7c2c4c300295e556ef768"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "cel@citi.umich.edu",
        "time": "Thu Aug 18 11:24:09 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Aug 18 12:53:56 2005 -0700"
      },
      "message": "[PATCH] NFS: split nfsi-\u003eflags into two fields\n\nCertain bits in nfsi-\u003eflags can be manipulated with atomic bitops, and some\nare better manipulated via logical bitmask operations.\n\nThis patch splits the flags field into two.  The next patch introduces atomic\nbitops for one of the fields.\n\nTest plan:\n Millions of fsx ops on SMP clients.\n\nSigned-off-by: Chuck Lever \u003ccel@netapp.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c6a556b88adfacd2af90be84357c8165d716c27d",
      "tree": "b63d477180052d3d1edabffb51f3fdfe4f699866",
      "parents": [
        "ab0a3dbedc51037f3d2e22ef67717a987b3d15e2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 17:16:30 2005 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 22 16:07:39 2005 -0400"
      },
      "message": "[PATCH] NFS: Make searching and waiting on busy writeback requests more efficient.\n\n Basically copies the VFS\u0027s method for tracking writebacks and applies\n it to the struct nfs_page.\n\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
