)]}'
{
  "commit": "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff",
  "tree": "f02e7ee57e6060f0af1bcda281baf2972d2da72f",
  "parents": [
    "c28cc36469554dc55540f059fbdc7fa22a2c31fc"
  ],
  "author": {
    "name": "Nick Piggin",
    "email": "npiggin@kernel.dk",
    "time": "Fri Jan 07 17:49:54 2011 +1100"
  },
  "committer": {
    "name": "Nick Piggin",
    "email": "npiggin@kernel.dk",
    "time": "Fri Jan 07 17:50:28 2011 +1100"
  },
  "message": "fs: dcache remove d_mounted\n\nRather than keep a d_mounted count in the dentry, set a dentry flag instead.\nThe flag can be cleared by checking the hash table to see if there are any\nmounts left, which is not time critical because it is performed at detach time.\n\nThe mounted state of a dentry is only used to speculatively take a look in the\nmount hash table if it is set -- before following the mount, vfsmount lock is\ntaken and mount re-checked without races.\n\nThis saves 4 bytes on 32-bit, nothing on 64-bit but it does provide a hole I\nmight use later (and some configs have larger than 32-bit spinlocks which might\nmake use of the hole).\n\nAutofs4 conversion and changelog by Ian Kent \u003craven@themaw.net\u003e:\nIn autofs4, when expring direct (or offset) mounts we need to ensure that we\nblock user path walks into the autofs mount, which is covered by another mount.\nTo do this we clear the mounted status so that follows stop before walking into\nthe mount and are essentially blocked until the expire is completed. The\nautomount daemon still finds the correct dentry for the umount due to the\nfollow mount logic in fs/autofs4/root.c:autofs4_follow_link(), which is set as\nan inode operation for direct and offset mounts only and is called following\nthe lookup that stopped at the covered mount.\n\nAt the end of the expire the covering mount probably has gone away so the\nmounted status need not be restored. But we need to check this and only restore\nthe mounted status if the expire failed.\n\nXXX: autofs may not work right if we have other mounts go over the top of it?\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2f7951d67d163b04dbde25a4274bddba48d30cac",
      "old_mode": 33188,
      "old_path": "fs/autofs4/expire.c",
      "new_id": "cc1d013659051401f49afe701e835eb732a31ed7",
      "new_mode": 33188,
      "new_path": "fs/autofs4/expire.c"
    },
    {
      "type": "modify",
      "old_id": "187fea04010801f2d871d87428d3f11865a4ae0f",
      "old_mode": 33188,
      "old_path": "fs/dcache.c",
      "new_id": "1d5cf511e1c7a4b379d179872ed0acd3c23eb0f7",
      "new_mode": 33188,
      "new_path": "fs/dcache.c"
    },
    {
      "type": "modify",
      "old_id": "3dbfc072ec70aa0099b79b3ff1040455543c46ca",
      "old_mode": 33188,
      "old_path": "fs/namespace.c",
      "new_id": "39a7d507fba0a4d08c148aa5867d0a68164da837",
      "new_mode": 33188,
      "new_path": "fs/namespace.c"
    },
    {
      "type": "modify",
      "old_id": "c2e7390289ccc7d7a0944ff65b517f681f7ae823",
      "old_mode": 33188,
      "old_path": "include/linux/dcache.h",
      "new_id": "e4414693065eae80e247e21636a3c6defa4c4b8a",
      "new_mode": 33188,
      "new_path": "include/linux/dcache.h"
    }
  ]
}
