)]}'
{
  "commit": "d9713679dbd2a6ecb840cd5b65a3ec555c1ec3d4",
  "tree": "b998ae43dc18e7459cab5a2cb5ba12900c96c7e1",
  "parents": [
    "6dcd73d7011ba9046f9b98e7f7c9d958f5810e6b"
  ],
  "author": {
    "name": "Lai Jiangshan",
    "email": "laijs@cn.fujitsu.com",
    "time": "Tue Dec 11 16:01:03 2012 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Tue Dec 11 17:22:23 2012 -0800"
  },
  "message": "memory_hotplug: fix possible incorrect node_states[N_NORMAL_MEMORY]\n\nCurrently memory_hotplug only manages the node_states[N_HIGH_MEMORY], it\nforgets to manage node_states[N_NORMAL_MEMORY].  This may cause\nnode_states[N_NORMAL_MEMORY] to become incorrect.\n\nExample, if a node is empty before online, and we online a memory which is\nin ZONE_NORMAL.  And after online, node_states[N_HIGH_MEMORY] is correct,\nbut node_states[N_NORMAL_MEMORY] is incorrect, the online code doesn\u0027t set\nthe new online node to node_states[N_NORMAL_MEMORY].\n\nThe same thing will happen when offlining (the offline code doesn\u0027t clear\nthe node from node_states[N_NORMAL_MEMORY] when needed).  Some memory\nmanagment code depends node_states[N_NORMAL_MEMORY], so we have to fix up\nthe node_states[N_NORMAL_MEMORY].\n\nWe add node_states_check_changes_online() and\nnode_states_check_changes_offline() to detect whether\nnode_states[N_HIGH_MEMORY] and node_states[N_NORMAL_MEMORY] are changed\nwhile hotpluging.\n\nAlso add @status_change_nid_normal to struct memory_notify, thus the\nmemory hotplug callbacks know whether the node_states[N_NORMAL_MEMORY] are\nchanged.  (We can add a @flags and reuse @status_change_nid instead of\nintroducing @status_change_nid_normal, but it will add much more\ncomplexity in memory hotplug callback in every subsystem.  So introducing\n@status_change_nid_normal is better and it doesn\u0027t change the sematics of\n@status_change_nid)\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nCc: Rob Landley \u003crob@landley.net\u003e\nCc: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Wen Congyang \u003cwency@cn.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": "6d0c2519cf4728044536aae4615a91adf1c4e6c9",
      "old_mode": 33188,
      "old_path": "Documentation/memory-hotplug.txt",
      "new_id": "6e6cbc78f329493def769e5509896772f2fcd496",
      "new_mode": 33188,
      "new_path": "Documentation/memory-hotplug.txt"
    },
    {
      "type": "modify",
      "old_id": "ff9a9f8e0ed9deb1573c087475511b269b7e17e2",
      "old_mode": 33188,
      "old_path": "include/linux/memory.h",
      "new_id": "a09216d0dcc71baad9369580cb962ce53cc7682d",
      "new_mode": 33188,
      "new_path": "include/linux/memory.h"
    },
    {
      "type": "modify",
      "old_id": "ec2f199cc5f711b9a5130606ce1ee16f368e4f14",
      "old_mode": 33188,
      "old_path": "mm/memory_hotplug.c",
      "new_id": "72195602ded5a117eba6df8c48c1c7dd0544f82f",
      "new_mode": 33188,
      "new_path": "mm/memory_hotplug.c"
    }
  ]
}
