)]}'
{
  "commit": "910321ea817a202ff70fac666e37e2c8e2f88823",
  "tree": "aaead29e7797986e2b804746b565bb5d05117c54",
  "parents": [
    "ac8456d6f9a3011c824176bd6084d39e5f70a382"
  ],
  "author": {
    "name": "Hugh Dickins",
    "email": "hughd@google.com",
    "time": "Thu Sep 09 16:38:07 2010 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu Sep 09 18:57:25 2010 -0700"
  },
  "message": "swap: revert special hibernation allocation\n\nPlease revert 2.6.36-rc commit d2997b1042ec150616c1963b5e5e919ffd0b0ebf\n\"hibernation: freeze swap at hibernation\".  It complicated matters by\nadding a second swap allocation path, just for hibernation; without in any\nway fixing the issue that it was intended to address - page reclaim after\nfixing the hibernation image might free swap from a page already imaged as\nswapcache, letting its swap be reallocated to store a different page of\nthe image: resulting in data corruption if the imaged page were freed as\nclean then swapped back in.  Pages freed to si-\u003eswap_map were still in\ndanger of being reallocated by the alternative allocation path.\n\nI guess it inadvertently fixed slow SSD swap allocation for hibernation,\nas reported by Nigel Cunningham: by missing out the discards that occur on\nthe usual swap allocation path; but that was unintentional, and needs a\nseparate fix.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Ondrej Zary \u003clinux@rainbow-software.org\u003e\nCc: Andrea Gelmini \u003candrea.gelmini@gmail.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Nigel Cunningham \u003cnigel@tuxonice.net\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": "2fee51a11b7399aea7ea7427ae32777b45cf8903",
      "old_mode": 33188,
      "old_path": "include/linux/swap.h",
      "new_id": "bf4eb62506db443cd2110567b72cbe47ced7f887",
      "new_mode": 33188,
      "new_path": "include/linux/swap.h"
    },
    {
      "type": "modify",
      "old_id": "c77963938bca440a90423952d6d85cf4d66abd83",
      "old_mode": 33188,
      "old_path": "kernel/power/hibernate.c",
      "new_id": "8dc31e02ae129e8f042804b67c38ab02f997d94c",
      "new_mode": 33188,
      "new_path": "kernel/power/hibernate.c"
    },
    {
      "type": "modify",
      "old_id": "5e7edfb05e66cff0d2c99d5fc8fddfde03e372c3",
      "old_mode": 33188,
      "old_path": "kernel/power/snapshot.c",
      "new_id": "f6cd6faf84fdb516323e4257f53a61778c7fd60b",
      "new_mode": 33188,
      "new_path": "kernel/power/snapshot.c"
    },
    {
      "type": "modify",
      "old_id": "5d0059eed3e4e3ce0bc38ad072bd7b1430d9f712",
      "old_mode": 33188,
      "old_path": "kernel/power/swap.c",
      "new_id": "e6a5bdf61a375c309c1f9ea356e9123d79699037",
      "new_mode": 33188,
      "new_path": "kernel/power/swap.c"
    },
    {
      "type": "modify",
      "old_id": "1f3f9c59a73ab5be4ff4bb37f428364df7544706",
      "old_mode": 33188,
      "old_path": "mm/swapfile.c",
      "new_id": "f08d165871b38cd658ffc366cdf3b39290b829da",
      "new_mode": 33188,
      "new_path": "mm/swapfile.c"
    }
  ]
}
