)]}'
{
  "commit": "2a4c8994eeef50796015f8a2005e4a75c1929166",
  "tree": "2a81f88f63dfd1cabcbf0b968a027cd39f66b319",
  "parents": [
    "39a50b42f7026027b54131291ad0f350100eac95"
  ],
  "author": {
    "name": "Trond Myklebust",
    "email": "Trond.Myklebust@netapp.com",
    "time": "Thu Jun 14 13:08:38 2012 -0400"
  },
  "committer": {
    "name": "Trond Myklebust",
    "email": "Trond.Myklebust@netapp.com",
    "time": "Mon Jun 18 08:45:16 2012 -0400"
  },
  "message": "NFSv4.1: Fix umount when filelayout DS is also the MDS\n\nCurrently there is a \u0027chicken and egg\u0027 issue when the DS is also the mounted\nMDS. The nfs_match_client() reference from nfs4_set_ds_client bumps the\ncl_count, the nfs_client is not freed at umount, and nfs4_deviceid_purge_client\nis not called to dereference the MDS usage of a deviceid which holds a\nreference to the DS nfs_client.  The result is the umount program returns,\nbut the nfs_client is not freed, and the cl_session hearbeat continues.\n\nThe MDS (and all other nfs mounts) lose their last nfs_client reference in\nnfs_free_server when the last nfs_server (fsid) is umounted.\nThe file layout DS lose their last nfs_client reference in destroy_ds\nwhen the last deviceid referencing the data server is put and destroy_ds is\ncalled. This is triggered by a call to nfs4_deviceid_purge_client which\nremoves references to a pNFS deviceid used by an MDS mount.\n\nThe fix is to track how many pnfs enabled filesystems are mounted from\nthis server, and then to purge the device id cache once that count reaches\nzero.\n\nReported-by: Jorge Mora \u003cJorge.Mora@netapp.com\u003e\nReported-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "17ba6b9956593ccac90c094b486840bd2fc427cd",
      "old_mode": 33188,
      "old_path": "fs/nfs/client.c",
      "new_id": "f005b5bebdc73bba4d548d134699dd4f00c471ca",
      "new_mode": 33188,
      "new_path": "fs/nfs/client.c"
    },
    {
      "type": "modify",
      "old_id": "b8323aa7b54384af8f51b84b3077d98b8f22d951",
      "old_mode": 33188,
      "old_path": "fs/nfs/pnfs.c",
      "new_id": "bdf7e52943c8ef982e91a9092ee08ecac2a84e77",
      "new_mode": 33188,
      "new_path": "fs/nfs/pnfs.c"
    },
    {
      "type": "modify",
      "old_id": "fbb78fb09bd25c925d65207643bf61da614167d8",
      "old_mode": 33188,
      "old_path": "include/linux/nfs_fs_sb.h",
      "new_id": "f58325a1d8fbe290fb8a7eb6e4ddc060ef553f91",
      "new_mode": 33188,
      "new_path": "include/linux/nfs_fs_sb.h"
    }
  ]
}
