)]}'
{
  "commit": "1f522509c77a5dea8dc384b735314f03908a6415",
  "tree": "4b848527b90877a8a64c46e8e2d76723405c319d",
  "parents": [
    "319774e25fa4b7641bdc3b0a464dd84e62103347"
  ],
  "author": {
    "name": "Haicheng Li",
    "email": "haicheng.li@linux.intel.com",
    "time": "Mon May 24 14:32:51 2010 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Tue May 25 08:07:01 2010 -0700"
  },
  "message": "mem-hotplug: avoid multiple zones sharing same boot strapping boot_pageset\n\nFor each new populated zone of hotadded node, need to update its pagesets\nwith dynamically allocated per_cpu_pageset struct for all possible CPUs:\n\n    1) Detach zone-\u003epageset from the shared boot_pageset\n       at end of __build_all_zonelists().\n\n    2) Use mutex to protect zone-\u003epageset when it\u0027s still\n       shared in onlined_pages()\n\nOtherwises, multiple zones of different nodes would share same boot strapping\nboot_pageset for same CPU, which will finally cause below kernel panic:\n\n  ------------[ cut here ]------------\n  kernel BUG at mm/page_alloc.c:1239!\n  invalid opcode: 0000 [#1] SMP\n  ...\n  Call Trace:\n   [\u003cffffffff811300c1\u003e] __alloc_pages_nodemask+0x131/0x7b0\n   [\u003cffffffff81162e67\u003e] alloc_pages_current+0x87/0xd0\n   [\u003cffffffff81128407\u003e] __page_cache_alloc+0x67/0x70\n   [\u003cffffffff811325f0\u003e] __do_page_cache_readahead+0x120/0x260\n   [\u003cffffffff81132751\u003e] ra_submit+0x21/0x30\n   [\u003cffffffff811329c6\u003e] ondemand_readahead+0x166/0x2c0\n   [\u003cffffffff81132ba0\u003e] page_cache_async_readahead+0x80/0xa0\n   [\u003cffffffff8112a0e4\u003e] generic_file_aio_read+0x364/0x670\n   [\u003cffffffff81266cfa\u003e] nfs_file_read+0xca/0x130\n   [\u003cffffffff8117b20a\u003e] do_sync_read+0xfa/0x140\n   [\u003cffffffff8117bf75\u003e] vfs_read+0xb5/0x1a0\n   [\u003cffffffff8117c151\u003e] sys_read+0x51/0x80\n   [\u003cffffffff8103c032\u003e] system_call_fastpath+0x16/0x1b\n  RIP  [\u003cffffffff8112ff13\u003e] get_page_from_freelist+0x883/0x900\n   RSP \u003cffff88000d1e78a8\u003e\n  ---[ end trace 4bda28328b9990db ]\n\n[akpm@linux-foundation.org: merge fix]\nSigned-off-by: Haicheng Li \u003chaicheng.li@linux.intel.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: Andi Kleen \u003candi.kleen@intel.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Tejun Heo \u003ctj@kernel.org\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": "f6f2c505fa7efd9d5aa34d249f2061515dd30415",
      "old_mode": 33188,
      "old_path": "include/linux/mmzone.h",
      "new_id": "a367ed5bb3fecdc0f1853c77f40f07c3f8c9c0ec",
      "new_mode": 33188,
      "new_path": "include/linux/mmzone.h"
    },
    {
      "type": "modify",
      "old_id": "22881b5e95e3b00e010b407310539fbd4e1a8a57",
      "old_mode": 33188,
      "old_path": "init/main.c",
      "new_id": "3bdb152f412f32b8edeeb1036a24f934988b5be2",
      "new_mode": 33188,
      "new_path": "init/main.c"
    },
    {
      "type": "modify",
      "old_id": "a3fbcc0a0abc15976dc78423a985a6c522180c18",
      "old_mode": 33188,
      "old_path": "kernel/cpu.c",
      "new_id": "3e8b3ba27175f4c13ed217aeaf3771a127ad6553",
      "new_mode": 33188,
      "new_path": "kernel/cpu.c"
    },
    {
      "type": "modify",
      "old_id": "85eb4d342ac5010ccc0997be9a251d20cb82bb50",
      "old_mode": 33188,
      "old_path": "mm/memory_hotplug.c",
      "new_id": "089cc97aed3c5506e22487e158106502c6dde666",
      "new_mode": 33188,
      "new_path": "mm/memory_hotplug.c"
    },
    {
      "type": "modify",
      "old_id": "595d0ac211e25d33b019968455bc030c8b56c9dc",
      "old_mode": 33188,
      "old_path": "mm/page_alloc.c",
      "new_id": "21c52d2d8624a368c388e15e6df338441f6ba5ca",
      "new_mode": 33188,
      "new_path": "mm/page_alloc.c"
    }
  ]
}
