)]}'
{
  "commit": "4fd45812cbe875a620c86a096a5d46c742694b7e",
  "tree": "8d2c99caa718da6cda87229076adf708494ff251",
  "parents": [
    "bbea9f69668a3d0cf9feba15a724cd02896f8675"
  ],
  "author": {
    "name": "Vadim Lobanov",
    "email": "vlobanov@speakeasy.net",
    "time": "Sun Dec 10 02:21:17 2006 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.osdl.org",
    "time": "Sun Dec 10 09:57:22 2006 -0800"
  },
  "message": "[PATCH] fdtable: Remove the free_files field\n\nAn fdtable can either be embedded inside a files_struct or standalone (after\nbeing expanded).  When an fdtable is being discarded after all RCU references\nto it have expired, we must either free it directly, in the standalone case,\nor free the files_struct it is contained within, in the embedded case.\n\nCurrently the free_files field controls this behavior, but we can get rid of\nit entirely, as all the necessary information is already recorded.  We can\ndistinguish embedded and standalone fdtables using max_fds, and if it is\nembedded we can divine the relevant files_struct using container_of().\n\nSigned-off-by: Vadim Lobanov \u003cvlobanov@speakeasy.net\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fb3d2038dc215b9a8bb227a20ae3d4e4766213b7",
      "old_mode": 33188,
      "old_path": "fs/file.c",
      "new_id": "17e6a55521e2017dcc37984e60ad3c44487426d2",
      "new_mode": 33188,
      "new_path": "fs/file.c"
    },
    {
      "type": "modify",
      "old_id": "02be4012225b2d7dfe4e7cff18c42248347ab39c",
      "old_mode": 33188,
      "old_path": "include/linux/file.h",
      "new_id": "319118f275b0dd8fcce3e8b1c2a11f71686911e5",
      "new_mode": 33188,
      "new_path": "include/linux/file.h"
    },
    {
      "type": "modify",
      "old_id": "58c18daab65ddca4af1f2765a1c67b01c9bcf514",
      "old_mode": 33188,
      "old_path": "include/linux/init_task.h",
      "new_id": "b5315150199e9528bbfa1b5fcfe64b669b199058",
      "new_mode": 33188,
      "new_path": "include/linux/init_task.h"
    },
    {
      "type": "modify",
      "old_id": "5f77e76b4f97666c53e4a78d6213288bf88105a7",
      "old_mode": 33188,
      "old_path": "kernel/exit.c",
      "new_id": "122fadb972fc2dd9ff3fda5cf15c3c0432a50007",
      "new_mode": 33188,
      "new_path": "kernel/exit.c"
    },
    {
      "type": "modify",
      "old_id": "aba595424f78e029c1d064d3989535a97b7a3078",
      "old_mode": 33188,
      "old_path": "kernel/fork.c",
      "new_id": "d16c566eb645a6b7aae1bd7dd5a5489eeb3d3db9",
      "new_mode": 33188,
      "new_path": "kernel/fork.c"
    }
  ]
}
