)]}'
{
  "commit": "04753278769f3b6c3b79a080edb52f21d83bf6e2",
  "tree": "0dff4088b44016b6d04930b2fc09419412821aa2",
  "parents": [
    "7f2e9525ba55b1c42ad6c4a5a59d7eb7bdd9be72"
  ],
  "author": {
    "name": "Yasunori Goto",
    "email": "y-goto@jp.fujitsu.com",
    "time": "Mon Apr 28 02:13:31 2008 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Mon Apr 28 08:58:25 2008 -0700"
  },
  "message": "memory hotplug: register section/node id to free\n\nThis patch set is to free pages which is allocated by bootmem for\nmemory-hotremove.  Some structures of memory management are allocated by\nbootmem.  ex) memmap, etc.\n\nTo remove memory physically, some of them must be freed according to\ncircumstance.  This patch set makes basis to free those pages, and free\nmemmaps.\n\nBasic my idea is using remain members of struct page to remember information\nof users of bootmem (section number or node id).  When the section is\nremoving, kernel can confirm it.  By this information, some issues can be\nsolved.\n\n  1) When the memmap of removing section is allocated on other\n     section by bootmem, it should/can be free.\n  2) When the memmap of removing section is allocated on the\n     same section, it shouldn\u0027t be freed. Because the section has to be\n     logical memory offlined already and all pages must be isolated against\n     page allocater. If it is freed, page allocator may use it which will\n     be removed physically soon.\n  3) When removing section has other section\u0027s memmap,\n     kernel will be able to show easily which section should be removed\n     before it for user. (Not implemented yet)\n  4) When the above case 2), the page isolation will be able to check and skip\n     memmap\u0027s page when logical memory offline (offline_pages()).\n     Current page isolation code fails in this case because this page is\n     just reserved page and it can\u0027t distinguish this pages can be\n     removed or not. But, it will be able to do by this patch.\n     (Not implemented yet.)\n  5) The node information like pgdat has similar issues. But, this\n     will be able to be solved too by this.\n     (Not implemented yet, but, remembering node id in the pages.)\n\nFortunately, current bootmem allocator just keeps PageReserved flags,\nand doesn\u0027t use any other members of page struct. The users of\nbootmem doesn\u0027t use them too.\n\nThis patch:\n\nThis is to register information which is node or section\u0027s id.  Kernel can\ndistinguish which node/section uses the pages allcated by bootmem.  This is\nbasis for hot-remove sections or nodes.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "aca9c65f8d08b8ce9b3ed38c92877cff44431d22",
      "old_mode": 33188,
      "old_path": "include/linux/memory_hotplug.h",
      "new_id": "73e358612eaffa3aa9ef27026d542a382b3a2afd",
      "new_mode": 33188,
      "new_path": "include/linux/memory_hotplug.h"
    },
    {
      "type": "modify",
      "old_id": "c3828497f41d7a6960287d95398de19ddb566072",
      "old_mode": 33188,
      "old_path": "include/linux/mmzone.h",
      "new_id": "aad98003176f895ab9c361765109f981fe25be20",
      "new_mode": 33188,
      "new_path": "include/linux/mmzone.h"
    },
    {
      "type": "modify",
      "old_id": "b6791646143e9a24e7aeaacef415e572e619da45",
      "old_mode": 33188,
      "old_path": "mm/bootmem.c",
      "new_id": "369624d2789cc0cc44abddffe6954e43c31fe6f9",
      "new_mode": 33188,
      "new_path": "mm/bootmem.c"
    },
    {
      "type": "modify",
      "old_id": "c8b3ca79de2d65ab2430f17f9cd92bfb4c417728",
      "old_mode": 33188,
      "old_path": "mm/memory_hotplug.c",
      "new_id": "cba36ef0d5063beea3b8e7edb92d415683d66f27",
      "new_mode": 33188,
      "new_path": "mm/memory_hotplug.c"
    },
    {
      "type": "modify",
      "old_id": "186a85bf7912b559cda312ec636e4bb962233785",
      "old_mode": 33188,
      "old_path": "mm/sparse.c",
      "new_id": "8903c484389adfe18be39db99b29c5e5840ed296",
      "new_mode": 33188,
      "new_path": "mm/sparse.c"
    }
  ]
}
