)]}'
{
  "commit": "fa1dae4906982b5d896c07613b1fe42456133b1c",
  "tree": "027dec5baeedbe25a7b645311b530a06d78b36f3",
  "parents": [
    "6f054164322bc6c1233402b9ed6b40d4af39a98f"
  ],
  "author": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Tue Dec 01 13:52:08 2009 +0000"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Tue Dec 01 07:35:11 2009 -0800"
  },
  "message": "SLOW_WORK: Fix the CONFIG_MODULES\u003dn case\n\nCommits 3d7a641 (\"SLOW_WORK: Wait for outstanding work items belonging to a\nmodule to clear\") introduced some code to make sure that all of a module\u0027s\nslow-work items were complete before that module was removed, and commit\n3bde31a (\"SLOW_WORK: Allow a requeueable work item to sleep till the thread is\nneeded\") further extended that, breaking it in the process if CONFIG_MODULES\u003dn:\n\n    CC      kernel/slow-work.o\n  kernel/slow-work.c: In function \u0027slow_work_execute\u0027:\n  kernel/slow-work.c:313: error: \u0027slow_work_thread_processing\u0027 undeclared (first use in this function)\n  kernel/slow-work.c:313: error: (Each undeclared identifier is reported only once\n  kernel/slow-work.c:313: error: for each function it appears in.)\n  kernel/slow-work.c: In function \u0027slow_work_wait_for_items\u0027:\n  kernel/slow-work.c:950: error: \u0027slow_work_unreg_sync_lock\u0027 undeclared (first use in this function)\n  kernel/slow-work.c:951: error: \u0027slow_work_unreg_wq\u0027 undeclared (first use in this function)\n  kernel/slow-work.c:961: error: \u0027slow_work_unreg_work_item\u0027 undeclared (first use in this function)\n  kernel/slow-work.c:974: error: \u0027slow_work_unreg_module\u0027 undeclared (first use in this function)\n  kernel/slow-work.c:977: error: \u0027slow_work_thread_processing\u0027 undeclared (first use in this function)\n  make[1]: *** [kernel/slow-work.o] Error 1\n\nFix this by:\n\n (1) Extracting the bits of slow_work_execute() that are contingent on\n     CONFIG_MODULES, and the bits that should be, into inline functions and\n     placing them into the #ifdef\u0027d section that defines the relevant variables\n     and adding stubs for moduleless kernels.  This allows the removal of some\n     #ifdefs.\n\n (2) #ifdef\u0027ing out the contents of slow_work_wait_for_items() in moduleless\n     kernels.\n\nThe four functions related to handling module unloading synchronisation (and\ntheir associated variables) could be offloaded into a separate .c file, but\neach function is only used once and three of them are tiny, so doing so would\nprevent them from being inlined.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "da94f3c101af77985272b72861bca34db1c853aa",
      "old_mode": 33188,
      "old_path": "kernel/slow-work.c",
      "new_id": "b5c17f15f9deff2a8f025161f316c986b108224c",
      "new_mode": 33188,
      "new_path": "kernel/slow-work.c"
    }
  ]
}
