)]}'
{
  "commit": "098d7f128a4e53cb64930628915ac767785e0e60",
  "tree": "ed3cab1daecab7f2a64b27deed190df3ec218789",
  "parents": [
    "e815af95f94914993bbad279c71cf5fef9f4eaac"
  ],
  "author": {
    "name": "David Rientjes",
    "email": "rientjes@google.com",
    "time": "Tue Oct 16 23:25:55 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Wed Oct 17 08:42:45 2007 -0700"
  },
  "message": "oom: add per-zone locking\n\nOOM killer synchronization should be done with zone granularity so that memory\npolicy and cpuset allocations may have their corresponding zones locked and\nallow parallel kills for other OOM conditions that may exist elsewhere in the\nsystem.  DMA allocations can be targeted at the zone level, which would not be\npossible if locking was done in nodes or globally.\n\nSynchronization shall be done with a variation of \"trylocks.\" The goal is to\nput the current task to sleep and restart the failed allocation attempt later\nif the trylock fails.  Otherwise, the OOM killer is invoked.\n\nEach zone in the zonelist that __alloc_pages() was called with is checked for\nthe newly-introduced ZONE_OOM_LOCKED flag.  If any zone has this flag present,\nthe \"trylock\" to serialize the OOM killer fails and returns zero.  Otherwise,\nall the zones have ZONE_OOM_LOCKED set and the try_set_zone_oom() function\nreturns non-zero.\n\nCc: Andrea Arcangeli \u003candrea@suse.de\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.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": "bad9486ee0cce5ceaeb982cd47e0ed15fff91046",
      "old_mode": 33188,
      "old_path": "include/linux/mmzone.h",
      "new_id": "9011505e740d8405000b1dc14a0b3f8db4701172",
      "new_mode": 33188,
      "new_path": "include/linux/mmzone.h"
    },
    {
      "type": "modify",
      "old_id": "cf6ebf5b422c40c0233ea08f29dedb4c4885c44c",
      "old_mode": 33188,
      "old_path": "include/linux/oom.h",
      "new_id": "e9081200cdb77ff8bc4b888c4798156de465f6a2",
      "new_mode": 33188,
      "new_path": "include/linux/oom.h"
    },
    {
      "type": "modify",
      "old_id": "1a7a4ef04e2715b2b217f9f5f560acfd6a26c24c",
      "old_mode": 33188,
      "old_path": "mm/oom_kill.c",
      "new_id": "6e999c88c503ce5f3997c0726cb23033d7119705",
      "new_mode": 33188,
      "new_path": "mm/oom_kill.c"
    }
  ]
}
