)]}'
{
  "log": [
    {
      "commit": "89d77c8fa8e6d1cb7e2cce95b428be30ddcc6f23",
      "tree": "37a076ec2675209fd78bc6ac0474dbecee8d11e7",
      "parents": [
        "1c606fb74c758beafd98cbad9a9133eadeec2371"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 30 16:05:25 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 19:06:52 2012 -0400"
      },
      "message": "NFS: Convert v4 into a module\n\nThis patch exports symbols needed by the v4 module.  In addition, I also\nswitch over to using IS_ENABLED() to check if CONFIG_NFS_V4 or\nCONFIG_NFS_V4_MODULE are set.\n\nThe module (nfs4.ko) will be created in the same directory as nfs.ko and\nwill be automatically loaded the first time you try to mount over NFS v4.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1c606fb74c758beafd98cbad9a9133eadeec2371",
      "tree": "e8c057f32df3ee0a8e0341ae4ef2b23809a83da3",
      "parents": [
        "ddda8e0aa8b955e20cb80908189bfa154ab54837"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 30 16:05:24 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 19:06:46 2012 -0400"
      },
      "message": "NFS: Convert v3 into a module\n\nThis patch exports symbols and moves over the final structures needed by\nthe v3 module.  In addition, I also switch over to using IS_ENABLED() to\ncheck if CONFIG_NFS_V3 or CONFIG_NFS_V3_MODULE are set.\n\nThe module (nfs3.ko) will be created in the same directory as nfs.ko and\nwill be automatically loaded the first time you try to mount over NFS v3.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ddda8e0aa8b955e20cb80908189bfa154ab54837",
      "tree": "ff5b1041ce86c76519c1b824161ce5d7ad2e49db",
      "parents": [
        "fac1e8e4ef417e958060a6c3a061cc1a180bd8ae"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 30 16:05:23 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 19:06:41 2012 -0400"
      },
      "message": "NFS: Convert v2 into a module\n\nThe module (nfs2.ko) will be created in the same directory as nfs.ko and\nwill be automatically loaded the first time you try to mount over NFS v2.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fac1e8e4ef417e958060a6c3a061cc1a180bd8ae",
      "tree": "1ddba7b104171b39c9985610715049409cd7916e",
      "parents": [
        "19d87ca3623956494b517f3abe0caf2616d55457"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 30 16:05:22 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 19:06:31 2012 -0400"
      },
      "message": "NFS: Keep module parameters in the generic NFS client\n\nOtherwise we break backwards compatibility when v4 becomes a modules.\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "19d87ca3623956494b517f3abe0caf2616d55457",
      "tree": "b887ceec474eaaa9cc977483dda666276f6d3fe0",
      "parents": [
        "6a74490dca897471a994a542fc7c5a469b48b46b"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 30 16:05:21 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 19:06:20 2012 -0400"
      },
      "message": "NFS: Split out remaining NFS v4 inode functions\n\nSomehow I missed this in my previous patch series, but these functions\nare only needed by the v4 code and should be moved to a v4-only file.  I\nwasn\u0027t exactly sure where I should put these functions, so I moved them\ninto nfs4super.c where I could make them static.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6a74490dca897471a994a542fc7c5a469b48b46b",
      "tree": "d1ae8565c3e51bff590858b2f681b2c35700f55f",
      "parents": [
        "1179acc6a3e260bc4edc74fa94f6c7908290eaec"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 30 16:05:20 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 19:06:05 2012 -0400"
      },
      "message": "NFS: Pass super operations and xattr handlers in the nfs_subversion\n\nI can set all variables in the nfs_fill_super() function, allowing me to\nremove the nfs4_fill_super() function.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "1179acc6a3e260bc4edc74fa94f6c7908290eaec",
      "tree": "f84a56e4cc1ea6347383b29c83df19eae05eea0f",
      "parents": [
        "ff9099f26645818563c8d396a154c2ce6ee422eb"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 30 16:05:19 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 19:05:54 2012 -0400"
      },
      "message": "NFS: Only initialize the ACL client in the v3 case\n\nv2 and v4 don\u0027t use it, so I create two new nfs_rpc_ops functions to\ninitialize the ACL client only when we are using v3.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ff9099f26645818563c8d396a154c2ce6ee422eb",
      "tree": "fdd310643049dfe4105d4cee39024f543c673555",
      "parents": [
        "e8f25e6d6d198dca7d09d8fe2c24ba3b9683bb24"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 30 16:05:18 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 19:04:53 2012 -0400"
      },
      "message": "NFS: Create a try_mount rpc op\n\nI\u0027m already looking up the nfs subversion in nfs_fs_mount(), so I have\neasy access to rpc_ops that used to be difficult to reach.  This allows\nme to set up a different mount path for NFS v2/3 and NFS v4.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e8f25e6d6d198dca7d09d8fe2c24ba3b9683bb24",
      "tree": "cabdb43bbc11b40fd95e7e2742bc8a64b76241cb",
      "parents": [
        "ab7017a3a0a64b953e091619c30413b3721d925d"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 30 16:05:17 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 19:04:45 2012 -0400"
      },
      "message": "NFS: Remove the NFS v4 xdev mount function\n\nI can now share this code with the v2 and v3 code by using the NFS\nsubversion structure.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ab7017a3a0a64b953e091619c30413b3721d925d",
      "tree": "1ec947c2794b217d7ead01ee29d8cc5aae4c51f8",
      "parents": [
        "a427b9ec4eda8cd6e641ea24541d30b641fc3140"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 30 16:05:16 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 19:04:17 2012 -0400"
      },
      "message": "NFS: Add version registering framework\n\nThis patch adds in the code to track multiple versions of the NFS\nprotocol.  I created default structures for v2, v3 and v4 so that each\nversion can continue to work while I convert them into kernel modules.\nI also removed the const parameter from the rpc_version array so that I\ncan change it at runtime.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a427b9ec4eda8cd6e641ea24541d30b641fc3140",
      "tree": "d836f21f22ac9034f2ec9b7d0e39e283f460ced6",
      "parents": [
        "5cf02d09b50b1ee1c2d536c9cf64af5a7d433f56"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Jul 25 16:53:36 2012 +0100"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 18:57:39 2012 -0400"
      },
      "message": "NFS: Fix a number of bugs in the idmapper\n\nFix a number of bugs in the NFS idmapper code:\n\n (1) Only registered key types can be passed to the core keys code, so\n     register the legacy idmapper key type.\n\n     This is a requirement because the unregister function cleans up keys\n     belonging to that key type so that there aren\u0027t dangling pointers to the\n     module left behind - including the key-\u003etype pointer.\n\n (2) Rename the legacy key type.  You can\u0027t have two key types with the same\n     name, and (1) would otherwise require that.\n\n (3) complete_request_key() must be called in the error path of\n     nfs_idmap_legacy_upcall().\n\n (4) There is one idmap struct for each nfs_client struct.  This means that\n     idmap-\u003eidmap_key_cons is shared without the use of a lock.  This is a\n     problem because key_instantiate_and_link() - as called indirectly by\n     idmap_pipe_downcall() - releases anyone waiting for the key to be\n     instantiated.\n\n     What happens is that idmap_pipe_downcall() running in the rpc.idmapd\n     thread, releases the NFS filesystem in whatever thread that is running in\n     to continue.  This may then make another idmapper call, overwriting\n     idmap_key_cons before idmap_pipe_downcall() gets the chance to call\n     complete_request_key().\n\n     I *think* that reading idmap_key_cons only once, before\n     key_instantiate_and_link() is called, and then caching the result in a\n     variable is sufficient.\n\nBug (4) is the cause of:\n\nBUG: unable to handle kernel NULL pointer dereference at           (null)\nIP: [\u003c          (null)\u003e]           (null)\nPGD 0\nOops: 0010 [#1] SMP\nCPU 1\nModules linked in: ppdev parport_pc lp parport ip6table_filter ip6_tables ebtable_nat ebtables ipt_MASQUERADE iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack nfs fscache xt_CHECKSUM auth_rpcgss iptable_mangle nfs_acl bridge stp llc lockd be2iscsi iscsi_boot_sysfs bnx2i cnic uio cxgb4i cxgb4 cxgb3i libcxgbi cxgb3 mdio ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi snd_hda_codec_realtek snd_usb_audio snd_hda_intel snd_hda_codec snd_seq snd_pcm snd_hwdep snd_usbmidi_lib snd_rawmidi snd_timer uvcvideo videobuf2_core videodev media videobuf2_vmalloc snd_seq_device videobuf2_memops e1000e vhost_net iTCO_wdt joydev coretemp snd soundcore macvtap macvlan i2c_i801 snd_page_alloc tun iTCO_vendor_support microcode kvm_intel kvm sunrpc hid_logitech_dj usb_storage i915 drm_kms_helper drm i2c_algo_bit i2c_core video [last unloaded: scsi_wait_scan]\nPid: 1229, comm: rpc.idmapd Not tainted 3.4.2-1.fc16.x86_64 #1 Gateway DX4710-UB801A/G33M05G1\nRIP: 0010:[\u003c0000000000000000\u003e]  [\u003c          (null)\u003e]           (null)\nRSP: 0018:ffff8801a3645d40  EFLAGS: 00010246\nRAX: ffff880077707e30 RBX: ffff880077707f50 RCX: ffff8801a18ccd80\nRDX: 0000000000000006 RSI: ffff8801a3645e75 RDI: ffff880077707f50\nRBP: ffff8801a3645d88 R08: ffff8801a430f9c0 R09: ffff8801a3645db0\nR10: 000000000000000a R11: 0000000000000246 R12: ffff8801a18ccd80\nR13: ffff8801a3645e75 R14: ffff8801a430f9c0 R15: 0000000000000006\nFS:  00007fb6fb51a700(0000) GS:ffff8801afc80000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\nCR2: 0000000000000000 CR3: 00000001a49b0000 CR4: 00000000000027e0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess rpc.idmapd (pid: 1229, threadinfo ffff8801a3644000, task ffff8801a3bf9710)\nStack:\n ffffffff81260878 ffff8801a3645db0 ffff8801a3645db0 ffff880077707a90\n ffff880077707f50 ffff8801a18ccd80 0000000000000006 ffff8801a3645e75\n ffff8801a430f9c0 ffff8801a3645dd8 ffffffff81260983 ffff8801a3645de8\nCall Trace:\n [\u003cffffffff81260878\u003e] ? __key_instantiate_and_link+0x58/0x100\n [\u003cffffffff81260983\u003e] key_instantiate_and_link+0x63/0xa0\n [\u003cffffffffa057062b\u003e] idmap_pipe_downcall+0x1cb/0x1e0 [nfs]\n [\u003cffffffffa0107f57\u003e] rpc_pipe_write+0x67/0x90 [sunrpc]\n [\u003cffffffff8117f833\u003e] vfs_write+0xb3/0x180\n [\u003cffffffff8117fb5a\u003e] sys_write+0x4a/0x90\n [\u003cffffffff81600329\u003e] system_call_fastpath+0x16/0x1b\nCode:  Bad RIP value.\nRIP  [\u003c          (null)\u003e]           (null)\n RSP \u003cffff8801a3645d40\u003e\nCR2: 0000000000000000\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: Steve Dickson \u003csteved@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@vger.kernel.org [\u003e\u003d 3.4]\n"
    },
    {
      "commit": "5cf02d09b50b1ee1c2d536c9cf64af5a7d433f56",
      "tree": "7851ae064cdde3cd1eb2c0ef068bfecf24f53571",
      "parents": [
        "506026c3ec270e18402f0c9d33fee37482c23861"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Mon Jul 23 13:58:51 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 18:55:59 2012 -0400"
      },
      "message": "nfs: skip commit in releasepage if we\u0027re freeing memory for fs-related reasons\n\nWe\u0027ve had some reports of a deadlock where rpciod ends up with a stack\ntrace like this:\n\n    PID: 2507   TASK: ffff88103691ab40  CPU: 14  COMMAND: \"rpciod/14\"\n     #0 [ffff8810343bf2f0] schedule at ffffffff814dabd9\n     #1 [ffff8810343bf3b8] nfs_wait_bit_killable at ffffffffa038fc04 [nfs]\n     #2 [ffff8810343bf3c8] __wait_on_bit at ffffffff814dbc2f\n     #3 [ffff8810343bf418] out_of_line_wait_on_bit at ffffffff814dbcd8\n     #4 [ffff8810343bf488] nfs_commit_inode at ffffffffa039e0c1 [nfs]\n     #5 [ffff8810343bf4f8] nfs_release_page at ffffffffa038bef6 [nfs]\n     #6 [ffff8810343bf528] try_to_release_page at ffffffff8110c670\n     #7 [ffff8810343bf538] shrink_page_list.clone.0 at ffffffff81126271\n     #8 [ffff8810343bf668] shrink_inactive_list at ffffffff81126638\n     #9 [ffff8810343bf818] shrink_zone at ffffffff8112788f\n    #10 [ffff8810343bf8c8] do_try_to_free_pages at ffffffff81127b1e\n    #11 [ffff8810343bf958] try_to_free_pages at ffffffff8112812f\n    #12 [ffff8810343bfa08] __alloc_pages_nodemask at ffffffff8111fdad\n    #13 [ffff8810343bfb28] kmem_getpages at ffffffff81159942\n    #14 [ffff8810343bfb58] fallback_alloc at ffffffff8115a55a\n    #15 [ffff8810343bfbd8] ____cache_alloc_node at ffffffff8115a2d9\n    #16 [ffff8810343bfc38] kmem_cache_alloc at ffffffff8115b09b\n    #17 [ffff8810343bfc78] sk_prot_alloc at ffffffff81411808\n    #18 [ffff8810343bfcb8] sk_alloc at ffffffff8141197c\n    #19 [ffff8810343bfce8] inet_create at ffffffff81483ba6\n    #20 [ffff8810343bfd38] __sock_create at ffffffff8140b4a7\n    #21 [ffff8810343bfd98] xs_create_sock at ffffffffa01f649b [sunrpc]\n    #22 [ffff8810343bfdd8] xs_tcp_setup_socket at ffffffffa01f6965 [sunrpc]\n    #23 [ffff8810343bfe38] worker_thread at ffffffff810887d0\n    #24 [ffff8810343bfee8] kthread at ffffffff8108dd96\n    #25 [ffff8810343bff48] kernel_thread at ffffffff8100c1ca\n\nrpciod is trying to allocate memory for a new socket to talk to the\nserver. The VM ends up calling -\u003ereleasepage to get more memory, and it\ntries to do a blocking commit. That commit can\u0027t succeed however without\na connected socket, so we deadlock.\n\nFix this by setting PF_FSTRANS on the workqueue task prior to doing the\nsocket allocation, and having nfs_release_page check for that flag when\ndeciding whether to do a commit call. Also, set PF_FSTRANS\nunconditionally in rpc_async_schedule since that function can also do\nallocations sometimes.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "159e0561e322dd8008fff59e36efff8d2bdd0b0e",
      "tree": "19a15ff455d33cb25f1747027751e46b2e79efb0",
      "parents": [
        "f44106e2173f08ccb1c9195d85a6c22388b461c1"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Tue May 29 13:57:58 2012 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 18:52:06 2012 -0400"
      },
      "message": "pnfsblock: bail out partial page IO\n\nCurrent block layout driver read/write code assumes page\naligned IO in many places. Add a checker to validate the assumption.\nOtherwise there would be data corruption like when application does\nopen(O_WRONLY) and page unaliged write.\n\nSigned-off-by: Peng Tao \u003ctao.peng@emc.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "f44106e2173f08ccb1c9195d85a6c22388b461c1",
      "tree": "cc11631a86516803ed27a40b17f5127e74fb52c9",
      "parents": [
        "c95908e4c50d218f016e3866f5abf786055df635"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Mon Jul 23 15:49:56 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 18:09:13 2012 -0400"
      },
      "message": "nfs: fix fl_type tests in NFSv4 code\n\nfl_type is not a bitmap.\n\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c95908e4c50d218f016e3866f5abf786055df635",
      "tree": "1a1da389186cd47dac12876a43559a6d6eaaad9b",
      "parents": [
        "59948db3be76099b14c7103d0f46c5454b173c3a"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Jul 18 14:20:50 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 18:09:06 2012 -0400"
      },
      "message": "NFS: fix pnfs regression with directio writes\n\nCommit 57208fa7e51 \"NFS: Create an write_pageio_init() function\"\ndid not modify the calls in direct.c, preventing direct io from\nusing pnfs.  This reintroduces that capability.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "59948db3be76099b14c7103d0f46c5454b173c3a",
      "tree": "e5829a90b1872f012cce4d93ee44cdd22218d462",
      "parents": [
        "cac5d07e3ca696dcacfb123553cf6c722111cfd3"
      ],
      "author": {
        "name": "Fred Isaman",
        "email": "iisaman@netapp.com",
        "time": "Wed Jul 18 14:20:49 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 18:08:53 2012 -0400"
      },
      "message": "NFS: fix pnfs regression with directio reads\n\nCommit 1abb50886af \"NFS: Create an read_pageio_init() function\"\ndid not modify the call in direct.c, preventing direct io from\nusing pnfs.  This reintroduces that capability.\n\nSigned-off-by: Fred Isaman \u003ciisaman@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0add3e8567a42b8137e26c0595a59f893d8592e0",
      "tree": "5ccc3076793162f73b8d953018875acaf9f9d85c",
      "parents": [
        "bb6e071f845d32545e3e943058012f328a2e95ad"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Fri Jul 27 11:49:26 2012 -0700"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 30 17:30:24 2012 -0400"
      },
      "message": "nfs: fix stub return type warnings\n\nFix numerous repeated warnings by making the stub function\nvoid instead of non-void:\n\nfs/nfs/nfs4_fs.h: In function \u0027nfs4_unregister_sysctl\u0027:\nfs/nfs/nfs4_fs.h:385:1: warning: no return statement in function returning non-void\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nCc:\tTrond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "bb6e071f845d32545e3e943058012f328a2e95ad",
      "tree": "771464fc5916d267a6e49d251610fcf065502be1",
      "parents": [
        "013448c59b8a8cf71a5ff89641f78b620671ccb0"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Tue Jul 17 15:18:30 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 17:02:57 2012 -0400"
      },
      "message": "NFS: exit_nfs_v4() shouldn\u0027t be an __exit function\n\n... yet.  Right now, init_nfs() is calling this function if an error is\nencountered when loading the nfs module.  An __exit function can\u0027t be\ncalled from one declared as __init.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ec409897e7c71596cc080135ef5f86b81a0e9813",
      "tree": "587340088a7c6ce81e2e21430abc0e0cec472af4",
      "parents": [
        "fbdefd6442811392e857721573b63a51d1149cc8"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 16 16:39:21 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 13:33:56 2012 -0400"
      },
      "message": "NFS: Split out NFS v4 client functions\n\nThese functions are only needed by NFS v4, so they can be moved into a\nv4 specific file.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fbdefd6442811392e857721573b63a51d1149cc8",
      "tree": "d3b36fa0af3a91a22c3799db13c4cb07d0ec2fff",
      "parents": [
        "3cadf4b864cab9d19b935289c004799d1065cd03"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 16 16:39:20 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 13:33:55 2012 -0400"
      },
      "message": "NFS: Split out the NFS v4 filesystem types\n\nThis allows me to move the v4 mounting and unmounting functions out of\nthe generic client and into a file that is only compiled when CONFIG_NFS_V4\nis enabled.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3cadf4b864cab9d19b935289c004799d1065cd03",
      "tree": "0c35594b1d6f0fd0e2204df4e3a731c5e0eb7352",
      "parents": [
        "fcf10398f641c4450119f8a4cc27e9e584edb010"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 16 16:39:19 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 13:33:54 2012 -0400"
      },
      "message": "NFS: Create a single nfs_clone_super() function\n\nv2 and v3 shared a function for this, but v4 implemented something only\nslightly different.  Might as well share code whenever possible...\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "fcf10398f641c4450119f8a4cc27e9e584edb010",
      "tree": "6c102abc69d152affb678ef1ca80f67c409839e4",
      "parents": [
        "428360d77c801932e4b28f15160aebbdb5f5a03e"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 16 16:39:18 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 13:33:53 2012 -0400"
      },
      "message": "NFS: Split out NFS v4 server creating code\n\nThese functions are specific to NFS v4 and can be moved to nfs4client.c\nto keep them out of the generic client.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "428360d77c801932e4b28f15160aebbdb5f5a03e",
      "tree": "2e96be9e5f6d1d75009c11e0adfad16a29595851",
      "parents": [
        "a38a9eac75f0d09f1941a6e85e291c8e96bc8375"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 16 16:39:17 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 13:33:52 2012 -0400"
      },
      "message": "NFS: Initialize the NFS v4 client from init_nfs_v4()\n\nAnd split these functions out of the generic client into a v4 specific\nfile.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a38a9eac75f0d09f1941a6e85e291c8e96bc8375",
      "tree": "b94c8a48f3d3c3903232729ea4c834cbb0eb315a",
      "parents": [
        "ce4ef7c0a8a0594d7b9d088d73866a4389402a7e"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 16 16:39:16 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 13:33:51 2012 -0400"
      },
      "message": "NFS: Move the v4 getroot code to nfs4getroot.c\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ce4ef7c0a8a0594d7b9d088d73866a4389402a7e",
      "tree": "2898effa24c9b74d27b17dd8219064524537af1e",
      "parents": [
        "466bfe7f4a5bee4cdd73d3f6bd290173a8c75a40"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 16 16:39:15 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 13:33:50 2012 -0400"
      },
      "message": "NFS: Split out NFS v4 file operations\n\nThis patch moves the NFS v4 file functions into a new file that is only\ncompiled when CONFIG_NFS_V4 is enabled.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "466bfe7f4a5bee4cdd73d3f6bd290173a8c75a40",
      "tree": "1b05eafffa8d48b9ba89bde693495daa80395d56",
      "parents": [
        "129d1977ed39cbb4f091a518e4a12498c04f45ba"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 16 16:39:14 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 13:33:18 2012 -0400"
      },
      "message": "NFS: Initialize v4 sysctls from nfs_init_v4()\n\nAnd split them out of the generic client into their own file.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "129d1977ed39cbb4f091a518e4a12498c04f45ba",
      "tree": "a795a5885ba0abc2f7e22b18cf3a74c566f59684",
      "parents": [
        "73a79706d7f197a428a43fbf335bbe75cdbc221f"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 16 16:39:13 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 13:33:13 2012 -0400"
      },
      "message": "NFS: Create an init_nfs_v4() function\n\nI want to initialize all of NFS v4 in a single function that will\neventually be used as the v4 module init function.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "73a79706d7f197a428a43fbf335bbe75cdbc221f",
      "tree": "bae0bcb90c212dbf7d6f2797ace285910d66e2a8",
      "parents": [
        "ab96291ea16b6b9c76bfac35ccbb26a15ecb01ce"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 16 16:39:12 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 13:33:05 2012 -0400"
      },
      "message": "NFS: Split out NFS v4 inode operations\n\nThe NFS v4 file inode operations are already already in nfs4proc.c, so\nthis patch just needs to move the directory operations to the same file.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ab96291ea16b6b9c76bfac35ccbb26a15ecb01ce",
      "tree": "46c37d231ad4fc4d7443c494c299a5bd76560145",
      "parents": [
        "597d92891b8859b4b4949fd08e25e60fc80ddaaf"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 16 16:39:11 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 13:33:03 2012 -0400"
      },
      "message": "NFS: Split out NFS v3 inode operations\n\nThis patch moves the NFS v3 file and directory inode functions into\nfiles that are only compiled whet CONFIG_NFS_V3 is enabled.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "597d92891b8859b4b4949fd08e25e60fc80ddaaf",
      "tree": "c379c890a62a36b36b443cf23f81daa1605901b0",
      "parents": [
        "6bbb4ae8ffc4eef825c8742eff1fefae69a82e41"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Mon Jul 16 16:39:10 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jul 17 13:32:55 2012 -0400"
      },
      "message": "NFS: Split out NFS v2 inode operations\n\nThis patch moves the NFS v2 file and directory inode functions into\nfiles that are only compiled whet CONFIG_NFS_V2 is enabled.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6bbb4ae8ffc4eef825c8742eff1fefae69a82e41",
      "tree": "04fed137757e04a19e0065b9c1441178fcdbe585",
      "parents": [
        "de734831224e74fcaf8917386e33644c4243db95"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jul 11 16:30:59 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 15:12:16 2012 -0400"
      },
      "message": "NFS: Clean up nfs4_proc_setclientid() and friends\n\nAdd documenting comments and appropriate debugging messages.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "de734831224e74fcaf8917386e33644c4243db95",
      "tree": "cc162230a4ae0086b5d2c4bb9e9163d18d82b826",
      "parents": [
        "46a87b8a7b939900d779042da7097bf330ab787f"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jul 11 16:30:50 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 15:12:16 2012 -0400"
      },
      "message": "NFS: Treat NFS4ERR_CLID_INUSE as a fatal error\n\nFor NFSv4 minor version 0, currently the cl_id_uniquifier allows the\nLinux client to generate a unique nfs_client_id4 string whenever a\nserver replies with NFS4ERR_CLID_INUSE.\n\nThis implementation seems to be based on a flawed reading of RFC\n3530.  NFS4ERR_CLID_INUSE actually means that the client has presented\nthis nfs_client_id4 string with a different principal at some time in\nthe past, and that lease is still in use on the server.\n\nFor a Linux client this might be rather difficult to achieve: the\nauthentication flavor is named right in the nfs_client_id4.id\nstring.  If we change flavors, we change strings automatically.\n\nSo, practically speaking, NFS4ERR_CLID_INUSE means there is some other\nclient using our string.  There is not much that can be done to\nrecover automatically.  Let\u0027s make it a permanent error.\n\nRemove the recovery logic in nfs4_proc_setclientid(), and remove the\ncl_id_uniquifier field from the nfs_client data structure.  And,\nremove the authentication flavor from the nfs_client_id4 string.\n\nKeeping the authentication flavor in the nfs_client_id4.id string\nmeans that we could have a separate lease for each authentication\nflavor used by mounts on the client.  But we want just one lease for\nall the mounts on this client.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "46a87b8a7b939900d779042da7097bf330ab787f",
      "tree": "eed7d8d57049ca7278647ea714fb21a6d7b3350f",
      "parents": [
        "6a1a1e34dc55f17e7bd260809207442dbb7a0296"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jul 11 16:30:41 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 15:12:15 2012 -0400"
      },
      "message": "NFS: When state recovery fails, waiting tasks should exit\n\nNFSv4 state recovery is not always successful.  Failure is signalled\nby setting the nfs_client.cl_cons_state to a negative (errno) value,\nthen waking waiters.\n\nCurrently this can happen only during mount processing.  I\u0027m about to\nadd an explicit case where state recovery failure during normal\noperation should force all NFS requests waiting on that state recovery\nto exit.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6a1a1e34dc55f17e7bd260809207442dbb7a0296",
      "tree": "3a2ce5b9d3c8edc80f6486efc1f9b34cee559f8f",
      "parents": [
        "56d08fef2369d5ca9ad2e1fc697f5379fd8af751"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jul 11 16:31:08 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 15:12:15 2012 -0400"
      },
      "message": "SUNRPC: Add rpcauth_list_flavors()\n\nThe gss_mech_list_pseudoflavors() function provides a list of\ncurrently registered GSS pseudoflavors.  This list does not include\nany non-GSS flavors that have been registered with the RPC client.\nnfs4_find_root_sec() currently adds these extra flavors by hand.\n\nInstead, nfs4_find_root_sec() should be looking at the set of flavors\nthat have been explicitly registered via rpcauth_register().  And,\nother areas of code will soon need the same kind of list that\ncontains all flavors the kernel currently knows about (see below).\n\nRather than cloning the open-coded logic in nfs4_find_root_sec() to\nthose new places, introduce a generic RPC function that generates a\nfull list of registered auth flavors and pseudoflavors.\n\nA new rpc_authops method is added that lists a flavor\u0027s\npseudoflavors, if it has any.  I encountered an interesting module\nloader loop when I tried to get the RPC client to invoke\ngss_mech_list_pseudoflavors() by name.\n\nThis patch is a pre-requisite for server trunking discovery, and a\npre-requisite for fixing up the in-kernel mount client to do better\nautomatic security flavor selection.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "56d08fef2369d5ca9ad2e1fc697f5379fd8af751",
      "tree": "19439ef513be93f995cf9a579038c44660fbd2f4",
      "parents": [
        "38527b153a7b43e5c8103f0c2d901d11cfa26d30"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jul 11 16:30:32 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 14:53:43 2012 -0400"
      },
      "message": "NFS: nfs_getaclargs.acl_len is a size_t\n\nSquelch compiler warnings:\n\nfs/nfs/nfs4proc.c: In function ‘__nfs4_get_acl_uncached’:\nfs/nfs/nfs4proc.c:3811:14: warning: comparison between signed and\n\tunsigned integer expressions [-Wsign-compare]\nfs/nfs/nfs4proc.c:3818:15: warning: comparison between signed and\n\tunsigned integer expressions [-Wsign-compare]\n\nIntroduced by commit bf118a34 \"NFSv4: include bitmap in nfsv4 get\nacl data\", Dec 7, 2011.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "38527b153a7b43e5c8103f0c2d901d11cfa26d30",
      "tree": "ac3736a12230b2bfe5793ac8441e0ac6ef2a78a7",
      "parents": [
        "3e60ffdd36fa518cc1822941dbb011e7a9adf513"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jul 11 16:30:23 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 14:53:34 2012 -0400"
      },
      "message": "NFS: Clean up TEST_STATEID and FREE_STATEID error reporting\n\nAs a finishing touch, add appropriate documenting comments and some\ndebugging printk\u0027s.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3e60ffdd36fa518cc1822941dbb011e7a9adf513",
      "tree": "252c39f5ab56378b06f8bc6ca04e7a6fe9874c02",
      "parents": [
        "eb64cf964d453f8b559a8c0c2625952dbbcb5838"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jul 11 16:30:14 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 14:49:40 2012 -0400"
      },
      "message": "NFS: Clean up nfs41_check_expired_stateid()\n\nClean up: Instead of open-coded flag manipulation, use test_bit() and\nclear_bit() just like all other accessors of the state-\u003eflag field.\nThis also eliminates several unnecessary implicit integer type\nconversions.\n\nTo make it absolutely clear what is going on, a number of comments\nare introduced.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "eb64cf964d453f8b559a8c0c2625952dbbcb5838",
      "tree": "b6ac6d9cfdee8d8ae1710d6f2fb25520d7d2a576",
      "parents": [
        "89af2739589365bf0dd2023c6a076b22ccd530f9"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jul 11 16:30:05 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 14:48:53 2012 -0400"
      },
      "message": "NFS: State reclaim clears OPEN and LOCK state\n\nThe \"state-\u003eflags \u0026 flags\" test in nfs41_check_expired_stateid()\nallows the state manager to squelch a TEST_STATEID operation when\nit is known for sure that a state ID is no longer valid.  If the\nlease was purged, for example, the client already knows that state\nID is now defunct.\n\nBut open recovery is still needed for that inode.\n\nTo force a call to nfs4_open_expired(), change the default return\nvalue for nfs41_check_expired_stateid() to force open recovery, and\nthe default return value for nfs41_check_locks() to force lock\nrecovery, if the requested flags are clear.  Fix suggested by Bryan\nSchumaker.\n\nAlso, the presence of a delegation state ID must not prevent normal\nopen recovery.  The delegation state ID must be cleared if it was\nrevoked, but once cleared I don\u0027t think it\u0027s presence or absence has\nany bearing on whether open recovery is still needed.  So the logic\nis adjusted to ignore the TEST_STATEID result for the delegation\nstate ID.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "89af2739589365bf0dd2023c6a076b22ccd530f9",
      "tree": "91608923b32aa16c7bf013bfb25d6006266c89a1",
      "parents": [
        "377e507d1572eca6372c862483f4ce4680ad310a"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jul 11 16:29:56 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 14:48:10 2012 -0400"
      },
      "message": "NFS: Don\u0027t free a state ID the server does not recognize\n\nThe result of a TEST_STATEID operation can indicate a few different\nthings:\n\n  o If NFS_OK is returned, then the client can continue using the\n    state ID under test, and skip recovery.\n\n  o RFC 5661 says that if the state ID was revoked, then the client\n    must perform an explicit FREE_STATEID before trying to re-open.\n\n  o If the server doesn\u0027t recognize the state ID at all, then no\n    FREE_STATEID is needed, and the client can immediately continue\n    with open recovery.\n\nLet\u0027s err on the side of caution: if the server clearly tells us the\nstate ID is unknown, we skip the FREE_STATEID.  For any other error,\nwe issue a FREE_STATEID.  Sometimes that FREE_STATEID will be\nunnecessary, but leaving unused state IDs on the server needlessly\nties up resources.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "377e507d1572eca6372c862483f4ce4680ad310a",
      "tree": "2e94f7d9ebb113c493e1f73986645312a8d65fd8",
      "parents": [
        "293b3b065c5ec5d15c3087ca42a52c991d7d8235"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Jul 11 16:29:45 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 14:47:52 2012 -0400"
      },
      "message": "NFS: Fix up TEST_STATEID and FREE_STATEID return code handling\n\nThe TEST_STATEID and FREE_STATEID operations can return\n-NFS4ERR_BAD_STATEID, -NFS4ERR_OLD_STATEID, or -NFS4ERR_DEADSESSION.\n\nnfs41_{test,free}_stateid() should not pass these errors to\nnfs4_handle_exception() during state recovery, since that will\nrecursively kick off state recovery again, resulting in a deadlock.\n\nIn particular, when the TEST_STATEID operation returns NFS4_OK,\nres.status can contain one of these errors.  _nfs41_test_stateid()\nreplaces NFS4_OK with the value in res.status, which is then returned\nto callers.\n\nBut res.status is not passed through nfs4_stat_to_errno(), and thus is\na positive NFS4ERR value.  Currently callers are only interested in\n!NFS4_OK, and nfs4_handle_exception() ignores positive values.\n\nThus the res.status values are currently ignored by\nnfs4_handle_exception() and won\u0027t cause the deadlock above.  Thanks to\nthis missing negative, it is only when these operations fail (which\nis very rare) that a deadlock can occur.\n\nBryan agrees the original intent was to return res.status as a\nnegative NFS4ERR value to callers of nfs41_test_stateid().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "293b3b065c5ec5d15c3087ca42a52c991d7d8235",
      "tree": "32b9422aa2d097af2618d225b925535b75492ee0",
      "parents": [
        "366d50521c57939e61e25dc27f009367447563e6"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Jun 20 15:03:34 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 14:39:00 2012 -0400"
      },
      "message": "NFSv4.1 do not send LAYOUTRETURN on emtpy plh_segs list\n\nmark_matching_lsegs_invalid() resets the mds_threshold counters and can\ndereference the layout hdr on an initial empty plh_segs list. It returns 0 both\nin the case of an initial empty list and in a non-emtpy list that was cleared\nby calls to mark_lseg_invalid.\n\nDon\u0027t send a LAYOUTRETURN if the list was initially empty.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "366d50521c57939e61e25dc27f009367447563e6",
      "tree": "d69e02a6fad26e4d746710a7b8dd2caa0047efed",
      "parents": [
        "baf6c2a44af02cf6f7cec1ff177189c78fc30f9a"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Jun 20 15:03:33 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 14:37:25 2012 -0400"
      },
      "message": "NFSv4.1 mark layout when already returned\n\nWhen the file layout driver is fencing a DS, _pnfs_return_layout can be\ncalled mulitple times per inode due to in-flight i/o referencing lsegs on it\u0027s\nplh_segs list.\n\nRemember that LAYOUTRETURN has been called, and do not call it again.\nAllow LAYOUTRETURNs after a subsequent LAYOUTGET.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "baf6c2a44af02cf6f7cec1ff177189c78fc30f9a",
      "tree": "382cd1db99147f3b3b29b044bac27d9a8dde1c98",
      "parents": [
        "82c7c7a5a9270b13380a588dc57b7541a5e4f541"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Jun 20 15:03:32 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 14:37:00 2012 -0400"
      },
      "message": "NFSv4.1 don\u0027t send LAYOUTCOMMIT if data resent through MDS\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "82c7c7a5a9270b13380a588dc57b7541a5e4f541",
      "tree": "20b38256e4ef38d34b2b291d3cdcfa322cfa0218",
      "parents": [
        "8626e4a42675ff9903f7d4fbf14d8ebc11b5926c"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Wed Jun 20 15:03:31 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 14:36:52 2012 -0400"
      },
      "message": "NFSv4.1 return the LAYOUT for each file with failed DS connection I/O\n\nFirst mark the deviceid invalid to prevent any future use. Then fence all\nfiles involved in I/O to a DS with a connection error by sending a\nLAYOUTRETURN.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8626e4a42675ff9903f7d4fbf14d8ebc11b5926c",
      "tree": "c631dfe2854cb1382a5d8f5aa11b071762ddf27d",
      "parents": [
        "a8d8f02cf0c379693762107afe812b9e52090e39",
        "9249e17fe094d853d1ef7475dd559a2cc7e23d42"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 12:01:42 2012 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Jul 16 12:01:42 2012 -0400"
      },
      "message": "Merge commit \u00279249e17fe094d853d1ef7475dd559a2cc7e23d42\u0027 into nfs-for-3.6\n\nResolve conflicts with the VFS atomic open and sget changes.\n\nConflicts:\n\tfs/nfs/nfs4proc.c\n"
    },
    {
      "commit": "9249e17fe094d853d1ef7475dd559a2cc7e23d42",
      "tree": "fa80a6044c14b38994d232c0e05cb7365800adf2",
      "parents": [
        "f015f1267b23d3530d3f874243fb83cb5f443005"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Jun 25 12:55:37 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:38:34 2012 +0400"
      },
      "message": "VFS: Pass mount flags to sget()\n\nPass mount flags to sget() so that it can use them in initialising a new\nsuperblock before the set function is called.  They could also be passed to the\ncompare function.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f015f1267b23d3530d3f874243fb83cb5f443005",
      "tree": "14db3794b2716614ee8acfaaad011d6fe7e6db44",
      "parents": [
        "be34d1a3bc4b6f357a49acb55ae870c81337e4f0"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Jun 25 12:55:28 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:38:32 2012 +0400"
      },
      "message": "VFS: Comment mount following code\n\nAdd comments describing what the directions \"up\" and \"down\" mean and ref count\nhandling to the VFS mount following family of functions.\n\nSigned-off-by: Valerie Aurora \u003cvaurora@redhat.com\u003e (Original author)\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "be34d1a3bc4b6f357a49acb55ae870c81337e4f0",
      "tree": "39caaf1b4965d47be64ce45491477fce555b2d17",
      "parents": [
        "55e4def0a6e79e7eb53017c4935adfed76510cd7"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Jun 25 12:55:18 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:37:27 2012 +0400"
      },
      "message": "VFS: Make clone_mnt()/copy_tree()/collect_mounts() return errors\n\ncopy_tree() can theoretically fail in a case other than ENOMEM, but always\nreturns NULL which is interpreted by callers as -ENOMEM.  Change it to return\nan explicit error.\n\nAlso change clone_mnt() for consistency and because union mounts will add new\nerror cases.\n\nThanks to Andreas Gruenbacher \u003cagruen@suse.de\u003e for a bug fix.\n[AV: folded braino fix by Dan Carpenter]\n\nOriginal-author: Valerie Aurora \u003cvaurora@redhat.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Valerie Aurora \u003cvalerie.aurora@gmail.com\u003e\nCc: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "55e4def0a6e79e7eb53017c4935adfed76510cd7",
      "tree": "e970472b64e95f32933ad49cb36d0ae814595e54",
      "parents": [
        "c3c4f69424db0760239762d36d0b1b6ae524008b"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Jun 25 12:55:09 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:35:54 2012 +0400"
      },
      "message": "VFS: Make chown() and lchown() call fchownat()\n\nMake the chown() and lchown() syscalls jump to the fchownat() syscall with the\nappropriate extra arguments.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c3c4f69424db0760239762d36d0b1b6ae524008b",
      "tree": "b8a6a5eb446d22604d362b7b718c2ff52c7812de",
      "parents": [
        "85d7d618c17a09cfd824c1ad4483c19e6f9637ff"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 23 22:49:45 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:35:50 2012 +0400"
      },
      "message": "do_dentry_open(): close the race with mark_files_ro() in failure exit\n\nwe want to take it out of mark_files_ro() reach *before* we start\nchecking if we ought to drop write access.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "85d7d618c17a09cfd824c1ad4483c19e6f9637ff",
      "tree": "40ec525ab50573094a1ab402877aac9e4e6053fa",
      "parents": [
        "c4107b3097465e25f7d6a9b0ac0518b07b24e774"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 23 22:41:54 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:35:46 2012 +0400"
      },
      "message": "mark_files_ro(): don\u0027t bother with mntget/mntput\n\nmnt_drop_write_file() is safe under any lock\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c4107b3097465e25f7d6a9b0ac0518b07b24e774",
      "tree": "55586999886b01a548608936ca58ccd038604235",
      "parents": [
        "b5fb63c18315c5510c1d0636179c057e0c761c77"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Jun 20 09:55:58 2012 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:35:42 2012 +0400"
      },
      "message": "notify_change(): check that i_mutex is held\n\nCc: Djalal Harouni \u003ctixxdz@opendz.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b5fb63c18315c5510c1d0636179c057e0c761c77",
      "tree": "19e42c9aa285eb64c277ece4083d4834351b3d5b",
      "parents": [
        "408ef013cc9e2f94a14f7ccbbe52ddfb18437a99"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Jun 18 10:47:04 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:35:40 2012 +0400"
      },
      "message": "fs: add nd_jump_link\n\nAdd a helper that abstracts out the jump to an already parsed struct path\nfrom -\u003efollow_link operation from procfs.  Not only does this clean up\nthe code by moving the two sides of this game into a single helper, but\nit also prepares for making struct nameidata private to namei.c\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "408ef013cc9e2f94a14f7ccbbe52ddfb18437a99",
      "tree": "3168e06e8090210a59af788ca97cd40d87b5282e",
      "parents": [
        "ac481d6ca4081bdd348cbd84963d1ece843a3407"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Jun 18 10:47:03 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:35:35 2012 +0400"
      },
      "message": "fs: move path_put on failure out of -\u003efollow_link\n\nCurrently the non-nd_set_link based versions of -\u003efollow_link are expected\nto do a path_put(\u0026nd-\u003epath) on failure.  This calling convention is unexpected,\nundocumented and doesn\u0027t match what the nd_set_link-based instances do.\n\nMove the path_put out of the only non-nd_set_link based -\u003efollow_link\ninstance into the caller.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ac481d6ca4081bdd348cbd84963d1ece843a3407",
      "tree": "1111a831ccd48cd6b955b00a19d27f97ef8d05f7",
      "parents": [
        "cfa57c11b0d5a80f7bffa1ab35bc46892127817f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 09 20:40:20 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:35:30 2012 +0400"
      },
      "message": "debugfs: get rid of useless arguments to debugfs_{mkdir,symlink}\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cfa57c11b0d5a80f7bffa1ab35bc46892127817f",
      "tree": "7b86c2c918e0790fa8623c49874f7b3c11477c25",
      "parents": [
        "c3b1a350846a11dd1054cb7832e098aa37025deb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 09 20:33:28 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:35:25 2012 +0400"
      },
      "message": "debugfs: fold debugfs_create_by_name() into the only caller\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c3b1a350846a11dd1054cb7832e098aa37025deb",
      "tree": "0915cd01d07b4b41c2133e307d7b74cb34a94a43",
      "parents": [
        "ee3efa91e240f513898050ef305a49a653c8ed90"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 09 20:28:22 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:35:19 2012 +0400"
      },
      "message": "debugfs: make sure that debugfs_create_file() gets used only for regulars\n\nIt, debugfs_create_dir() and debugfs_create_link() use the common helper\nnow.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ee3efa91e240f513898050ef305a49a653c8ed90",
      "tree": "d6cf061b3636f3c5f9840c09f3ed6ccd625cff22",
      "parents": [
        "e77fb7cef87856d9d35f2f4d617d0b97148ee7c2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 08 15:59:33 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:35:15 2012 +0400"
      },
      "message": "__d_unalias() should refuse to move mountpoints\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e77fb7cef87856d9d35f2f4d617d0b97148ee7c2",
      "tree": "5be57ddbe300bdd3d6bfc04632a9464c60f4c961",
      "parents": [
        "469796d10590341c53cff0a2959254eaf5d465de"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 07 20:56:54 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:35:12 2012 +0400"
      },
      "message": "sysfs: just use d_materialise_unique()\n\nsame as for nfs et.al.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "469796d10590341c53cff0a2959254eaf5d465de",
      "tree": "74728e34d43bbcd16600de66df8c453d3a35ee63",
      "parents": [
        "79714f72d3b964611997de512cb29198c9f2dbbb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 07 20:51:39 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:35:06 2012 +0400"
      },
      "message": "sysfs: switch to -\u003es_d_op and -\u003ed_release()\n\na) -\u003ed_iput() is wrong here - what we do to inode is completely usual, it\u0027s\ndentry-\u003ed_fsdata that we want to drop.  Just use -\u003ed_release().\n\nb) switch to -\u003es_d_op - no need to play with d_set_d_op()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "79714f72d3b964611997de512cb29198c9f2dbbb",
      "tree": "27560778736691d1edb8276897f4ed3b9411bcb2",
      "parents": [
        "1acf0af9b981027f3e73e93f0d3f85abdc794f71"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 15 03:01:42 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:35:02 2012 +0400"
      },
      "message": "get rid of kern_path_parent()\n\nall callers want the same thing, actually - a kinda-sorta analog of\nkern_path_create().  I.e. they want parent vfsmount/dentry (with\n-\u003ei_mutex held, to make sure the child dentry is still their child)\n+ the child dentry.\n\nSigned-off-by Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1acf0af9b981027f3e73e93f0d3f85abdc794f71",
      "tree": "bf09e52d1b0487dde325008b533853ac277bb264",
      "parents": [
        "312b63fba9e88a0dcf800834b8ede8716bcc1e17"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Jun 14 16:13:46 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:57 2012 +0400"
      },
      "message": "VFS: Fix the banner comment on lookup_open()\n\nSince commit 197e37d9, the banner comment on lookup_open() no longer matches\nwhat the function returns.  It used to return a struct file pointer or NULL and\nnow it returns an integer and is passed the struct file pointer it is to use\namongst its arguments.  Update the comment to reflect this.\n\nAlso add a banner comment to atomic_open().\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "312b63fba9e88a0dcf800834b8ede8716bcc1e17",
      "tree": "a069e3b9ff142912fd09f09a22466707d31c6812",
      "parents": [
        "ebfc3b49a7ac25920cb5be5445f602e51d2ea559"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 18:09:36 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:50 2012 +0400"
      },
      "message": "don\u0027t pass nameidata * to vfs_create()\n\nall we want is a boolean flag, same as the method gets now\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ebfc3b49a7ac25920cb5be5445f602e51d2ea559",
      "tree": "c3241f875dd04ab9f63b4e7ded7ed206e4df1b9f",
      "parents": [
        "72bd866a01fc62ccbc466f3eb7599b14c937e96b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 18:05:36 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:47 2012 +0400"
      },
      "message": "don\u0027t pass nameidata to -\u003ecreate()\n\nboolean \"does it have to be exclusive?\" flag is passed instead;\nLocal filesystem should just ignore it - the object is guaranteed\nnot to be there yet.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "72bd866a01fc62ccbc466f3eb7599b14c937e96b",
      "tree": "05a6e0db9d20d90d4bccbe9184ee28080b4614ec",
      "parents": [
        "00cd8dd3bf95f2cc8435b4cac01d9995635c6d0b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 17:17:17 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:40 2012 +0400"
      },
      "message": "fs/namei.c: don\u0027t pass nameidata to __lookup_hash() and lookup_real()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "00cd8dd3bf95f2cc8435b4cac01d9995635c6d0b",
      "tree": "d44be476ced0317ae79f28853734ebe2210ad38e",
      "parents": [
        "201f956e43d4542723514e024d948011dd766d43"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 17:13:09 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:32 2012 +0400"
      },
      "message": "stop passing nameidata to -\u003elookup()\n\nJust the flags; only NFS cares even about that, but there are\nlegitimate uses for such argument.  And getting rid of that\ncompletely would require splitting -\u003elookup() into a couple\nof methods (at least), so let\u0027s leave that alone for now...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "201f956e43d4542723514e024d948011dd766d43",
      "tree": "5405b793dea456b8d6b1c55c7a3007fc6c55683c",
      "parents": [
        "4ce16ef3fed92c627b4b0136c02c85c81ee105e0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 22 12:42:10 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:25 2012 +0400"
      },
      "message": "fs/namei.c: don\u0027t pass namedata to lookup_dcache()\n\njust the flags...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4ce16ef3fed92c627b4b0136c02c85c81ee105e0",
      "tree": "ec84c1cbc011462908920a800f36853058c61012",
      "parents": [
        "0b728e1911cbe6e24020727c3870628b9653f32a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 16:10:59 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:21 2012 +0400"
      },
      "message": "fs/namei.c: don\u0027t pass nameidata to d_revalidate()\n\nsince the method wrapped by it doesn\u0027t need that anymore...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0b728e1911cbe6e24020727c3870628b9653f32a",
      "tree": "cd975921b28300d62f3aca2fc37eef28af89b959",
      "parents": [
        "fa3c56bbda6c2ac2a57d96ba501dbe85cccd312b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 16:03:43 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:14 2012 +0400"
      },
      "message": "stop passing nameidata * to -\u003ed_revalidate()\n\nJust the lookup flags.  Die, bastard, die...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fa3c56bbda6c2ac2a57d96ba501dbe85cccd312b",
      "tree": "8cda2d282bf386e88cd9e05967d1624034332a75",
      "parents": [
        "facc3530fb5c89a40bc83045422add392b8db4a1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 15:36:40 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:07 2012 +0400"
      },
      "message": "fs/nfs/dir.c: switch to passing nd-\u003eflags instead of nd wherever possible\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "facc3530fb5c89a40bc83045422add392b8db4a1",
      "tree": "93279f6ca92c75b6dd09fcf21286640486ec4730",
      "parents": [
        "93420b40bb19433c3bc01c37c6c908ae7ce13228"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 15:33:51 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:02 2012 +0400"
      },
      "message": "nfs_lookup_verify_inode() - nd is *always* non-NULL here\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "93420b40bb19433c3bc01c37c6c908ae7ce13228",
      "tree": "8192cd8f8b19803648aab1cf09175fa628b48fdf",
      "parents": [
        "02e5180d991f203441687cecd0b7e6a2ba0a34d3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 15:18:15 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:57 2012 +0400"
      },
      "message": "switch nfs_lookup_check_intent() away from nameidata\n\njust pass the flags\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "02e5180d991f203441687cecd0b7e6a2ba0a34d3",
      "tree": "8699773ec227a8cbbe543b780f55df0ee45bcaea",
      "parents": [
        "2a027e7a1873812240cbdac0f55c4734ff0042a5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 14:32:45 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:54 2012 +0400"
      },
      "message": "do_dentry_open(): take initialization of file-\u003ef_path to caller\n\n... and get rid of a couple of arguments and a pointless reassignment\nin finish_open() case.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2a027e7a1873812240cbdac0f55c4734ff0042a5",
      "tree": "0442aad91b63d57dcdb9090ce9e0c66cdedad4cb",
      "parents": [
        "96b7e579addd3cdc806c1667bf5b6b126070827c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 14:24:38 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:52 2012 +0400"
      },
      "message": "fold __dentry_open() into its sole caller\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "96b7e579addd3cdc806c1667bf5b6b126070827c",
      "tree": "be156dbcf449d2408627676a63a5be758eca0ea6",
      "parents": [
        "e45198a6ac24bd2c4ad4a43b670c2f1a23dd2df3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 14:22:04 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:49 2012 +0400"
      },
      "message": "switch do_dentry_open() to returning int\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e45198a6ac24bd2c4ad4a43b670c2f1a23dd2df3",
      "tree": "d44f4217a8a556ac9ebb11cfc41c0e148fb1084c",
      "parents": [
        "2675a4eb6a9f1240098721c8a84ede28abd9d7b3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 06:48:09 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:45 2012 +0400"
      },
      "message": "make finish_no_open() return int\n\nnamely, 1 ;-)  That\u0027s what we want to return from -\u003eatomic_open()\ninstances after finish_no_open().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2675a4eb6a9f1240098721c8a84ede28abd9d7b3",
      "tree": "76714224336154a2ca645b67d7f6d0f004bc569a",
      "parents": [
        "30d904947459cca2beb69e0110716f5248b31f2a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 22 12:41:10 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:43 2012 +0400"
      },
      "message": "fs/namei.c: get do_last() and friends return int\n\nSame conventions as for -\u003eatomic_open().  Trimmed the\nforest of labels a bit, while we are at it...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "30d904947459cca2beb69e0110716f5248b31f2a",
      "tree": "024e2a913266377d234147b14b7eb37017546173",
      "parents": [
        "a4a3bdd778715999ddfeefdc52ab76254580fa76"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 22 12:40:19 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:39 2012 +0400"
      },
      "message": "kill struct opendata\n\nJust pass struct file *.  Methods are happier that way...\nThere\u0027s no need to return struct file * from finish_open() now,\nso let it return int.  Next: saner prototypes for parts in\nnamei.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a4a3bdd778715999ddfeefdc52ab76254580fa76",
      "tree": "cd154e1bbcf2d899c30309fa179e5fc5de968d58",
      "parents": [
        "d95852777bc8ba6b3ad3397d495c5f9dd8ca8383"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 05:55:37 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:37 2012 +0400"
      },
      "message": "kill opendata-\u003e{mnt,dentry}\n\n-\u003efilp-\u003ef_path is there for purpose...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d95852777bc8ba6b3ad3397d495c5f9dd8ca8383",
      "tree": "96e9d8b1d33c4f6f7b5ba5be0fa4fd8f77c7a67f",
      "parents": [
        "3d8a00d2099ebc6d5a6e95fadaf861709d9919a8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 22 12:39:14 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:35 2012 +0400"
      },
      "message": "make -\u003eatomic_open() return int\n\nChange of calling conventions:\nold\t\tnew\nNULL\t\t1\nfile\t\t0\nERR_PTR(-ve)\t-ve\n\nCaller *knows* that struct file *; no need to return it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3d8a00d2099ebc6d5a6e95fadaf861709d9919a8",
      "tree": "317bfb9d71e3ef35746685c6da2397545917d81e",
      "parents": [
        "47237687d73cbeae1dd7a133c3fc3d7239094568"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 05:04:43 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:33 2012 +0400"
      },
      "message": "don\u0027t modify od-\u003efilp at all\n\nmake put_filp() conditional on flag set by finish_open()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "47237687d73cbeae1dd7a133c3fc3d7239094568",
      "tree": "1d267d03246f0a16cbff3c8221ee69dd1521f835",
      "parents": [
        "a8277b9baa6268de386529a33061775bc716198b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 05:01:45 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:31 2012 +0400"
      },
      "message": "-\u003eatomic_open() prototype change - pass int * instead of bool *\n\n... and let finish_open() report having opened the file via that sucker.\nNext step: don\u0027t modify od-\u003efilp at all.\n\n[AV: FILE_CREATE was already used by cifs; Miklos\u0027 fix folded]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a8277b9baa6268de386529a33061775bc716198b",
      "tree": "cdd127a78f7055b873ff79b2afdbb8d74382aac4",
      "parents": [
        "f60dc3db6e24b7c36445cf1feb56b34c799074b3"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:32 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:28 2012 +0400"
      },
      "message": "vfs: move O_DIRECT check to common code\n\nPerform open_check_o_direct() in a common place in do_last after opening the\nfile.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f60dc3db6e24b7c36445cf1feb56b34c799074b3",
      "tree": "594d45bf42e498c9c30fd30c93f97a3cf8827851",
      "parents": [
        "77d660a8a83036432dc33f092a367d06563d233e"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:31 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:26 2012 +0400"
      },
      "message": "vfs: do_last(): clean up retry\n\nMove the lookup retry logic to the bottom of the function to make the normal\ncase simpler to read.\n\nReported-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "77d660a8a83036432dc33f092a367d06563d233e",
      "tree": "e581b5b0f7bf6b8e49a9ed2a49c5eeb29d181954",
      "parents": [
        "e83db167229702da0f48957641e0dbf36b2644aa"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:30 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:24 2012 +0400"
      },
      "message": "vfs: do_last(): clean up bool\n\nConsistently use bool for boolean values in do_last().\n\nReported-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e83db167229702da0f48957641e0dbf36b2644aa",
      "tree": "b249d4125ea6e6961eb080a6faa4149fb309bbe7",
      "parents": [
        "aa4caadb70b782999ce5d150ac2f4b1d18e2fc75"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:29 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:21 2012 +0400"
      },
      "message": "vfs: do_last(): clean up labels\n\nReported-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aa4caadb70b782999ce5d150ac2f4b1d18e2fc75",
      "tree": "36b1b61f5badd818ff4322c13249ab68ad134379",
      "parents": [
        "015c3bbcd88df2305aae5b017a9c91c08b380aa1"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:28 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:20 2012 +0400"
      },
      "message": "vfs: do_last(): clean up error handling\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "015c3bbcd88df2305aae5b017a9c91c08b380aa1",
      "tree": "25f5e936ad16eddda39477a64addb4b54970bbd2",
      "parents": [
        "e43ae79c540270865918dab5ac914c74f43101e2"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:27 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:18 2012 +0400"
      },
      "message": "vfs: remove open intents from nameidata\n\nAll users of open intents have been converted to use -\u003eatomic_{open,create}.\n\nThis patch gets rid of nd-\u003eintent.open and related infrastructure.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e43ae79c540270865918dab5ac914c74f43101e2",
      "tree": "dc580a2de6799cfc3b99a6ab43e16c834e23736a",
      "parents": [
        "2d83bde9a16e18eafdc73a3a1f4a8eb110e49672"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:26 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:17 2012 +0400"
      },
      "message": "9p: implement i_op-\u003eatomic_open()\n\nAdd an -\u003eatomic_open implementation which replaces the atomic open+create\noperation implemented via -\u003ecreate.  No functionality is changed.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Eric Van Hensbergen \u003cericvh@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2d83bde9a16e18eafdc73a3a1f4a8eb110e49672",
      "tree": "04e2277dba94d252f4b74cf1acb728880b606c2e",
      "parents": [
        "3819219b592159725069eb16a7a46f58e4ecef32"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:25 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:16 2012 +0400"
      },
      "message": "ceph: implement i_op-\u003eatomic_open()\n\nAdd an -\u003eatomic_open implementation which replaces the atomic lookup+open+create\noperation implemented via -\u003elookup and -\u003ecreate operations.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3819219b592159725069eb16a7a46f58e4ecef32",
      "tree": "607b9fa882ab1f1220aa6576b1436b5bc545c41e",
      "parents": [
        "d2c127197dfc0b2bae62a52e1e0d3e3ff493919e"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:24 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:16 2012 +0400"
      },
      "message": "ceph: remove unused arg from ceph_lookup_open()\n\nWhat was the purpose of this?\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d2c127197dfc0b2bae62a52e1e0d3e3ff493919e",
      "tree": "75a30530499790ace8af09f9442f111f59564647",
      "parents": [
        "c8ccbe032feb127a977c66865cb63d72d9a6e08b"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:23 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:15 2012 +0400"
      },
      "message": "cifs: implement i_op-\u003eatomic_open()\n\nAdd an -\u003eatomic_open implementation which replaces the atomic lookup+open+create\noperation implemented via -\u003elookup and -\u003ecreate operations.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Steve French \u003csfrench@samba.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c8ccbe032feb127a977c66865cb63d72d9a6e08b",
      "tree": "c8f4ebff9ae19a49634a8ade2cf3d3372091e970",
      "parents": [
        "eda72afb9ef9f45941fb09260c0f268ff81ec40d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:22 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:14 2012 +0400"
      },
      "message": "fuse: implement i_op-\u003eatomic_open()\n\nAdd an -\u003eatomic_open implementation which replaces the atomic open+create\noperation implemented via -\u003ecreate.  No functionality is changed.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "eda72afb9ef9f45941fb09260c0f268ff81ec40d",
      "tree": "cc2fa751ec6f0f2b0efb2ec15c7a12327f98157c",
      "parents": [
        "50de348c3604f7684a89ce64180666d4dd74623f"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:21 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:12 2012 +0400"
      },
      "message": "nfs: don\u0027t use intents for checking atomic open\n\nis_atomic_open() is now only used by nfs4_lookup_revalidate() to check whether\nit\u0027s okay to skip normal revalidation.\n\nIt does a racy check for mount read-onlyness and falls back to normal\nrevalidation if the open would fail.  This makes little sense now that this\nfunction isn\u0027t used for determining whether to actually open the file or not.\n\nThe d_mountpoint() check still makes sense since it is an indication that we\nmight be following a mount and so open may not revalidate the dentry.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "50de348c3604f7684a89ce64180666d4dd74623f",
      "tree": "4dfbd39f22bf3e1ed6aef272250d289aeb8a541d",
      "parents": [
        "8867fe5899010a0c0ac36dadfdacf1072b1c990c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:20 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:10 2012 +0400"
      },
      "message": "nfs: don\u0027t use nd-\u003eintent.open.flags\n\nInstead check LOOKUP_EXCL in nd-\u003eflags, which is basically what the open intent\nflags were used for.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8867fe5899010a0c0ac36dadfdacf1072b1c990c",
      "tree": "3af6bb8d50fb06a46a451ba23bde8dac98361c25",
      "parents": [
        "0dd2b474d0b69d58859399b1df7fdc699ea005d4"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:19 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:08 2012 +0400"
      },
      "message": "nfs: clean up -\u003ecreate in nfs_rpc_ops\n\nDon\u0027t pass nfs_open_context() to -\u003ecreate().  Only the NFS4 implementation\nneeded that and only because it wanted to return an open file using open\nintents.  That task has been replaced by -\u003eatomic_open so it is not necessary\nanymore to pass the context to the create rpc operation.\n\nDespite nfs4_proc_create apparently being okay with a NULL context it Oopses\nsomewhere down the call chain.  So allocate a context here.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0dd2b474d0b69d58859399b1df7fdc699ea005d4",
      "tree": "637db7456112c7d52193fc5ec743b8f9e8e20fb2",
      "parents": [
        "d18e9008c377dc6a6d2166a6840bf3a23a5867fd"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:18 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:06 2012 +0400"
      },
      "message": "nfs: implement i_op-\u003eatomic_open()\n\nReplace NFS4 specific -\u003elookup implementation with -\u003eatomic_open impelementation\nand use the generic nfs_lookup for other lookups.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d18e9008c377dc6a6d2166a6840bf3a23a5867fd",
      "tree": "6bbb29aea7e931b603bd4cea3cc74a0eda7b6379",
      "parents": [
        "54ef487241e863a6046536ac5b1fcd5d7cde86e5"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:17 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:04 2012 +0400"
      },
      "message": "vfs: add i_op-\u003eatomic_open()\n\nAdd a new inode operation which is called on the last component of an open.\nUsing this the filesystem can look up, possibly create and open the file in one\natomic operation.  If it cannot perform this (e.g. the file type turned out to\nbe wrong) it may signal this by returning NULL instead of an open struct file\npointer.\n\ni_op-\u003eatomic_open() is only called if the last component is negative or needs\nlookup.  Handling cached positive dentries here doesn\u0027t add much value: these\ncan be opened using f_op-\u003eopen().  If the cached file turns out to be invalid,\nthe open can be retried, this time using -\u003eatomic_open() with a fresh dentry.\n\nFor now leave the old way of using open intents in lookup and revalidate in\nplace.  This will be removed once all the users are converted.\n\nDavid Howells noticed that if -\u003eatomic_open() opens the file but does not create\nit, handle_truncate() will be called on it even if it is not a regular file.\nFix this by checking the file type in this case too.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "54ef487241e863a6046536ac5b1fcd5d7cde86e5",
      "tree": "75b6ad7367e699ae891566a6b0d11d05b354ac94",
      "parents": [
        "d58ffd35c1e595df2cf8ac4803f178c8be95ca7a"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:16 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:02 2012 +0400"
      },
      "message": "vfs: lookup_open(): expand lookup_hash()\n\nCopy __lookup_hash() into lookup_open().  The next patch will insert the atomic\nopen call just before the real lookup.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d58ffd35c1e595df2cf8ac4803f178c8be95ca7a",
      "tree": "c0cb0b2201a641521a4d26f702b5b18b15541772",
      "parents": [
        "7157486541bffc0dfec912e21ae639b029dae3d3"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 15:10:15 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:01 2012 +0400"
      },
      "message": "vfs: add lookup_open()\n\nSplit out lookup + maybe create from do_last().  This is the part under i_mutex\nprotection.\n\nThe function is called lookup_open() and returns a filp even though the open\npart is not used yet.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    }
  ],
  "next": "7157486541bffc0dfec912e21ae639b029dae3d3"
}
