)]}'
{
  "log": [
    {
      "commit": "1d59d61f606547f0712aa6971f91f71154071c99",
      "tree": "cb2fd4b9ce3e3ee9440d566d43ea350221edfc8e",
      "parents": [
        "2d117403b30cd7301af60d7d54b279a9f566d10d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 31 12:22:33 2012 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 11:41:36 2012 -0700"
      },
      "message": "NFS: Ensure that setattr and getattr wait for O_DIRECT write completion\n\nUse the same mechanism as the block devices are using, but move the\nhelper functions from fs/direct-io.c into fs/inode.c to remove the\ndependency on CONFIG_BLOCK.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53f2c4a8fd882009a2a75c5b72d6898c0808616e",
      "tree": "922293a1056c0c2358203cdab832f0e0891e628a",
      "parents": [
        "8f6576ad476b2a22d05ddafd2ddaee102577a4ed",
        "cc0a98436820b161b595b8cc1d2329bcf7328107"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 10:43:51 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 10:43:51 2012 -0700"
      },
      "message": "Merge tag \u0027nfs-for-3.5-1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs\n\nPull NFS client updates from Trond Myklebust:\n \"New features include:\n   - Rewrite the O_DIRECT code so that it can share the same coalescing\n     and pNFS functionality as the page cache code.\n   - Allow the server to provide hints as to when we should use pNFS,\n     and when it is more efficient to read and write through the\n     metadata server.\n   - NFS cache consistency updates:\n     * Use the ctime to emulate a change attribute for NFSv2/v3 so that\n       all NFS versions can share the same cache management code.\n     * New cache management code will only look at the change attribute\n       and size attribute when deciding whether or not our cached data\n       is still valid or not.\n     * Don\u0027t request NFSv4 post-op attributes on writes in cases such as\n       O_DIRECT, where we don\u0027t care about data cache consistency, or\n       when we have a write delegation, and know that our cache is still\n       consistent.\n     * Don\u0027t request NFSv4 post-op attributes on operations such as\n       COMMIT, where there are no expected metadata updates.\n     * Don\u0027t request NFSv4 directory post-op attributes in cases where\n       the operations themselves already return change attribute\n       updates: i.e. operations such as OPEN, CREATE, REMOVE, LINK and\n       RENAME.\n   - Speed up \u0027ls\u0027 and friends by using READDIR rather than READDIRPLUS\n     if we detect no attempts to lookup filenames.\n   - Improve the code sharing between NFSv2/v3 and v4 mounts\n   - NFSv4.1 state management efficiency improvements\n   - More patches in preparation for NFSv4/v4.1 migration functionality.\"\n\nFix trivial conflict in fs/nfs/nfs4proc.c that was due to the dcache\nqstr name initialization changes (that made the length/hash a 64-bit\nunion)\n\n* tag \u0027nfs-for-3.5-1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (146 commits)\n  NFSv4: Add debugging printks to state manager\n  NFSv4: Map NFS4ERR_SHARE_DENIED into an EACCES error instead of EIO\n  NFSv4: update_changeattr does not need to set NFS_INO_REVAL_PAGECACHE\n  NFSv4.1: nfs4_reset_session should use nfs4_handle_reclaim_lease_error\n  NFSv4.1: Handle other occurrences of NFS4ERR_CONN_NOT_BOUND_TO_SESSION\n  NFSv4.1: Handle NFS4ERR_CONN_NOT_BOUND_TO_SESSION in the state manager\n  NFSv4.1: Handle errors in nfs4_bind_conn_to_session\n  NFSv4.1: nfs4_bind_conn_to_session should drain the session\n  NFSv4.1: Don\u0027t clobber the seqid if exchange_id returns a confirmed clientid\n  NFSv4.1: Add DESTROY_CLIENTID\n  NFSv4.1: Ensure we use the correct credentials for bind_conn_to_session\n  NFSv4.1: Ensure we use the correct credentials for session create/destroy\n  NFSv4.1: Move NFSPROC4_CLNT_BIND_CONN_TO_SESSION to the end of the operations\n  NFSv4.1: Handle NFS4ERR_SEQ_MISORDERED when confirming the lease\n  NFSv4: When purging the lease, we must clear NFS4CLNT_LEASE_CONFIRM\n  NFSv4: Clean up the error handling for nfs4_reclaim_lease\n  NFSv4.1: Exchange ID must use GFP_NOFS allocation mode\n  nfs41: Use BIND_CONN_TO_SESSION for CB_PATH_DOWN*\n  nfs4.1: add BIND_CONN_TO_SESSION operation\n  NFSv4.1 test the mdsthreshold hint parameters\n  ...\n"
    },
    {
      "commit": "2701d086dbfca03b2d28b25c6dc11dd78d0e26ad",
      "tree": "69f81dd2a979600cd3ff4f1861c6d7ef5c25b1ed",
      "parents": [
        "82be417aa37c05116e310b0f2171187ea389f89b"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Thu May 24 13:13:24 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 24 16:15:48 2012 -0400"
      },
      "message": "NFSv4.1 add nfs_inode book keeping for mdsthreshold\n\nKeep track of the number of bytes read or written via buffered, direct, and\nmem-mapped i/o for use by mdsthreshold size_io hints.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "82be417aa37c05116e310b0f2171187ea389f89b",
      "tree": "901d8fc702d6aef425c4b17cdf62e4fdd8c81833",
      "parents": [
        "88034c3d88c2c48b215f2cc5eb22e564aa817f9c"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed May 23 05:02:35 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu May 24 16:15:48 2012 -0400"
      },
      "message": "NFSv4.1 cache mdsthreshold values on OPEN\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e73e6c9e85ed91187c1d21cb9238e86a116bf3db",
      "tree": "5b670db58e5ae253be7a204b610170147d8a1cc3",
      "parents": [
        "39ffb9218e41b1ef4920432776791f5e9ed2eff3"
      ],
      "author": {
        "name": "Matthew Treinish",
        "email": "treinish@linux.vnet.ibm.com",
        "time": "Mon Apr 30 11:32:57 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 19 17:10:10 2012 -0400"
      },
      "message": "Fixed goto readability in nfs_update_inode.\n\nSimplified error gotos to make it slightly easier to read,\nit doesn\u0027t affect the functionality of the routine.\n\nSigned-off-by: Matthew Treinish \u003ctreinish@linux.vnet.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430",
      "tree": "42ea94ea733538f797aa745945fc43c4d1b89217",
      "parents": [
        "7994e6f7254354e03028a11f98a27bd67dace9f1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 03 14:48:02 2012 +0200"
      },
      "committer": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Sun May 06 13:43:41 2012 +0800"
      },
      "message": "vfs: Rename end_writeback() to clear_inode()\n\nAfter we moved inode_sync_wait() from end_writeback() it doesn\u0027t make sense\nto call the function end_writeback() anymore. Rename it to clear_inode()\nwhich well says what the function really does - set I_CLEAR flag.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "d69ee9b85541a69a1092f5da675bd23256dc62af",
      "tree": "5f890def2d1d4bca93a5acaf073fa4cbe5f16a44",
      "parents": [
        "8582715e733d08bc98fe629db0601360d70de4dc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 17:37:59 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 19:16:43 2012 -0400"
      },
      "message": "NFS: Adapt readdirplus to application usage patterns\n\nWhile the use of READDIRPLUS is significantly more efficient than\nREADDIR followed by many LOOKUP calls, it is still less efficient\nthan just READDIR if the attributes are not required.\n\nThis patch tracks when lookups are attempted on the directory,\nand uses that information to selectively disable READDIRPLUS\non that directory.\nThe first \u0027readdir\u0027 call is always served using READDIRPLUS.\nSubsequent calls only use READDIRPLUS if there was a successful\nlookup or revalidation on a child in the mean time.\n\nCredit for the original idea should go to Neil Brown. See:\n      http://www.spinics.net/lists/linux-nfs/msg19996.html\nHowever, the implementation in this patch differs from Neil\u0027s\nin that it focuses on tracking lookups rather than calls to\nstat().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fee7fe196c41847c135cde41b0ec790f53ee6fcf",
      "tree": "7c71c73ae1840551bdcd76dff1220b136c5fb2e4",
      "parents": [
        "3a1556e8662cc425c433b463fcdae138908ca467"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 13:48:18 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 15:42:43 2012 -0400"
      },
      "message": "NFS: Simplify the cache invalidation code\n\nNow that NFSv2 and NFSv3 have simulated change attributes,\ninstead of using all three of mtime, ctime and change attribute to\nmanage data cache consistency, we can simplify the code to just use\nthe change attribute.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6a4506c0b56889aaa15bcf50b3c75f46a8d0a3bd",
      "tree": "6c160685e6e81f74617408751385bfc950cbf819",
      "parents": [
        "4124bbc52118e7da6f7ad41cc247fa16f4b3f051"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 13:48:17 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 15:42:42 2012 -0400"
      },
      "message": "NFS: Change attribute updates should set NFS_INO_REVAL_PAGECACHE\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4124bbc52118e7da6f7ad41cc247fa16f4b3f051",
      "tree": "9e3dde086a44b9eba347feb899bc1c96dd2d30cc",
      "parents": [
        "8d197a568fc337c66729b289c7fa0f28c14ba5ac"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 27 13:48:17 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 15:42:42 2012 -0400"
      },
      "message": "NFS: Simplify nfs_fhget()\n\nIf the inode is being initialised, there is no point in\nsetting flags such as NFS_INO_INVALID_ACCESS,\nNFS_INO_INVALID_ACL or NFS_INO_INVALID_DATA since there are\nno cached access calls, acls or data caches to invalidate.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "01da47bde78ff2149f6546a0f17e25983aaddd7b",
      "tree": "6509cf6b64e79445757d1d6491c4bbac655dd038",
      "parents": [
        "b4b1eadf7c5f00636500ad47f68edc0666e63ea5"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Apr 29 12:30:19 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 15:42:41 2012 -0400"
      },
      "message": "NFS: Optimise away nfs_check_inode_attributes() when holding a delegation\n\nWe already know that the attribute cache is valid.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "b4b1eadf7c5f00636500ad47f68edc0666e63ea5",
      "tree": "2ae583a6b89597655ebbf63fb3d00364061b48ad",
      "parents": [
        "e144cbcc251f16c1a14b9256cda73ab4aebe933a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Apr 29 11:23:50 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue May 01 15:42:40 2012 -0400"
      },
      "message": "NFS: Don\u0027t force page cache revalidations when holding a delegation\n\nIf we\u0027re holding a delegation, then we already know that our\npage cache is valid.\n\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": "0195c00244dc2e9f522475868fa278c473ba7339",
      "tree": "f97ca98ae64ede2c33ad3de05ed7bbfa4f4495ed",
      "parents": [
        "f21ce8f8447c8be8847dadcfdbcc76b0d7365fa5",
        "141124c02059eee9dbc5c86ea797b1ca888e77f7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 15:58:21 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 15:58:21 2012 -0700"
      },
      "message": "Merge tag \u0027split-asm_system_h-for-linus-20120328\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-asm_system\n\nPull \"Disintegrate and delete asm/system.h\" from David Howells:\n \"Here are a bunch of patches to disintegrate asm/system.h into a set of\n  separate bits to relieve the problem of circular inclusion\n  dependencies.\n\n  I\u0027ve built all the working defconfigs from all the arches that I can\n  and made sure that they don\u0027t break.\n\n  The reason for these patches is that I recently encountered a circular\n  dependency problem that came about when I produced some patches to\n  optimise get_order() by rewriting it to use ilog2().\n\n  This uses bitops - and on the SH arch asm/bitops.h drags in\n  asm-generic/get_order.h by a circuituous route involving asm/system.h.\n\n  The main difficulty seems to be asm/system.h.  It holds a number of\n  low level bits with no/few dependencies that are commonly used (eg.\n  memory barriers) and a number of bits with more dependencies that\n  aren\u0027t used in many places (eg.  switch_to()).\n\n  These patches break asm/system.h up into the following core pieces:\n\n    (1) asm/barrier.h\n\n        Move memory barriers here.  This already done for MIPS and Alpha.\n\n    (2) asm/switch_to.h\n\n        Move switch_to() and related stuff here.\n\n    (3) asm/exec.h\n\n        Move arch_align_stack() here.  Other process execution related bits\n        could perhaps go here from asm/processor.h.\n\n    (4) asm/cmpxchg.h\n\n        Move xchg() and cmpxchg() here as they\u0027re full word atomic ops and\n        frequently used by atomic_xchg() and atomic_cmpxchg().\n\n    (5) asm/bug.h\n\n        Move die() and related bits.\n\n    (6) asm/auxvec.h\n\n        Move AT_VECTOR_SIZE_ARCH here.\n\n  Other arch headers are created as needed on a per-arch basis.\"\n\nFixed up some conflicts from other header file cleanups and moving code\naround that has happened in the meantime, so David\u0027s testing is somewhat\nweakened by that.  We\u0027ll find out anything that got broken and fix it..\n\n* tag \u0027split-asm_system_h-for-linus-20120328\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-asm_system: (38 commits)\n  Delete all instances of asm/system.h\n  Remove all #inclusions of asm/system.h\n  Add #includes needed to permit the removal of asm/system.h\n  Move all declarations of free_initmem() to linux/mm.h\n  Disintegrate asm/system.h for OpenRISC\n  Split arch_align_stack() out from asm-generic/system.h\n  Split the switch_to() wrapper out of asm-generic/system.h\n  Move the asm-generic/system.h xchg() implementation to asm-generic/cmpxchg.h\n  Create asm-generic/barrier.h\n  Make asm-generic/cmpxchg.h #include asm-generic/cmpxchg-local.h\n  Disintegrate asm/system.h for Xtensa\n  Disintegrate asm/system.h for Unicore32 [based on ver #3, changed by gxt]\n  Disintegrate asm/system.h for Tile\n  Disintegrate asm/system.h for Sparc\n  Disintegrate asm/system.h for SH\n  Disintegrate asm/system.h for Score\n  Disintegrate asm/system.h for S390\n  Disintegrate asm/system.h for PowerPC\n  Disintegrate asm/system.h for PA-RISC\n  Disintegrate asm/system.h for MN10300\n  ...\n"
    },
    {
      "commit": "9ffc93f203c18a70623f21950f1dd473c9ec48cd",
      "tree": "1eb3536ae183b0bfbf7f5152a6fe4f430ae881c2",
      "parents": [
        "96f951edb1f1bdbbc99b0cd458f9808bb83d58ae"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Mar 28 18:30:03 2012 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Mar 28 18:30:03 2012 +0100"
      },
      "message": "Remove all #inclusions of asm/system.h\n\nRemove all #inclusions of asm/system.h preparatory to splitting and killing\nit.  Performed with the following command:\n\nperl -p -i -e \u0027s!^#\\s*include\\s*\u003casm/system[.]h\u003e.*\\n!!\u0027 `grep -Irl \u0027^#\\s*include\\s*\u003casm/system[.]h\u003e\u0027 *`\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "e27d359e9b7e446190362cd5c8fe281d02194896",
      "tree": "5dece1801337b32e9d4ecc03e487a95856b413fa",
      "parents": [
        "3b3be88d67cc17d0f0ab6edaf131516793fc947e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Mar 18 14:07:42 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 20 13:08:26 2012 -0400"
      },
      "message": "SUNRPC/NFS: Add Kbuild dependencies for NFS_DEBUG/RPC_DEBUG\n\nThis allows us to turn on/off the dprintk() debugging interfaces for\nthose distributions that don\u0027t ship the \u0027rpcdebug\u0027 utility.\nIt also allows us to add Kbuild dependencies. Specifically, we already\nknow that dprintk() in general relies on CONFIG_SYSCTL. Now it turns out\nthat the NFS dprintks depend on CONFIG_CRC32 after we added support\nfor the filehandle hash.\n\nReported-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@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": "4f1abd226d80ef763c50e3930b369b63dffbb312",
      "tree": "6dfbcc0046ef135fadd2b6585e864c067b3bf1a6",
      "parents": [
        "d8e0539ebdff5ff27fa7eb019715d9dfb5171a3b"
      ],
      "author": {
        "name": "Weston Andros Adamson",
        "email": "dros@netapp.com",
        "time": "Tue Mar 06 21:58:20 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 07 10:34:27 2012 -0500"
      },
      "message": "NFS: add fh_crc to debug output\n\nPrint the filehandle crc in two debug messages\n\nSigned-off-by: Weston Andros Adamson \u003cdros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d8e0539ebdff5ff27fa7eb019715d9dfb5171a3b",
      "tree": "c85febe66a9527be703fd82fd9e017df740364b3",
      "parents": [
        "ff2eb6818d0d5b2691c112f51c539a817fcc59fc"
      ],
      "author": {
        "name": "Weston Andros Adamson",
        "email": "dros@netapp.com",
        "time": "Tue Mar 06 20:46:43 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 07 10:34:07 2012 -0500"
      },
      "message": "NFS: add filehandle crc for debug display\n\nMatch wireshark\u0027s CRC-32 hash for easier debugging\n\nSigned-off-by: Weston Andros Adamson \u003cdros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fa68a1ba1de349f0d1fcc54171b95236efe24148",
      "tree": "d7f1d06a8e041133fa1473b46b1eacd9f71d54d0",
      "parents": [
        "7e03b7cc0736eefe7471782c344112ad6eba951e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 06 10:14:35 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Mar 06 10:32:43 2012 -0500"
      },
      "message": "NFS: Fix a typo in _nfs_display_fhandle\n\nThe check for \u0027fh \u003d\u003d NULL\u0027 needs to come _before_ we dereference\nfh.\n\nReported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "20d27e929fb4790a339a4ddcc9a27f14db06055b",
      "tree": "e62d752180c2c7342d801f903c7f2ce2dd952075",
      "parents": [
        "31b8e2aec099f22d40277c424d8c24b2a4c95fce"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Thu Mar 01 17:01:31 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 02 17:18:08 2012 -0500"
      },
      "message": "NFS: Add a client-side function to display NFS file handles\n\nFor debugging, introduce a simplistic function to print NFS file\nhandles on the system console.  The main function is hooked into the\ndprintk debugging facility, but you can directly call the helper,\n_nfs_display_fhandle(), if you want to print a handle unconditionally.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "28cd1b3f262dba56b5e335ba668e342d530f6129",
      "tree": "7ae24e43fe054042800118edb266287125ba34f8",
      "parents": [
        "c25d32b26361ce0814fef2281f164866c18c8692"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Mon Jan 23 17:26:22 2012 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 06 18:48:03 2012 -0500"
      },
      "message": "NFS: make cb_ident_idr per net ns\n\nThis patch makes ID\u0027s infrastructure network namespace aware. This was done\nmainly because of nfs_client_lock, which is desired to be per network\nnamespace, but protects NFS clients ID\u0027s.\n\nNOTE: NFS client\u0027s net pointer have to be set prior to ID initialization,\nproper assignment was moved.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6b13168b36b6a7f603d962c232f1f2f325705832",
      "tree": "e524fb58428a8c128dcad8cf00cbd2692be9c6ad",
      "parents": [
        "a602bea3e7ccc5ce3da61d2c18245c4058983926"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Mon Jan 23 17:26:05 2012 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 06 18:48:02 2012 -0500"
      },
      "message": "NFS: make nfs_client_list per net ns\n\nThis patch splits global list of NFS clients into per-net-ns array of lists.\nThis looks more strict and clearer.\nBTW, this patch also makes \"/proc/fs/nfsfs/servers\" entry content depends on\n/proc mount owner pid namespace. See below for details.\n\nNOTE: few words about how was /proc/fs/nfsfs/ entries content show per network\nnamespace done. This is a little bit tricky and not the best is could be. But\nit\u0027s cheap (proper fix for /proc conteinerization is a hard nut to crack).\nThe idea is simple: take proper network namespace from pid namespace\nchild reaper nsproxy of /proc/ mount creator.\nThis actually means, that if there are 2 containers with different net\nnamespace sharing pid namespace, then read of /proc/fs/nfsfs/ entries will\nalways return content, taken from net namespace of pid namespace creator task\n(and thus second namespace set wil be unvisible).\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a030889a01d1bea921e1a7501010b7b891d2abd2",
      "tree": "4e76ec42bbdd41682e6cea5541f305c2f1275e99",
      "parents": [
        "f9fd2d9c1f3b512c9794abbbd76c77a6e6de57aa"
      ],
      "author": {
        "name": "Weston Andros Adamson",
        "email": "dros@netapp.com",
        "time": "Thu Jan 26 13:32:23 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 06 18:48:00 2012 -0500"
      },
      "message": "NFS: start printks w/ NFS: even if __func__ shown\n\nThis patch addresses printks that have some context to show that they are\nfrom fs/nfs/, but for the sake of consistency now start with NFS:\n\nSigned-off-by: Weston Andros Adamson \u003cdros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ec7652aaf261b7dcb368344369df1e99886c7cd2",
      "tree": "0d21ca45022adb1221690cb5e368bc17d3f58531",
      "parents": [
        "170942726b16a1dfcc605f0b510b9663b66fa7a3"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Dec 06 16:42:40 2011 +0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 31 19:28:17 2012 -0500"
      },
      "message": "SUNRPC: register RPC stats /proc entries in passed network namespace context\n\nThis patch makes it possible to create NFS program entry (\"/proc/net/rpc/nfs\")\nin passed network namespace context instead of hard-coded \"init_net\".\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "536e43d12b9517bbbf6114cd1a12be27857a4d7a",
      "tree": "a40424a430fd651fe7b35232717f2201c608059a",
      "parents": [
        "48c22eb21071a3524f8b6e587371be35b5e86969"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 17 22:04:26 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 31 19:28:07 2012 -0500"
      },
      "message": "NFS: Optimise away unnecessary setattrs for open(O_TRUNC);\n\nCurrently, we will correctly optimise away a truncate that doesn\u0027t\nchange the file size. However, in the case of open(O_TRUNC), we\nalso want to optimise away the time changes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9e2e74dba6ddce94da187369b50a27536147d5df",
      "tree": "b4c2e7570775f0d9b0477fdf26e5f99c91e61ac4",
      "parents": [
        "332dfab6f4e02d3c5897e9470492bee7d14f29cc"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Tue Jan 10 17:04:24 2012 +0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 31 18:20:27 2012 -0500"
      },
      "message": "NFS: blocklayout pipe creation per network namespace context introduced\n\nThis patch implements blocklayout pipe creation and registration per each\nexistent network namespace.\nThis was achived by registering NFS per-net operations, responsible for\nblocklayout pipe allocation/register and unregister/destruction instead of\ninitialization and destruction of static \"bl_device_pipe\" pipe (this one was\nremoved).\nNote, than pointer to network blocklayout pipe is stored in per-net \"nfs_net\"\nstructure, because allocating of one more per-net structure for blocklayout\nmodule looks redundant.\nThis patch also changes dev_remove() function prototype (and all it\u0027s callers,\nwhere it\u0027 requied) by adding network namespace pointer parameter, which is used\nto discover proper blocklayout pipe for rpc_queue_upcall() call.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1b340d0118da1d7c60c664f17d7c8fce2bb1cd9d",
      "tree": "a66a9626f8fca21bd42d13a3b4270b168e2186fc",
      "parents": [
        "5c1cacb175185ed925d7dc13ac7e0653e7a633cd"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Fri Nov 25 17:13:04 2011 +0300"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 31 18:20:26 2012 -0500"
      },
      "message": "NFS: DNS resolver cache per network namespace context introduced\n\nThis patch implements DNS resolver cache creation and registration for each\nalive network namespace context.\nThis was done by registering NFS per-net operations, responsible for DNS cache\nallocation/register and unregister/destructioning instead of initialization and\ndestruction of static \"nfs_dns_resolve\" cache detail (this one was removed).\nPointer to network dns resolver cache is stored in new per-net \"nfs_net\"\nstructure.\nThis patch also changes nfs_dns_resolve_name() function prototype (and it\u0027s\ncalls) by adding network pointer parameter, which is used to get proper DNS\nresolver cache pointer for do_cache_lookup_wait() call.\n\nNote: empty nfs_dns_resolver_init() and nfs_dns_resolver_destroy() functions\nwill be used in next patch in the series.\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "90ab5ee94171b3e28de6bb42ee30b527014e0be7",
      "tree": "fcf89889f6e881f2b231d3d20287c08174ce4b54",
      "parents": [
        "476bc0015bf09dad39d36a8b19f76f0c181d1ec9"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:20 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:20 2012 +1030"
      },
      "message": "module_param: make bool parameters really bool (drivers \u0026 misc)\n\nmodule_param(bool) used to counter-intuitively take an int.  In\nfddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy\ntrick.\n\nIt\u0027s time to remove the int/unsigned int option.  For this version\nit\u0027ll simply give a warning, but it\u0027ll break next kernel version.\n\nAcked-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "57eccf1c2acae2fcb748730881ba75643fc31c81",
      "tree": "be47ac42ef0b2e3e7157ce196ad2ed1224739c6c",
      "parents": [
        "5c395ae7033099fc657114ea997858aa622f08b2",
        "074b1d12fe2500d7d453902f9266e6674b30d84c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 14:57:40 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 14:57:40 2012 -0800"
      },
      "message": "Merge branch \u0027nfs-for-3.3\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs\n\n* \u0027nfs-for-3.3\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs:\n  NFSv4: Change the default setting of the nfs4_disable_idmapping parameter\n  NFSv4: Save the owner/group name string when doing open\n  NFS: Remove pNFS bloat from the generic write path\n  pnfs-obj: Must return layout on IO error\n  pnfs-obj: pNFS errors are communicated on iodata-\u003epnfs_error\n  NFS: Cache state owners after files are closed\n  NFS: Clean up nfs4_find_state_owners_locked()\n  NFSv4: include bitmap in nfsv4 get acl data\n  nfs: fix a minor do_div portability issue\n  NFSv4.1: cleanup comment and debug printk\n  NFSv4.1: change nfs4_free_slot parameters for dynamic slots\n  NFSv4.1: cleanup init and reset of session slot tables\n  NFSv4.1: fix backchannel slotid off-by-one bug\n  nfs: fix regression in handling of context\u003d option in NFSv4\n  NFS - fix recent breakage to NFS error handling.\n  NFS: Retry mounting NFSROOT\n  SUNRPC: Clean up the RPCSEC_GSS service ticket requests\n"
    },
    {
      "commit": "eb59c505f8a5906ad2e053d14fab50eb8574fd6f",
      "tree": "c6e875adc12b481b916e847e8f80b8881a0fb02c",
      "parents": [
        "1619ed8f60959829d070d8f39cd2f8ca0e7135ce",
        "c233523b3d392e530033a7587d7970dc62a02361"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:10:57 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:10:57 2012 -0800"
      },
      "message": "Merge branch \u0027pm-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm\n\n* \u0027pm-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (76 commits)\n  PM / Hibernate: Implement compat_ioctl for /dev/snapshot\n  PM / Freezer: fix return value of freezable_schedule_timeout_killable()\n  PM / shmobile: Allow the A4R domain to be turned off at run time\n  PM / input / touchscreen: Make st1232 use device PM QoS constraints\n  PM / QoS: Introduce dev_pm_qos_add_ancestor_request()\n  PM / shmobile: Remove the stay_on flag from SH7372\u0027s PM domains\n  PM / shmobile: Don\u0027t include SH7372\u0027s INTCS in syscore suspend/resume\n  PM / shmobile: Add support for the sh7372 A4S power domain / sleep mode\n  PM: Drop generic_subsys_pm_ops\n  PM / Sleep: Remove forward-only callbacks from AMBA bus type\n  PM / Sleep: Remove forward-only callbacks from platform bus type\n  PM: Run the driver callback directly if the subsystem one is not there\n  PM / Sleep: Make pm_op() and pm_noirq_op() return callback pointers\n  PM/Devfreq: Add Exynos4-bus device DVFS driver for Exynos4210/4212/4412.\n  PM / Sleep: Merge internal functions in generic_ops.c\n  PM / Sleep: Simplify generic system suspend callbacks\n  PM / Hibernate: Remove deprecated hibernation snapshot ioctls\n  PM / Sleep: Fix freezer failures due to racy usermodehelper_is_disabled()\n  ARM: S3C64XX: Implement basic power domain support\n  PM / shmobile: Use common always on power domain governor\n  ...\n\nFix up trivial conflict in fs/xfs/xfs_buf.c due to removal of unused\nXBT_FORCE_SLEEP bit\n"
    },
    {
      "commit": "6926afd1925a54a13684ebe05987868890665e2b",
      "tree": "14dd0c00c757277d6f28b732c08206376e6dbf31",
      "parents": [
        "e2fecb215b321db0e4a5b2597349a63c07bec42f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jan 07 13:22:46 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jan 07 13:22:46 2012 -0500"
      },
      "message": "NFSv4: Save the owner/group name string when doing open\n\n...so that we can do the uid/gid mapping outside the asynchronous RPC\ncontext.\nThis fixes a bug in the current NFSv4 atomic open code where the client\nisn\u0027t able to determine what the true uid/gid fields of the file are,\n(because the asynchronous nature of the OPEN call denies it the ability\nto do an upcall) and so fills them with default values, marking the\ninode as needing revalidation.\nUnfortunately, in some cases, the VFS will do some additional sanity\nchecks on the file, and may override the server\u0027s decision to allow\nthe open because it sees the wrong owner/group fields.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6b520e0565422966cdf1c3759bd73df77b0f248c",
      "tree": "f63a26afa7342eb59b125271b16e30a219b59094",
      "parents": [
        "2a79f17e4a641a2f463cb512cb0ec349844a147b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 12 15:51:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:40 2012 -0500"
      },
      "message": "vfs: fix the stupidity with i_dentry in inode destructors\n\nSeeing that just about every destructor got that INIT_LIST_HEAD() copied into\nit, there is no point whatsoever keeping this INIT_LIST_HEAD in inode_init_once();\nthe cost of taking it into inode_init_always() will be negligible for pipes\nand sockets and negative for everything else.  Not to mention the removal of\nboilerplate code from -\u003edestroy_inode() instances...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5ede7b1cfa8201418fb35e12f770e9e7c2559a4d",
      "tree": "c26d99fbbed708a6db116e57daca68f2b3c672ac",
      "parents": [
        "157e8bf8b4823bfcdefa6c1548002374b61f61df"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Oct 23 18:49:54 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:34 2012 -0500"
      },
      "message": "pull manipulations of rpc_cred inside alloc_nfs_open_context()\n\nNo need to duplicate them in both callers; make it return\nERR_PTR(-ENOMEM) on allocation failure instead of NULL and\nit\u0027ll be able to report rpc_lookup_cred() failures just\nfine.  Callers are much happier that way...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d310310cbff18ec385c6ab4d58f33b100192a96a",
      "tree": "801dbbef1552256e7cefc7ec08dcd41b30a9930b",
      "parents": [
        "62c9ea6b120688d800b4d892eaf737c20a73e86b"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Dec 01 22:44:39 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Dec 06 22:12:27 2011 +0100"
      },
      "message": "Freezer / sunrpc / NFS: don\u0027t allow TASK_KILLABLE sleeps to block the freezer\n\nAllow the freezer to skip wait_on_bit_killable sleeps in the sunrpc\nlayer. This should allow suspend and hibernate events to proceed, even\nwhen there are RPC\u0027s pending on the wire.\n\nAlso, wrap the TASK_KILLABLE sleeps in NFS layer in freezer_do_not_count\nand freezer_count calls. This allows the freezer to skip tasks that are\nsleeping while looping on EJUKEBOX or NFS4ERR_DELAY sorts of errors.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "1788ea6e3b2a58cf4fb00206e362d9caff8d86a7",
      "tree": "24846fddf8b55f516f365a735defd79b6ea6d28a",
      "parents": [
        "1583171492eb514e267c7b51e96846b38de0f544"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Nov 04 13:31:21 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Nov 04 16:39:04 2011 -0400"
      },
      "message": "nfs: when attempting to open a directory, fall back on normal lookup (try #5)\n\ncommit d953126 changed how nfs_atomic_lookup handles an -EISDIR return\nfrom an OPEN call. Prior to that patch, that caused the client to fall\nback to doing a normal lookup. When that patch went in, the code began\nreturning that error to userspace. The d_revalidate codepath however\nnever had the corresponding change, so it was still possible to end up\nwith a NULL ctx-\u003estate pointer after that.\n\nThat patch caused a regression. When we attempt to open a directory that\ndoes not have a cached dentry, that open now errors out with EISDIR. If\nyou attempt the same open with a cached dentry, it will succeed.\n\nFix this by reverting the change in nfs_atomic_lookup and allowing\nattempts to open directories to fall back to a normal lookup\n\nAlso, add a NFSv4-specific f_ops-\u003eopen routine that just returns\n-ENOTDIR. This should never be called if things are working properly,\nbut if it ever is, then the dprintk may help in debugging.\n\nTo facilitate this, a new file_operations field is also added to the\nnfs_rpc_ops struct.\n\nCc: stable@kernel.org\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bfe8684869601dacfcb2cd69ef8cfd9045f62170",
      "tree": "4e213aaa766b26f43f0f9ec7998a7745239d9377",
      "parents": [
        "6d6b77f163c7eabedbba00ed2abb7d4a570bff76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Oct 28 14:13:29 2011 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@serles.lst.de",
        "time": "Wed Nov 02 12:53:43 2011 +0100"
      },
      "message": "filesystems: add set_nlink()\n\nReplace remaining direct i_nlink updates with a new set_nlink()\nupdater function.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "6d6b77f163c7eabedbba00ed2abb7d4a570bff76",
      "tree": "6ce074a7dd5a25fae28ef9de6f59ddee08ea4e61",
      "parents": [
        "dd2a981f46a0903a8770a784f213d4d40bbb6f19"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Oct 28 14:13:28 2011 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@serles.lst.de",
        "time": "Wed Nov 02 12:53:43 2011 +0100"
      },
      "message": "filesystems: add missing nlink wrappers\n\nReplace direct i_nlink updates with the respective updater function\n(inc_nlink, drop_nlink, clear_nlink, inode_dec_link_count).\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\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": "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": "533eb4611c9eea53072eb6a61d5a6393b6a77ed7",
      "tree": "adb2b4cbfe85689979d2cf971b65ebcd0d383d56",
      "parents": [
        "1d92a08da23848a38eece4df7eaa4e8ec0e6c699"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Mon Jun 13 18:25:56 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 15 11:24:29 2011 -0400"
      },
      "message": "NFSv4.1: allow nfs_fhget to succeed with mounted on fileid\n\nCommit 28331a46d88459788c8fca72dbb0415cd7f514c9 \"Ensure we request the\nordinary fileid when doing readdirplus\"\nchanged the meaning of NFS_ATTR_FATTR_FILEID which used to be set when\nFATTR4_WORD1_MOUNTED_ON_FILED was requested.\n\nAllow nfs_fhget to succeed with only a mounted on fileid when crossing\na mountpoint or a referral.\n\nAsk for the fileid of the absent file system if mounted_on_fileid is not\nsupported.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\ncc:stable@kernel.org [2.6.39]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0f66b5984df2fe1617c05900a39a7ef493ca9de9",
      "tree": "682ad324d9cfab94ffde805c6ca0372f7f40d3d3",
      "parents": [
        "0b760113a3a155269a3fba93a409c640031dd68f"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Sat Oct 16 22:07:46 2010 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jun 15 11:24:28 2011 -0400"
      },
      "message": "NFS41: do not update isize if inode needs layoutcommit\n\nnfs_update_inode will update isize if there is no queued pages. For pNFS,\nlayoutcommit is supposed to change file size on server, the same effect as queued\npages. nfs_update_inode may be called when dirty pages are written back (nfsi-\u003enpages\u003d\u003d0)\nbut layoutcommit is not sent, and it will change client file size according to server\nfile size. Then client ends up losing what it just writes back in pNFS path.\nSo we should skip updating client file size if file needs layoutcommit.\n\nSigned-off-by: Peng Tao \u003cpeng_tao@emc.com\u003e\nCc: stable@kernel.org   [2.6.39]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd1acdf1723d71b28175f95b04305f1cc74ce363",
      "tree": "7ab58883eccd314be3d8efafd59a124d4ffbb861",
      "parents": [
        "fac04863cef53a69830590b2e1c54345068a9747",
        "9342077011d54f42fa1b88b7bc1f7008dcf5fff9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 29 14:10:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 29 14:10:13 2011 -0700"
      },
      "message": "Merge branch \u0027pnfs-submit\u0027 of git://git.open-osd.org/linux-open-osd\n\n* \u0027pnfs-submit\u0027 of git://git.open-osd.org/linux-open-osd: (32 commits)\n  pnfs-obj: pg_test check for max_io_size\n  NFSv4.1: define nfs_generic_pg_test\n  NFSv4.1: use pnfs_generic_pg_test directly by layout driver\n  NFSv4.1: change pg_test return type to bool\n  NFSv4.1: unify pnfs_pageio_init functions\n  pnfs-obj: objlayout_encode_layoutcommit implementation\n  pnfs: encode_layoutcommit\n  pnfs-obj: report errors and .encode_layoutreturn Implementation.\n  pnfs: encode_layoutreturn\n  pnfs: layoutret_on_setattr\n  pnfs: layoutreturn\n  pnfs-obj: osd raid engine read/write implementation\n  pnfs: support for non-rpc layout drivers\n  pnfs-obj: define per-inode private structure\n  pnfs: alloc and free layout_hdr layoutdriver methods\n  pnfs-obj: objio_osd device information retrieval and caching\n  pnfs-obj: decode layout, alloc/free lseg\n  pnfs-obj: pnfs_osd XDR client implementation\n  pnfs-obj: pnfs_osd XDR definitions\n  pnfs-obj: objlayoutdriver module skeleton\n  ...\n"
    },
    {
      "commit": "cbe8260369c9f88eafa035cd327dc3e02fad528c",
      "tree": "13316d9b1a761cf58c35e663375b72f6ac07c5d2",
      "parents": [
        "04f83450388e87d86b387cf4a27b81eb7e69de7d"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Sun May 22 19:52:37 2011 +0300"
      },
      "committer": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Sun May 29 20:54:36 2011 +0300"
      },
      "message": "pnfs: layoutreturn\n\nNFSv4.1 LAYOUTRETURN implementation\n\nCurrently, does not support layout-type payload encoding.\n\nSigned-off-by: Alexandros Batsakis \u003cbatsakis@netapp.com\u003e\nSigned-off-by: Andy Adamson \u003candros@citi.umich.edu\u003e\nSigned-off-by: Andy Adamson \u003candros@netapp.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: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: Zhang Jingwang \u003czhangjingwang@nrchpc.ac.cn\u003e\n[call pnfs_return_layout right before pnfs_destroy_layout]\n[remove assert_spin_locked from pnfs_clear_lseg_list]\n[remove wait parameter from the layoutreturn path.]\n[remove return_type field from nfs4_layoutreturn_args]\n[remove range from nfs4_layoutreturn_args]\n[no need to send layoutcommit from _pnfs_return_layout]\n[don\u0027t wait on sync layoutreturn]\n[fix layout stateid in layoutreturn args]\n[fixed NULL deref in _pnfs_return_layout]\n[removed recaim member of nfs4_layoutreturn_args]\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\n"
    },
    {
      "commit": "60c16ea877546e559988a8b1e4f4256afbbd83e6",
      "tree": "8919b0eca26baef38a730389321748c46570e2b1",
      "parents": [
        "444f72fe7e7b5f4db34cee933fa3546ebb8e9122"
      ],
      "author": {
        "name": "Harshula Jayasuriya",
        "email": "harshula@redhat.com",
        "time": "Mon May 23 22:52:11 2011 +1000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 27 17:42:01 2011 -0400"
      },
      "message": "NFS: nfs_update_inode: print current and new inode size in debug output\n\nHi Trond,\n\nIn nfs_update_inode debug output, print the current and new inode\nsize when the file size changes on the NFS server.\n\nSigned-off-by: Harshula Jayasuriya \u003charshula@redhat.com\u003e\nReviewed-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0acd2201920d0968919f4f5797d63f7b6f2b19d4",
      "tree": "9b241d264f42eff3ff4eeffb67616fca0490e460",
      "parents": [
        "8f70e95f9f4159184f557a1db60c909d7c1bd2e3",
        "35124a0994fc02545b14b9fa3aad000b3331f1c0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "message": "Merge branch \u0027nfs-for-2.6.39\u0027 into nfs-for-next\n"
    },
    {
      "commit": "7ebb931598cd95cccea10d4bc4c0123a464ea565",
      "tree": "dec1af6eefdbbc3ce42346d7c6d407088eaf509e",
      "parents": [
        "5a5ea0d485c9715c86bf858bbdc5f6d373b3db88"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:30 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:42 2011 -0400"
      },
      "message": "NFS: use secinfo when crossing mountpoints\n\nA submount may use different security than the parent\nmount does.  We should figure out what sec flavor the\nsubmount uses at mount time.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@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": "480c2006ebb44ae03165695db7b3e38c04e0d102",
      "tree": "20bb22ea6db986e91017734f6c0390e1211b1765",
      "parents": [
        "e47c085afb3d16cbc6a4bfb10a3b074bb7c58998"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Mar 23 14:48:29 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 23 15:13:11 2011 -0400"
      },
      "message": "NFS: Create nfs_open_dir_context\n\nnfs_opendir() created a context that held much more information than we\nneed for a readdir.  This patch introduces a slimmed-down\nnfs_open_dir_context that contains only the cookie and the cred used for\nRPC operations.  The new context will eventually be used to help detect\nreaddir loops.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bd2895eeade5f11f3e5906283c630bbdb4b57454",
      "tree": "4d98f4fcd80c7d062afce28823d08aee53e66f82",
      "parents": [
        "016aa2ed1cc9cf704cf76d8df07751b6daa9750f",
        "24d51add7438f9696a7205927bf9de3c5c787a58"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  workqueue: fix build failure introduced by s/freezeable/freezable/\n  workqueue: add system_freezeable_wq\n  rds/ib: use system_wq instead of rds_ib_fmr_wq\n  net/9p: replace p9_poll_task with a work\n  net/9p: use system_wq instead of p9_mux_wq\n  xfs: convert to alloc_workqueue()\n  reiserfs: make commit_wq use the default concurrency level\n  ocfs2: use system_wq instead of ocfs2_quota_wq\n  ext4: convert to alloc_workqueue()\n  scsi/scsi_tgt_lib: scsi_tgtd isn\u0027t used in memory reclaim path\n  scsi/be2iscsi,qla2xxx: convert to alloc_workqueue()\n  misc/iwmc3200top: use system_wq instead of dedicated workqueues\n  i2o: use alloc_workqueue() instead of create_workqueue()\n  acpi: kacpi*_wq don\u0027t need WQ_MEM_RECLAIM\n  fs/aio: aio_wq isn\u0027t used in memory reclaim path\n  input/tps6507x-ts: use system_wq instead of dedicated workqueue\n  cpufreq: use system_wq instead of dedicated workqueues\n  wireless/ipw2x00: use system_wq instead of dedicated workqueues\n  arm/omap: use system_wq in mailbox\n  workqueue: use WQ_MEM_RECLAIM instead of WQ_RESCUER\n"
    },
    {
      "commit": "3fa0b4e201d254b52a251fa348bd53e53000cff6",
      "tree": "ad5e41b45d5c8603901b34631b688ae5e3793942",
      "parents": [
        "43b7c3f051dea504afccc39bcb56d8e26c2e0b77"
      ],
      "author": {
        "name": "Frank Filz",
        "email": "ffilzlnx@us.ibm.com",
        "time": "Thu Dec 02 19:31:23 2010 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 10 15:04:58 2011 -0500"
      },
      "message": "(try3-resend) Fix nfs_compat_user_ino64 so it doesn\u0027t cause problems if bit 31 or 63 are set in fileid\n\nThe problem was use of an int32, which when converted to a uint64\nis sign extended resulting in a fileid that doesn\u0027t fit in 32 bits\neven though the intent of the function is to fit the fileid into\n32 bits.\n\nSigned-off-by: Frank Filz \u003cffilzlnx@us.ibm.com\u003e\nReviewed-by: Jeff Layton \u003cjlayton@redhat.com\u003e\n[Trond: Added an include for compat.h]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "43d133c18b44e7d82d82ef0dcc2bddd55d5dfe81",
      "tree": "8de75c837b55874cc8a81a29bdedbc62668d4481",
      "parents": [
        "4149efb22da66e326fc48baf80d628834509f7f0",
        "6f576d57f1fa0d6026b495d8746d56d949989161"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 21 09:43:56 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 21 09:43:56 2011 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.39\n"
    },
    {
      "commit": "27dc1cd3ad9300f81e1219e5fc305d91d85353f8",
      "tree": "5f242e02274ce115154e2400b298b82b39302ed2",
      "parents": [
        "b2a2897dc4a59684321de425652061c62a0569d0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 25 15:28:21 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 25 15:28:21 2011 -0500"
      },
      "message": "NFS: nfs_wcc_update_inode() should set nfsi-\u003eattr_gencount\n\nIf the call to nfs_wcc_update_inode() results in an attribute update, we\nneed to ensure that the inode\u0027s attr_gencount gets bumped too, otherwise\nwe are not protected against races with other GETATTR calls.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ada609ee2ac2e03bd8abb07f9b3e92cd2e650f19",
      "tree": "ccc1051a961b12448420428b5a400a6333d3e821",
      "parents": [
        "c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 25 14:35:54 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 25 14:35:54 2011 +0100"
      },
      "message": "workqueue: use WQ_MEM_RECLAIM instead of WQ_RESCUER\n\nWQ_RESCUER is now an internal flag and should only be used in the\nworkqueue implementation proper.  Use WQ_MEM_RECLAIM instead.\n\nThis doesn\u0027t introduce any functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: dm-devel@redhat.com\nCc: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "36d43a43761b004ad1879ac21471d8fc5f3157ec",
      "tree": "6cb6c6d978f4e58de7f9bf901707d6929f098345",
      "parents": [
        "d18610b0ce9eb48c60649d8fcbf68374c84349d3"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jan 14 18:45:42 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:07:34 2011 -0500"
      },
      "message": "NFS: Use d_automount() rather than abusing follow_link()\n\nMake NFS use the new d_automount() dentry operation rather than abusing\nfollow_link() on directories.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b9d919a4ac6cf031b8e065f82ad8f1b0c9ed74b1",
      "tree": "3139b066396956fd3794df0cb1aa74dcc9f1cb28",
      "parents": [
        "7c955fca3e1d8132982148267d9efcafae849bb6",
        "357f54d6b38252737116a6d631f6ac28ded018ed"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 15:11:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 15:11:56 2011 -0800"
      },
      "message": "Merge branch \u0027nfs-for-2.6.38\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.38\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (89 commits)\n  NFS fix the setting of exchange id flag\n  NFS: Don\u0027t use vm_map_ram() in readdir\n  NFSv4: Ensure continued open and lockowner name uniqueness\n  NFS: Move cl_delegations to the nfs_server struct\n  NFS: Introduce nfs_detach_delegations()\n  NFS: Move cl_state_owners and related fields to the nfs_server struct\n  NFS: Allow walking nfs_client.cl_superblocks list outside client.c\n  pnfs: layout roc code\n  pnfs: update nfs4_callback_recallany to handle layouts\n  pnfs: add CB_LAYOUTRECALL handling\n  pnfs: CB_LAYOUTRECALL xdr code\n  pnfs: change lo refcounting to atomic_t\n  pnfs: check that partial LAYOUTGET return is ignored\n  pnfs: add layout to client list before sending rpc\n  pnfs: serialize LAYOUTGET(openstateid)\n  pnfs: layoutget rpc code cleanup\n  pnfs: change how lsegs are removed from layout list\n  pnfs: change layout state seqlock to a spinlock\n  pnfs: add prefix to struct pnfs_layout_hdr fields\n  pnfs: add prefix to struct pnfs_layout_segment fields\n  ...\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "4541d16c024ce40a0781e03c185ecdfe34aec46f",
      "tree": "53574211b3de874869b09644b8de872ccf2d4fe1",
      "parents": [
        "fd6002e9b8a93220d5f53b93d9624caf73cdc8a2"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Thu Jan 06 11:36:23 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 06 14:46:31 2011 -0500"
      },
      "message": "pnfs: change how lsegs are removed from layout list\n\nThis is to prepare the way for sensible io draining.  Instead of just\nremoving the lseg from the list, we instead clear the VALID flag\n(preventing new io from grabbing references to the lseg) and remove\nthe reference holding it in the list.  Thus the lseg will be removed\nonce any io in progress completes and any references still held are\ndropped.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f4eecd5da3422e82e88e36c33cbd2595eebcacb1",
      "tree": "8e49bbe401ed4233e1652843489a4360a94dc69b",
      "parents": [
        "ea00528126a701845d7c445e725b271940381e3d"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Thu Jan 06 02:04:30 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 06 14:46:24 2011 -0500"
      },
      "message": "NFS implement v4.0 callback_ident\n\nUse the small id to pointer translator service to provide a unique callback\nidentifier per SETCLIENTID call used to identify the v4.0 callback service\nassociated with the clientid.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "11de3b11e08cac26d59e88efaf4e316701883552",
      "tree": "e4cc282e692560897c42c5fbc8df227d5da669d4",
      "parents": [
        "6072d13c429373c5d63b69dadbbef40a9b035552"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Dec 01 14:17:06 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 02 09:58:00 2010 -0500"
      },
      "message": "NFS: Fix a memory leak in nfs_readdir\n\nWe need to ensure that the entries in the nfs_cache_array get cleared\nwhen the page is removed from the page cache. To do so, we use the\nfreepage address_space operation.\n\nChange nfs_readdir_clear_array to use kmap_atomic(), so that the\nfunction can be safely called from all contexts.\n\nFinally, modify the cache_page_release helper to call\nnfs_readdir_clear_array directly, when dealing with an anonymous\npage from \u0027uncached_readdir\u0027.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e5e940170b2136ad4d5483ef293ae284b9cc8d53",
      "tree": "1568bf55addee6a6fdc091026083426b087e68df",
      "parents": [
        "7ab672ce312133ee4a5d85b71447b2b334403681"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Wed Oct 20 00:18:01 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Oct 24 18:07:10 2010 -0400"
      },
      "message": "NFS: create and destroy inode\u0027s layout cache\n\nAt the start of the io paths, try to grab the relevant layout\ninformation.  This will initiate the inode\u0027s layout cache, but\nstubs ensure the cache stays empty.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Dean Hildebrand \u003cdhildebz@umich.edu\u003e\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: Tao Guo \u003cguotao@nrchpc.ac.cn\u003e\nSigned-off-by: Ricardo Labiaga \u003cricardo.labiaga@netapp.com\u003e\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\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": "0715dc632a271fc0fedf3ef4779fe28ac1e53ef4",
      "tree": "bbbb9fa7e47f478810ab0724fc687ec374978df1",
      "parents": [
        "d39ab9de3b80da5835049b1c3b49da4e84e01c07"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Fri Sep 24 18:50:01 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 23 15:27:32 2010 -0400"
      },
      "message": "NFS: remove readdir plus limit\n\nWe will now use readdir plus even on directories that are very large.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "955a857e062642cd3ebe1dc7bb38c0f85d8f8f17",
      "tree": "f95fc349c245c4a0a3f6f8fcc5bf02f36a756134",
      "parents": [
        "aa510da5bfe1dfe263215fd0e05dac96e738a782"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Sep 29 15:41:49 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Oct 07 18:48:49 2010 -0400"
      },
      "message": "NFS: new idmapper\n\nThis patch creates a new idmapper system that uses the request-key function to\nplace a call into userspace to map user and group ids to names.  The old\nidmapper was single threaded, which prevented more than one request from running\nat a single time.  This means that a user would have to wait for an upcall to\nfinish before accessing a cached result.\n\nThe upcall result is stored on a keyring of type id_resolver.  See the file\nDocumentation/filesystems/nfs/idmapper.txt for instructions.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\n[Trond: fix up the return value of nfs_idmap_lookup_name and clean up code]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5c78f58e2d5cef65c255a556184f1f43c8d84c84",
      "tree": "64d9e8274e40343851e38a9ceadbe9d17e8cce2c",
      "parents": [
        "dfb4f309830359352539919f23accc59a20a3758"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Sep 27 15:51:20 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Sep 29 14:41:36 2010 -0400"
      },
      "message": "NFS: Really fix put_nfs_open_context()\n\nIn nfs_open_revalidate(), if the open_context() call returns an inode that\nis not the same as dentry-\u003ed_inode, then we will call\nput_nfs_open_context() with a valid dentry-\u003ed_inode, but without the\ncontext being part of the nfsi-\u003eopen_files list.\n\nIn this case too, we want to just skip the list removal, but we do want to\ncall the -\u003eclose_context() callback in order to close the NFSv4 state.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Jeff Layton \u003cjlayton@redhat.com\u003e\n"
    },
    {
      "commit": "ef84303ebc77a9041265faaccd56b7fcef151077",
      "tree": "971755468ab947358ee3d1348a6aca2df08bcc49",
      "parents": [
        "5eebde23223aeb0ad2d9e3be6590ff8bbfab0fc2"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Thu Sep 23 12:22:09 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Sep 23 12:22:09 2010 -0400"
      },
      "message": "NFS: handle inode\u003d\u003dNULL in __put_nfs_open_context\n\ninode may be NULL when put_nfs_open_context is called from nfs_atomic_lookup\nbefore d_add_unique(dentry, inode)\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "609588928fae2c977c887d6d31b1f0aae60ea09e",
      "tree": "4f19ada54298ade22a11d57cba0fca203cd2522d",
      "parents": [
        "4fbf6e507888da902b02a3c4f5f493fab1071312"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 21 16:55:31 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Sep 21 16:55:31 2010 -0400"
      },
      "message": "NFS: Convert nfsiod to use alloc_workqueue()\n\ncreate_singlethread_workqueue() is deprecated.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "cd9a1c0e5ac681871d64804f82291649e2a0accb",
      "tree": "900c2bf6ba75c2a02af07091afcf4ba4cfdb2396",
      "parents": [
        "859d5024f450686ad0a42ed3c06f2fa20295c9e6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 17 10:56:50 2010 -0400"
      },
      "message": "NFSv4: Clean up nfs4_atomic_open\n\nStart moving the \u0027struct nameidata\u0027 dependent code out of the lower level\nNFS code in preparation for the removal of open intents.\n\nInstead of the struct nameidata, we pass down a partially initialised\nstruct nfs_open_context that will be fully initialised by the atomic open\nupon success.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "b57922d97fd6f79b6dbe6db0c4fd30d219fa08c1",
      "tree": "1d39e9cd8e1c1f502fb7e985a08286859c69aa36",
      "parents": [
        "45321ac54316eaeeebde0b5f728a1791e500974c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 14:34:48 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:37 2010 -0400"
      },
      "message": "convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1b924e5f878e3cd62a20bd8dbf3b911a40185a99",
      "tree": "a24a76be037ee49900611eb9b3883adf22410236",
      "parents": [
        "af7fa16506bf9b6323e862a61e14c20555152bb3"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 31 14:29:06 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 03 22:06:40 2010 -0400"
      },
      "message": "NFS: Clean up the callers of nfs_wb_all()\n\nThere is no need to flush out writes before calling nfs_wb_all().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f11ac8db5d07b6e99d41ff4aa39d878ee5cef1c5",
      "tree": "4393cbc2653145ba3269d5143f5db7811a59698b",
      "parents": [
        "1f0e890dba5b0f543fea47732116b1c65d55614e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jun 25 16:35:53 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jul 30 14:41:56 2010 -0400"
      },
      "message": "NFSv4: Ensure that we track the NFSv4 lock state in read/write requests.\n\nThis patch fixes bugzilla entry 14501:\n  https://bugzilla.kernel.org/show_bug.cgi?id\u003d14501\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "d7cf8dd01289b3c64057e38d34c2857f6633d52c",
      "tree": "600143a42314da064fc0b8dec236c85f2f45d16b",
      "parents": [
        "a8ce4a8f37fef0a09a1e920c2e09f67a80426c7e"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:42:46 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:30 2010 -0400"
      },
      "message": "NFSv4: Allow attribute caching with \u0027noac\u0027 mounts if client holds a delegation\n\nIf the server has given us a delegation on a file, we _know_ that we can\ncache the attribute information even when the user has specified \u0027noac\u0027.\n\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "987f8dfc9862f2c7b59594089793dedeebf0cf5e",
      "tree": "2aa0d3687898edcf26b81770e356a90a3358f9df",
      "parents": [
        "0ab64e0e147e45c07e33d344401cf898a6c181c0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:52 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:27 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs_setattr()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a3cba2aad9c0a63279716d377efbf37c176ed400",
      "tree": "fdd2291d67c611947bb93022ff8e2d17a093f4ae",
      "parents": [
        "c407d41a1612aa487f5a9cb5338ed7dc60fe1da2"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:49 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:24 2010 -0400"
      },
      "message": "NFS: Reduce stack footprint of nfs_revalidate_inode()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "2d36bfde8565b315e624302d12da5a7c9d195522",
      "tree": "5760ff58853027df0343c6bab0530025cd7a6fa1",
      "parents": [
        "fc54a0c65fc8cae6b0355512f0b619c1515e7d7f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 16 16:22:45 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri May 14 15:09:21 2010 -0400"
      },
      "message": "NFS: Add helper functions for allocating filehandles and fattr structs\n\nNFS Filehandles and struct fattr are really too large to be allocated on\nthe stack. This patch adds in a couple of helper functions to allocate them\ndynamically instead.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1544fa0f7a46241582abc48f07b74f3d846379e4",
      "tree": "2557435df56c5beadf9ad8c3dabc93b07a78aed9",
      "parents": [
        "80e60639f1b7c121a7fea53920c5a4b94009361a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 25 13:54:49 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Apr 09 19:08:16 2010 -0400"
      },
      "message": "NFS: Fix the mode calculation in nfs_find_open_context\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "b4d2314bb88b07e5a04e6c75b442a1dfcd60e340",
      "tree": "9727944bf30a47cf02f9b9547adcaeafeee25843",
      "parents": [
        "49697ee79242d5f8ac88f1ebc62e583d16bcc687"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 10 15:21:44 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 10 15:21:44 2010 -0500"
      },
      "message": "NFSv4: Don\u0027t ignore the NFS_INO_REVAL_FORCED flag in nfs_revalidate_inode()\n\nIf the NFS_INO_REVAL_FORCED flag is set, that means that we don\u0027t yet have\nan up to date attribute cache. Even if we hold a delegation, we must\nput a GETATTR on the wire.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "3fa04ecd72780da31ba8b329e148179bc24a9c7d",
      "tree": "f5d462fd4aee086952d18f159f737c450ab46b3b",
      "parents": [
        "180b62a3d837613fcac3ce89576526423926c3c3",
        "1cda707d52e51a6cafac0aef12d2bd7052d572e6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:46:18 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:46:18 2010 -0500"
      },
      "message": "Merge branch \u0027writeback-for-2.6.34\u0027 into nfs-for-2.6.34\n"
    },
    {
      "commit": "1cda707d52e51a6cafac0aef12d2bd7052d572e6",
      "tree": "7a63b005631cca98f62ea199fef739eddce85d32",
      "parents": [
        "5cf95214ccb915591e2214f81de4659302d3e452"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:30 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:56 2010 -0500"
      },
      "message": "NFS: Remove requirement for inode-\u003ei_mutex from nfs_invalidate_mapping\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5cf95214ccb915591e2214f81de4659302d3e452",
      "tree": "3afcc0d8db911b117a3537846d81d5a5172827cc",
      "parents": [
        "7f2f12d963e7c33a93bfb0b22f0178eb1e6a4196"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:29 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:56 2010 -0500"
      },
      "message": "NFS: Clean up nfs_sync_mapping\n\nRemove the redundant call to filemap_write_and_wait().\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "acdc53b2146c7ee67feb1f02f7bc3020126514b8",
      "tree": "3d8b087e8526c4caed87229fe12c2a2b261dd0a5",
      "parents": [
        "c988950eb6dd6f8e6d98503ca094622729e9aa13"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 17:03:26 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:55 2010 -0500"
      },
      "message": "NFS: Replace __nfs_write_mapping with sync_inode()\n\nNow that we have correct COMMIT semantics in writeback_single_inode, we can\nreduce and simplify nfs_wb_all(). Also replace nfs_wb_nocommit() with a\ncall to filemap_write_and_wait(), which doesn\u0027t need to hold the\ninode-\u003ei_mutex.\n\nWith that done, we can eliminate nfs_write_mapping() altogether.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ff778d02bf867e1733a09b34ad6dbb723b024814",
      "tree": "d22e33628b93f31c08089a3bf0ec4cc00a409b7a",
      "parents": [
        "8fc795f703c5138e1a8bfb88c69f52632031aa6a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 16:53:39 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:54 2010 -0500"
      },
      "message": "NFS: Add a count of the number of unstable writes carried by an inode\n\nIn order to know when we should do opportunistic commits of the unstable\nwrites, when the VM is doing a background flush, we add a field to count\nthe number of unstable writes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8fc795f703c5138e1a8bfb88c69f52632031aa6a",
      "tree": "aed975562fe5557ff552bc0fe45b5d2b6f5e56c9",
      "parents": [
        "9467c4fdd66f6810cecef0f1173330f3c6e67d45"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 19 16:46:56 2010 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 05 15:44:53 2010 -0500"
      },
      "message": "NFS: Cleanup - move nfs_write_inode() into fs/nfs/write.c\n\nThe sole purpose of nfs_write_inode is to commit unstable writes, so\nmove it into fs/nfs/write.c, and make nfs_commit_inode static.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a9185b41a4f84971b930c519f0c63bd450c4810d",
      "tree": "268cf4e206cca12fb9e1dd68984e7c190e465b46",
      "parents": [
        "26821ed40b4230259e770c9911180f38fcaa6f59"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:37 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:52 2010 -0500"
      },
      "message": "pass writeback_control to -\u003ewrite_inode\n\nThis gives the filesystem more information about the writeback that\nis happening.  Trond requested this for the NFS unstable write handling,\nand other filesystems might benefit from this too by beeing able to\ndistinguish between the different callers in more detail.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "26821ed40b4230259e770c9911180f38fcaa6f59",
      "tree": "40cd0fed705ec59dd3c909b96452bae1fc532796",
      "parents": [
        "64ba9926759792cf7b95f823402e2781edd1b5d4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:21 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:10 2010 -0500"
      },
      "message": "make sure data is on disk before calling -\u003ewrite_inode\n\nSimilar to the fsync issue fixed a while ago in commit\n2daea67e966dc0c42067ebea015ddac6834cef88 we need to write for data to\nactually hit the disk before writing out the metadata to guarantee\ndata integrity for filesystems that modify the inode in the data I/O\ncompletion path.  Currently XFS and NFS handle this manually, and AFS\nhas a write_inode method that does nothing but waiting for data, while\nothers are possibly missing out on this.\n\nFortunately this change has a lot less impact than the fsync change\nas none of the write_inode methods starts data writeout of any form\nby itself.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6eae7974d0490a9dbc3091f702ea1650871652a9",
      "tree": "0882fbc397ee3b54d12a78b256354fc9f2b4cc96",
      "parents": [
        "2096f759abcb42200a81d776f597362fd9265024"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 30 13:44:07 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 14:07:56 2010 -0500"
      },
      "message": "Switch alloc_nfs_open_context() to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f895c53f8ace3c3e49ebf9def90e63fc6d46d2bf",
      "tree": "93a6c17949a0e0bf194127be7cd0fa2a3bdd300f",
      "parents": [
        "7e381172cf6e0282a56374e50667515aed55166a"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Feb 01 14:17:50 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 10 08:31:05 2010 -0500"
      },
      "message": "NFS: Make close(2) asynchronous when closing NFS O_DIRECT files\n\nFor NFSv2 and v3:\n\nO_DIRECT writes are always synchronous, and aren\u0027t cached, so nothing\nshould be flushed when closing an NFS O_DIRECT file descriptor.  Thus\nthere are no write errors to report on close(2).\n\nIn addition, there\u0027s no cached data to verify on the next open(2),\nso we don\u0027t need clean GETATTR results at close time to compare with.\n\nThus, there\u0027s no need for the nfs_revalidate_inode() call when closing\nan NFS O_DIRECT file.  This reduces the number of synchronous\non-the-wire requests for a simple open-write-close of an NFS O_DIRECT\nfile by roughly 20%.\n\nFor NFSv4:\n\nCall nfs4_do_close() with wait set to zero when closing an NFS\nO_DIRECT file.  The CLOSE will go on the wire, but the application\nwon\u0027t wait for it to complete.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9b4b351346b41d923d69adec865814fdaac4dba9",
      "tree": "b35229c40aa9e3b3ac4806f64b2fc941974cf270",
      "parents": [
        "387c149b54b4321cbc790dadbd4f8eedb5a90468"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 03 08:27:35 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 03 08:27:35 2010 -0500"
      },
      "message": "NFS: Don\u0027t clobber the attribute type in nfs_update_inode()\n\nIf the NFS_ATTR_FATTR_TYPE field isn\u0027t set in fattr-\u003evalid, then we should\nnot set the S_IFMT part of inode-\u003ei_mode.\n\nReported-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c08d3b0e33edce28e9cfa7b64f7fe5bdeeb29248",
      "tree": "6c161cc57a2873e6f91335113192a99531901cd8",
      "parents": [
        "25d9e2d15286281ec834b829a4aaf8969011f1cd"
      ],
      "author": {
        "name": "npiggin@suse.de",
        "email": "npiggin@suse.de",
        "time": "Fri Aug 21 02:35:06 2009 +1000"
      },
      "committer": {
        "name": "al",
        "email": "al@dizzy.pdmi.ras.ru",
        "time": "Thu Sep 24 08:41:47 2009 -0400"
      },
      "message": "truncate: use new helpers\n\nUpdate some fs code to make use of new helper functions introduced\nin the previous patch. Should be no significant change in behaviour\n(except CIFS now calls send_sig under i_lock, via inode_newsize_ok).\n\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: linux-nfs@vger.kernel.org\nCc: Trond.Myklebust@netapp.com\nCc: linux-cifs-client@lists.samba.org\nCc: sfrench@samba.org\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e571cbf1a4f8d8b6cfd4898df718dae84c75a8e1",
      "tree": "0fc9da9692a1e63cff03053fc87cc807fab5e266",
      "parents": [
        "96c61cbd0f30496bfa57ed80f7131a57aea3e4de"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 19 18:12:27 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Aug 19 18:22:15 2009 -0400"
      },
      "message": "NFS: Add a dns resolver for use with NFSv4 referrals and migration\n\nThe NFSv4 and NFSv4.1 protocols both allow for the redirection of a client\nfrom one server to another in order to support filesystem migration and\nreplication. For full protocol support, we need to add the ability to\nconvert a DNS host name into an IP address that we can feed to the RPC\nclient.\n\nWe\u0027ll reuse the sunrpc cache, now that it has been converted to work with\nrpc_pipefs.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "62ab460cf5e450e1d207a98a9c6cf2e4a6a78fd1",
      "tree": "595ca70261f46b93bda1998285e5f5c7da684cbc",
      "parents": [
        "a78cb57a106fceeba26da2907db9d8886700e1dc"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:06:19 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Aug 09 15:06:19 2009 -0400"
      },
      "message": "NFSv4: Add \u0027server capability\u0027 flags for NFSv4 recommended attributes\n\nIf the NFSv4 server doesn\u0027t support a POSIX attribute, the generic NFS code\nneeds to know that, so that it don\u0027t keep trying to poll for it.\n\nHowever, by the same count, if the NFSv4 server does support that\nattribute, then we should ensure that the inode metadata is appropriately\nlabelled as being untrusted. For instance, if we don\u0027t know the correct\nvalue of the file\u0027s uid, we should certainly not be caching ACLs or ACCESS\nresults.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef79c097bbe9724e13937271b3457df560e00370",
      "tree": "a8671781cc0c9deb85fa76a8b4211c5e693b4343",
      "parents": [
        "10329a5d48f5abc14a37d30b706e330f8598297a"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:43 2009 +0100"
      },
      "message": "NFS: Use local disk inode cache\n\nBind data storage objects in the local cache to NFS inodes.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "8ec442ae4c6577ed181682e534d4eef524e30b3c",
      "tree": "44fb9013929f7227781525d1904ac16d6723ce6e",
      "parents": [
        "3b9ce977b2f31b6c396b6fb620df9881a30fac9d"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:42 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:42 2009 +0100"
      },
      "message": "NFS: Register NFS for caching and retrieve the top-level index\n\nRegister NFS for caching and retrieve the top-level cache index object cookie.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "7fe5c398fc2186ed586db11106a6692d871d0d58",
      "tree": "1133bd775a23fb07ca759e4d6c44132c14576b75",
      "parents": [
        "b1e4adf4ea41bb8b5a7bfc1a7001f137e65495df"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:35:50 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 19 15:35:50 2009 -0400"
      },
      "message": "NFS: Optimise NFS close()\n\nClose-to-open cache consistency rules really only require us to flush out\nwrites on calls to close(), and require us to revalidate attributes on the\nvery last close of the file.\n\nCurrently we appear to be doing a lot of extra attribute revalidation\nand cache flushes.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "72cb77f4a5ace37b12dcb47a0e8637a2c28ad881",
      "tree": "62fbdd7a34884f3ea9e1b0ba6bd5a4d78263f847",
      "parents": [
        "fb8a1f11b64e213d94dfa1cebb2a42a7b8c115c4"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:30 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:30 2009 -0400"
      },
      "message": "NFS: Throttle page dirtying while we\u0027re flushing to disk\n\nThe following patch is a combination of a patch by myself and Peter\nStaubach.\n\nTrond: If we allow other processes to dirty pages while a process is doing\na consistency sync to disk, we can end up never making progress.\n\nPeter: Attached is a patch which addresses a continuing problem with\nthe NFS client generating out of order WRITE requests.  While\nthis is compliant with all of the current protocol\nspecifications, there are servers in the market which can not\nhandle out of order WRITE requests very well.  Also, this may\nlead to sub-optimal block allocations in the underlying file\nsystem on the server.  This may cause the read throughputs to\nbe reduced when reading the file from the server.\n\nPeter: There has been a lot of work recently done to address out of\norder issues on a systemic level.  However, the NFS client is\nstill susceptible to the problem.  Out of order WRITE\nrequests can occur when pdflush is in the middle of writing\nout pages while the process dirtying the pages calls\ngeneric_file_buffered_write which calls\ngeneric_perform_write which calls\nbalance_dirty_pages_rate_limited which ends up calling\nwriteback_inodes which ends up calling back into the NFS\nclient to writes out dirty pages for the same file that\npdflush happens to be working with.\n\nSigned-off-by: Peter Staubach \u003cstaubach@redhat.com\u003e\n[modification by Trond to merge the two similar patches]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fb8a1f11b64e213d94dfa1cebb2a42a7b8c115c4",
      "tree": "4b21038fae0e1a8a763d4118bd6543dc77e9b5aa",
      "parents": [
        "a65318bf3afc93ce49227e849d213799b072c5fd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:29 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:29 2009 -0400"
      },
      "message": "NFS: cleanup - remove struct nfs_inode-\u003encommit\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "9e6e70f8d8b6698e0017c56b86525aabe9c7cd4c",
      "tree": "3364c61dc3fdb1cc69b18e0cf16947abc49c0be5",
      "parents": [
        "78f945f88ef83dcc7c962614a080e0a9a2db5889"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:24 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:24 2009 -0400"
      },
      "message": "NFSv4: Support NFSv4 optional attributes in the struct nfs_fattr\n\nCurrently, filling struct nfs_fattr is more or less an all or nothing\noperation, since NFSv2 and NFSv3 have only mandatory attributes.\nIn NFSv4, some attributes are optional, and so we may simply not be able to\nfill in those fields. Furthermore, NFSv4 allows you to specify which\nattributes you are interested in retrieving, thus permitting you to\noptimise away retrieval of attributes that you know will no change...\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "37d9d76d8b3a2ac5817e1fa3263cfe0fdb439e51",
      "tree": "ccbf57ce8f85ad8277838c50f723cbe79950eebc",
      "parents": [
        "2b57dc6cf9bf31edc0df430ea18dd1dbd3028975"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Mar 11 14:10:23 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Mar 11 14:10:23 2009 -0400"
      },
      "message": "NFS: flush cached directory information slightly more readily.\n\nIf cached directory contents becomes incorrect, there is no way to\nflush the contents.  This contrasts with files where file locking is\nthe recommended way to ensure cache consistency between multiple\napplications (a read-lock always flushes the cache).\n\nAlso while changes to files often change the size of the file (thus\ntriggering a cache flush), changes to directories often do not change\nthe apparent size (as the size is often rounded to a block size).\n\nSo it is particularly important with directories to avoid the\npossibility of an incorrect cache wherever possible.\n\nWhen the link count on a directory changes it implies a change in the\nnumber of child directories, and so a change in the contents of this\ndirectory.  So use that as a trigger to flush cached contents.\n\nWhen the ctime changes but the mtime does not, there are two possible\nreasons.\n 1/ The owner/mode information has been changed.\n 2/ utimes has been used to set the mtime backwards.\n\nIn the first case, a data-cache flush is not required.\nIn the second case it is.\n\nSo on the basis that correctness trumps performance, flush the\ndirectory contents cache in this case also.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    }
  ],
  "next": "2b57dc6cf9bf31edc0df430ea18dd1dbd3028975"
}
