)]}'
{
  "commit": "c6fcb10d479e3edb94abbc3d9c7c168239516432",
  "tree": "01440405b68390e2f9e478d24382044085f53405",
  "parents": [
    "21eb08bbf3d529d4f2093b7f654b47287d0c5ef4"
  ],
  "author": {
    "name": "Glauber Costa",
    "email": "glommer@parallels.com",
    "time": "Wed Dec 19 14:51:39 2012 +0400"
  },
  "committer": {
    "name": "Glauber Costa",
    "email": "glommer@parallels.com",
    "time": "Thu Dec 20 16:19:36 2012 +0400"
  },
  "message": "sl[auo]b: retry allocation once in case of failure.\n\nWhen we are out of space in the caches, we will try to allocate a new\npage.  If we still fail, the page allocator will try to free pages\nthrough direct reclaim. Which means that if an object allocation failed\nwe can be sure that no new pages could be given to us, even though\ndirect reclaim was likely invoked.\n\nHowever, direct reclaim will also try to shrink objects from registered\nshrinkers. They won\u0027t necessarily free a full page, but if our cache\nhappens to be one with a shrinker, this may very well open up the space\nwe need. So we retry the allocation in this case.\n\nWe can\u0027t know for sure if this happened. So the best we can do is try to\nderive from our allocation flags how likely it is for direct reclaim to\nhave been called, and retry if we conclude that this is highly likely\n(GFP_NOWAIT | GFP_FS | !GFP_NORETRY).\n\nThe common case is for the allocation to succeed. So we carefuly insert\na likely branch for that case.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCC: Christoph Lameter \u003ccl@linux.com\u003e\nCC: David Rientjes \u003crientjes@google.com\u003e\nCC: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCC: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCC: Mel Gorman \u003cmgorman@suse.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a98295ff350a3e395b4c62d4ef8d836351b0d05f",
      "old_mode": 33188,
      "old_path": "mm/slab.c",
      "new_id": "7e82f99973f05155ff352c8d45a632bdafaaeb18",
      "new_mode": 33188,
      "new_path": "mm/slab.c"
    },
    {
      "type": "modify",
      "old_id": "34a98d642196f5e57e2bc2a1d94f7333b3ab7c48",
      "old_mode": 33188,
      "old_path": "mm/slab.h",
      "new_id": "03d1590fa7b5f4c5fc18bb7baadabf210ef4aa24",
      "new_mode": 33188,
      "new_path": "mm/slab.h"
    },
    {
      "type": "modify",
      "old_id": "a99fdf7a0907db8f0f12909435e7da714f917d9a",
      "old_mode": 33188,
      "old_path": "mm/slob.c",
      "new_id": "f00127b2cd8ea51f9c66c9b9cac85eceffdffb79",
      "new_mode": 33188,
      "new_path": "mm/slob.c"
    },
    {
      "type": "modify",
      "old_id": "b72569c6a18b23c30281ab575c5a6252de68a26f",
      "old_mode": 33188,
      "old_path": "mm/slub.c",
      "new_id": "580dfa82603d5580a5cec9bf41501591db24a19e",
      "new_mode": 33188,
      "new_path": "mm/slub.c"
    }
  ]
}
