)]}'
{
  "commit": "9cd80bbb07fcd6d4d037fad4297496d3b132ac6b",
  "tree": "322216d34b6d5ba2366f53ba0d677950c4cde766",
  "parents": [
    "0f67b0b0392ccca98459bf40b36c0037793b5f71"
  ],
  "author": {
    "name": "Oleg Nesterov",
    "email": "oleg@redhat.com",
    "time": "Thu Dec 17 15:27:15 2009 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu Dec 17 15:45:31 2009 -0800"
  },
  "message": "do_wait() optimization: do not place sub-threads on task_struct-\u003echildren list\n\nThanks to Roland who pointed out de_thread() issues.\n\nCurrently we add sub-threads to -\u003ereal_parent-\u003echildren list.  This buys\nnothing but slows down do_wait().\n\nWith this patch -\u003echildren contains only main threads (group leaders).\nThe only complication is that forget_original_parent() should iterate over\nsub-threads by hand, and de_thread() needs another list_replace() when it\nchanges -\u003egroup_leader.\n\nHenceforth do_wait_thread() can never see task_detached() \u0026\u0026 !EXIT_DEAD\ntasks, we can remove this check (and we can unify do_wait_thread() and\nptrace_do_wait()).\n\nThis change can confuse the optimistic search in mm_update_next_owner(),\nbut this is fixable and minor.\n\nPerhaps badness() and oom_kill_process() should be updated, but they\nshould be fixed in any case.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ratan Nalumasu \u003crnalumasu@gmail.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@redhat.com\u003e\nCc: 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": "623a5cc3076a114af8808ca030f04bdd82638829",
      "old_mode": 33188,
      "old_path": "fs/exec.c",
      "new_id": "77db9a97a773fff7ee88e1be4c65bb18347ae15c",
      "new_mode": 33188,
      "new_path": "fs/exec.c"
    },
    {
      "type": "modify",
      "old_id": "5962d7ccf24371ed7aedf4832cac0cbd5e9c3820",
      "old_mode": 33188,
      "old_path": "kernel/exit.c",
      "new_id": "546774a31a66752a698faa02c4e54f7c39fbef9e",
      "new_mode": 33188,
      "new_path": "kernel/exit.c"
    },
    {
      "type": "modify",
      "old_id": "202a0ba63d3c198a2c891536fc93b749abb955b2",
      "old_mode": 33188,
      "old_path": "kernel/fork.c",
      "new_id": "5b2959b3ffc2c239244c25548f3d5c5506baf674",
      "new_mode": 33188,
      "new_path": "kernel/fork.c"
    }
  ]
}
