)]}'
{
  "commit": "3af968e066d593bc4dacc021715f3e95ddf0996f",
  "tree": "37851a67d855e228d503a569973469b067ef218a",
  "parents": [
    "46056be71c37378f518711da651e4bb76d650ee9"
  ],
  "author": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Mon Jun 08 12:31:53 2009 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Mon Jun 08 12:31:53 2009 -0700"
  },
  "message": "async: Fix lack of boot-time console due to insufficient synchronization\n\nOur async work synchronization was broken by \"async: make sure\nindependent async domains can\u0027t accidentally entangle\" (commit\nd5a877e8dd409d8c702986d06485c374b705d340), because it would report\nthe wrong lowest active async ID when there was both running and\npending async work.\n\nThis caused things like no being able to read the root filesystem,\nresulting in missing console devices and inability to run \u0027init\u0027,\ncausing a boot-time panic.\n\nThis fixes it by properly returning the lowest pending async ID: if\nthere is any running async work, that will have a lower ID than any\npending work, and we should _not_ look at the pending work list.\n\nThere were alternative patches from Jaswinder and James, but this one\nalso cleans up the code by removing the pointless \u0027ret\u0027 variable and\nthe unnecesary testing for an empty list around \u0027for_each_entry()\u0027 (if\nthe list is empty, the for_each_entry() thing just won\u0027t execute).\n\nFixes-bug: http://bugzilla.kernel.org/show_bug.cgi?id\u003d13474\nReported-and-tested-by: Chris Clayton \u003cchris2553@googlemail.com\u003e\nCc: Jaswinder Singh Rajput \u003cjaswinder@kernel.org\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "50540301ed0f2d5308ab15a012715bd0b53f0a04",
      "old_mode": 33188,
      "old_path": "kernel/async.c",
      "new_id": "27235f5de198997180d4a293adc932d48c6101c7",
      "new_mode": 33188,
      "new_path": "kernel/async.c"
    }
  ]
}
