)]}'
{
  "log": [
    {
      "commit": "9ae46e6702d98d22037368896298d05958ad5737",
      "tree": "019ce8ccff0a88fc7f5ebaf5c052daac5bac3860",
      "parents": [
        "502b24c23b44fbaa01cc2cbd86d8035845b7811f",
        "d127027baf98dce3ca31bec18c2c0e048ceda7c4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 20 09:18:31 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 20 09:18:31 2013 -0800"
      },
      "message": "Merge branch \u0027for-3.9-cpuset\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\nPull cpuset changes from Tejun Heo:\n\n - Synchornization has seen a lot of changes with focus on decoupling\n   cpuset synchronization from cgroup internal locking.\n\n   After this change, there only remain a couple of mostly trivial\n   dependencies on cgroup_lock outside cgroup core proper.  cgroup_lock\n   is scheduled to be unexported in this devel cycle.\n\n   This will finally remove the fragile locking order around cgroup\n   (cgroup locking wants to / should be one of the outermost but yet has\n   been acquired from deep inside individual controllers).\n\n - At this point, Li is most knowlegeable with cpuset and taking over\n   the maintainership of cpuset.\n\n* \u0027for-3.9-cpuset\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:\n  cpuset: drop spurious retval assignment in proc_cpuset_show()\n  cpuset: fix RCU lockdep splat\n  cpuset: update MAINTAINERS\n  cpuset: remove cpuset-\u003eparent\n  cpuset: replace cpuset-\u003estack_list with cpuset_for_each_descendant_pre()\n  cpuset: replace cgroup_mutex locking with cpuset internal locking\n  cpuset: schedule hotplug propagation from cpuset_attach() if the cpuset is empty\n  cpuset: pin down cpus and mems while a task is being attached\n  cpuset: make CPU / memory hotplug propagation asynchronous\n  cpuset: drop async_rebuild_sched_domains()\n  cpuset: don\u0027t nest cgroup_mutex inside get_online_cpus()\n  cpuset: reorganize CPU / memory hotplug handling\n  cpuset: cleanup cpuset[_can]_attach()\n  cpuset: introduce cpuset_for_each_child()\n  cpuset: introduce CS_ONLINE\n  cpuset: introduce -\u003ecss_on/offline()\n  cpuset: remove fast exit path from remove_tasks_in_empty_cpuset()\n  cpuset: remove unused cpuset_unlock()\n"
    },
    {
      "commit": "63f43f55c9bbc14f76b582644019b8a07dc8219a",
      "tree": "c9ab6bbf633b6d441c67c3735782b6011afc5b17",
      "parents": [
        "71b5707e119653039e6e95213f00479668c79b75"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Fri Jan 25 16:08:01 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 18 09:08:15 2013 -0800"
      },
      "message": "cpuset: fix cpuset_print_task_mems_allowed() vs rename() race\n\nrename() will change dentry-\u003ed_name. The result of this race can\nbe worse than seeing partially rewritten name, but we might access\na stale pointer because rename() will re-allocate memory to hold\na longer name.\n\nIt\u0027s safe in the protection of dentry-\u003ed_lock.\n\nv2: check NULL dentry before acquiring dentry lock.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "d127027baf98dce3ca31bec18c2c0e048ceda7c4",
      "tree": "120f1a9ea23f3f7daa70e40aad513c0448cbdcb3",
      "parents": [
        "27e89ae5d6e94e30231ee89a7736f62d84ba4c6f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Tue Jan 15 14:11:32 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 15 08:38:55 2013 -0800"
      },
      "message": "cpuset: drop spurious retval assignment in proc_cpuset_show()\n\nproc_cpuset_show() has a spurious -EINVAL assignment which does\nnothing.  Remove it.\n\nThis patch doesn\u0027t make any functional difference.\n\ntj: Rewrote patch description.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "27e89ae5d6e94e30231ee89a7736f62d84ba4c6f",
      "tree": "e186d8a97a502151c0cc32636a017dd8556f5a88",
      "parents": [
        "f47b89c73ce7535339525c141a6a114db333f0bd"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Tue Jan 15 14:10:57 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 15 08:38:55 2013 -0800"
      },
      "message": "cpuset: fix RCU lockdep splat\n\n5d21cc2db040d01f8c19b8602f6987813e1176b4 (\"cpuset: replace\ncgroup_mutex locking with cpuset internal locking\") incorrectly\nconverted proc_cpuset_show() from cgroup_lock() to cpuset_mutex.\nproc_cpuset_show() is accessing cgroup hierarchy proper to determine\ncgroup path which can\u0027t be protected by cpuset_mutex.  This triggered\nthe following RCU warning.\n\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n [ INFO: suspicious RCU usage. ]\n 3.8.0-rc3-next-20130114-sasha-00016-ga107525-dirty #262 Tainted: G        W\n -------------------------------\n include/linux/cgroup.h:534 suspicious rcu_dereference_check() usage!\n\n other info that might help us debug this:\n\n rcu_scheduler_active \u003d 1, debug_locks \u003d 1\n 2 locks held by trinity/7514:\n  #0:  (\u0026p-\u003elock){+.+.+.}, at: [\u003cffffffff812b06aa\u003e] seq_read+0x3a/0x3e0\n  #1:  (cpuset_mutex){+.+...}, at: [\u003cffffffff811abae4\u003e] proc_cpuset_show+0x84/0x190\n\n stack backtrace:\n Pid: 7514, comm: trinity Tainted: G        W\n+3.8.0-rc3-next-20130114-sasha-00016-ga107525-dirty #262\n Call Trace:\n  [\u003cffffffff81182cab\u003e] lockdep_rcu_suspicious+0x10b/0x120\n  [\u003cffffffff811abb71\u003e] proc_cpuset_show+0x111/0x190\n  [\u003cffffffff812b0827\u003e] seq_read+0x1b7/0x3e0\n  [\u003cffffffff812b0670\u003e] ? seq_lseek+0x110/0x110\n  [\u003cffffffff8128b4fb\u003e] do_loop_readv_writev+0x4b/0x90\n  [\u003cffffffff8128b776\u003e] do_readv_writev+0xf6/0x1d0\n  [\u003cffffffff8128b8ee\u003e] vfs_readv+0x3e/0x60\n  [\u003cffffffff8128b960\u003e] sys_readv+0x50/0xd0\n  [\u003cffffffff83d33d18\u003e] tracesys+0xe1/0xe6\n\nThe operation can be performed under RCU read lock.  Replace\ncpuset_mutex locking with RCU read locking.\n\ntj: Rewrote patch description.\n\nReported-by: Sasha Levin \u003csasha.levin@oracle.com\u003e\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "c431069fe4bacc0cd3ca94a8453987140a5b3517",
      "tree": "c86d339c574086a1b0d2e15087f940441aca0db4",
      "parents": [
        "fc560a26accea9567b7f8f41eefa01e1bb127d74"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:08 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:08 2013 -0800"
      },
      "message": "cpuset: remove cpuset-\u003eparent\n\ncgroup already tracks the hierarchy.  Follow cgroup-\u003eparent to find\nthe parent and drop cpuset-\u003eparent.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "fc560a26accea9567b7f8f41eefa01e1bb127d74",
      "tree": "07feeb5786996ea0ac5a78b223c3593b0cdfda9b",
      "parents": [
        "5d21cc2db040d01f8c19b8602f6987813e1176b4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:08 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:08 2013 -0800"
      },
      "message": "cpuset: replace cpuset-\u003estack_list with cpuset_for_each_descendant_pre()\n\nImplement cpuset_for_each_descendant_pre() and replace the\ncpuset-specific tree walking using cpuset-\u003estack_list with it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "5d21cc2db040d01f8c19b8602f6987813e1176b4",
      "tree": "0dcb94aefa3fee2e4c436a50fc5eeb9e45fa3988",
      "parents": [
        "02bb586372a71595203b3ff19a9be48eaa076f6c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:08 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:08 2013 -0800"
      },
      "message": "cpuset: replace cgroup_mutex locking with cpuset internal locking\n\nSupposedly for historical reasons, cpuset depends on cgroup core for\nlocking.  It depends on cgroup_mutex in cgroup callbacks and grabs\ncgroup_mutex from other places where it wants to be synchronized.\nThis is majorly messy and highly prone to introducing circular locking\ndependency especially because cgroup_mutex is supposed to be one of\nthe outermost locks.\n\nAs previous patches already plugged possible races which may happen by\ndecoupling from cgroup_mutex, replacing cgroup_mutex with cpuset\nspecific cpuset_mutex is mostly straight-forward.  Introduce\ncpuset_mutex, replace all occurrences of cgroup_mutex with it, and add\ncpuset_mutex locking to places which inherited cgroup_mutex from\ncgroup core.\n\nThe only complication is from cpuset wanting to initiate task\nmigration when a cpuset loses all cpus or memory nodes.  Task\nmigration may go through full cgroup and all subsystem locking and\nshould be initiated without holding any cpuset specific lock; however,\na previous patch already made hotplug handled asynchronously and\nmoving the task migration part outside other locks is easy.\ncpuset_propagate_hotplug_workfn() now invokes\nremove_tasks_in_empty_cpuset() without holding any lock.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "02bb586372a71595203b3ff19a9be48eaa076f6c",
      "tree": "eed1f4edce9839509eb26a2365bdcc7ef5d26eff",
      "parents": [
        "452477fa68c6d8ef80adebd05194c1c157ad9a53"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:08 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:08 2013 -0800"
      },
      "message": "cpuset: schedule hotplug propagation from cpuset_attach() if the cpuset is empty\n\ncpuset is scheduled to be decoupled from cgroup_lock which will make\nhotplug handling race with task migration.  cpus or mems will be\nallowed to go offline between -\u003ecan_attach() and -\u003eattach().  If\nhotplug takes down all cpus or mems of a cpuset while attach is in\nprogress, -\u003eattach() may end up putting tasks into an empty cpuset.\n\nThis patchset makes -\u003eattach() schedule hotplug propagation if the\ncpuset is empty after attaching is complete.  This will move the tasks\nto the nearest ancestor which can execute and the end result would be\nas if hotplug handling happened after the tasks finished attaching.\n\ncpuset_write_resmask() now also flushes cpuset_propagate_hotplug_wq to\nwait for propagations scheduled directly by cpuset_attach().\n\nThis currently doesn\u0027t make any functional difference as everything is\nprotected by cgroup_mutex but enables decoupling the locking.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "452477fa68c6d8ef80adebd05194c1c157ad9a53",
      "tree": "28682f4307a4e4bc2180d18ccb71a262700699df",
      "parents": [
        "8d03394877ecdf87e1d694664c460747b8e05aa1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "message": "cpuset: pin down cpus and mems while a task is being attached\n\ncpuset is scheduled to be decoupled from cgroup_lock which will make\nconfiguration updates race with task migration.  Any config update\nwill be allowed to happen between -\u003ecan_attach() and -\u003eattach().  If\nsuch config update removes either all cpus or mems, by the time\n-\u003eattach() is called, the condition verified by -\u003ecan_attach(), that\nthe cpuset is capable of hosting the tasks, is no longer true.\n\nThis patch adds cpuset-\u003eattach_in_progress which is incremented from\n-\u003ecan_attach() and decremented when the attach operation finishes\neither successfully or not.  validate_change() treats cpusets w/\nnon-zero -\u003eattach_in_progress like cpusets w/ tasks and refuses to\nremove all cpus or mems from it.\n\nThis currently doesn\u0027t make any functional difference as everything is\nprotected by cgroup_mutex but enables decoupling the locking.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "8d03394877ecdf87e1d694664c460747b8e05aa1",
      "tree": "d7f2301996b9e0a747ada2385244c670e7da7bb2",
      "parents": [
        "699140ba838dd3fa2c5cce474e14f194b09f91aa"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "message": "cpuset: make CPU / memory hotplug propagation asynchronous\n\ncpuset_hotplug_workfn() has been invoking cpuset_propagate_hotplug()\ndirectly to propagate hotplug updates to !root cpusets; however, this\nhas the following problems.\n\n* cpuset locking is scheduled to be decoupled from cgroup_mutex,\n  cgroup_mutex will be unexported, and cgroup_attach_task() will do\n  cgroup locking internally, so propagation can\u0027t synchronously move\n  tasks to a parent cgroup while walking the hierarchy.\n\n* We can\u0027t use cgroup generic tree iterator because propagation to\n  each cpuset may sleep.  With propagation done asynchronously, we can\n  lose the rather ugly cpuset specific iteration.\n\nConvert cpuset_propagate_hotplug() to\ncpuset_propagate_hotplug_workfn() and execute it from newly added\ncpuset-\u003ehotplug_work.  The work items are run on an ordered workqueue,\nso the propagation order is preserved.  cpuset_hotplug_workfn()\nschedules all propagations while holding cgroup_mutex and waits for\ncompletion without cgroup_mutex.  Each in-flight propagation holds a\nreference to the cpuset-\u003ecss.\n\nThis patch doesn\u0027t cause any functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "699140ba838dd3fa2c5cce474e14f194b09f91aa",
      "tree": "afbdc601bebadc8230f5ae740bed2dc410e692d3",
      "parents": [
        "3a5a6d0c2b0391e159fa5bf1dddb9bf1f35178a0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "message": "cpuset: drop async_rebuild_sched_domains()\n\nIn general, we want to make cgroup_mutex one of the outermost locks\nand be able to use get_online_cpus() and friends from cgroup methods.\nWith cpuset hotplug made async, get_online_cpus() can now be nested\ninside cgroup_mutex.\n\nCurrently, cpuset avoids nesting get_online_cpus() inside cgroup_mutex\nby bouncing sched_domain rebuilding to a work item.  As such nesting\nis allowed now, remove the workqueue bouncing code and always rebuild\nsched_domains synchronously.  This also nests sched_domains_mutex\ninside cgroup_mutex, which is intended and should be okay.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "3a5a6d0c2b0391e159fa5bf1dddb9bf1f35178a0",
      "tree": "aafc1a1207631f277731afe9bff237ece2554efb",
      "parents": [
        "deb7aa308ea264b374d1db970174f5728a2faa27"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "message": "cpuset: don\u0027t nest cgroup_mutex inside get_online_cpus()\n\nCPU / memory hotplug path currently grabs cgroup_mutex from hotplug\nevent notifications.  We want to separate cpuset locking from cgroup\ncore and make cgroup_mutex outer to hotplug synchronization so that,\namong other things, mechanisms which depend on get_online_cpus() can\nbe used from cgroup callbacks.  In general, we want to keep\ncgroup_mutex the outermost lock to minimize locking interactions among\ndifferent controllers.\n\nConvert cpuset_handle_hotplug() to cpuset_hotplug_workfn() and\nschedule it from the hotplug notifications.  As the function can\nalready handle multiple mixed events without any input, converting it\nto a work function is mostly trivial; however, one complication is\nthat cpuset_update_active_cpus() needs to update sched domains\nsynchronously to reflect an offlined cpu to avoid confusing the\nscheduler.  This is worked around by falling back to the the default\nsingle sched domain synchronously before scheduling the actual hotplug\nwork.  This makes sched domain rebuilt twice per CPU hotplug event but\nthe operation isn\u0027t that heavy and a lot of the second operation would\nbe noop for systems w/ single sched domain, which is the common case.\n\nThis decouples cpuset hotplug handling from the notification callbacks\nand there can be an arbitrary delay between the actual event and\nupdates to cpusets.  Scheduler and mm can handle it fine but moving\ntasks out of an empty cpuset may race against writes to the cpuset\nrestoring execution resources which can lead to confusing behavior.\nFlush hotplug work item from cpuset_write_resmask() to avoid such\nconfusions.\n\nv2: Synchronous sched domain rebuilding using the fallback sched\n    domain added.  This fixes various issues caused by confused\n    scheduler putting tasks on a dead CPU, including the one reported\n    by Li Zefan.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "deb7aa308ea264b374d1db970174f5728a2faa27",
      "tree": "eda76fcb0a19269db2d624f7c9eca5bb52c7102b",
      "parents": [
        "4e4c9a140fc2ecf5e086922ccd2022bdabe509b6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "message": "cpuset: reorganize CPU / memory hotplug handling\n\nReorganize hotplug path to prepare for async hotplug handling.\n\n* Both CPU and memory hotplug handlings are collected into a single\n  function - cpuset_handle_hotplug().  It doesn\u0027t take any argument\n  but compares the current setttings of top_cpuset against what\u0027s\n  actually available to determine what happened.  This function\n  directly updates top_cpuset.  If there are CPUs or memory nodes\n  which are taken down, cpuset_propagate_hotplug() in invoked on all\n  !root cpusets.\n\n* cpuset_propagate_hotplug() is responsible for updating the specified\n  cpuset so that it doesn\u0027t include any resource which isn\u0027t available\n  to top_cpuset.  If no CPU or memory is left after update, all tasks\n  are moved to the nearest ancestor with both resources.\n\n* update_tasks_cpumask() and update_tasks_nodemask() are now always\n  called after cpus or mems masks are updated even if the cpuset\n  doesn\u0027t have any task.  This is for brevity and not expected to have\n  any measureable effect.\n\n* cpu_active_mask and N_HIGH_MEMORY are read exactly once per\n  cpuset_handle_hotplug() invocation, all cpusets share the same view\n  of what resources are available, and cpuset_handle_hotplug() can\n  handle multiple resources going up and down.  These properties will\n  allow async operation.\n\nThe reorganization, while drastic, is equivalent and shouldn\u0027t cause\nany behavior difference.  This will enable making hotplug handling\nasync and remove get_online_cpus() -\u003e cgroup_mutex nesting.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "4e4c9a140fc2ecf5e086922ccd2022bdabe509b6",
      "tree": "80bc4759956732ae68d1972cc6cd538c64bba1c8",
      "parents": [
        "ae8086ce15fdab2b57599d7a3242a114ba4b8597"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "message": "cpuset: cleanup cpuset[_can]_attach()\n\ncpuset_can_attach() prepare global variables cpus_attach and\ncpuset_attach_nodemask_{to|from} which are used by cpuset_attach().\nThere is no reason to prepare in cpuset_can_attach().  The same\ninformation can be accessed from cpuset_attach().\n\nMove the prepartion logic from cpuset_can_attach() to cpuset_attach()\nand make the global variables static ones inside cpuset_attach().\n\nWith this change, there\u0027s no reason to keep\ncpuset_attach_nodemask_{from|to} global.  Move them inside\ncpuset_attach().  Unfortunately, we need to keep cpus_attach global as\nit can\u0027t be allocated from cpuset_attach().\n\nv2: cpus_attach not converted to cpumask_t as per Li Zefan and Rusty\n    Russell.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ae8086ce15fdab2b57599d7a3242a114ba4b8597",
      "tree": "1093306a5eabc7716fa7659c2ee48b99bc984c2f",
      "parents": [
        "efeb77b2f13deb0503e65ad2b243495b6de75173"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "message": "cpuset: introduce cpuset_for_each_child()\n\nInstead of iterating cgroup-\u003echildren directly, introduce and use\ncpuset_for_each_child() which wraps cgroup_for_each_child() and\nperforms online check.  As it uses the generic iterator, it requires\nRCU read locking too.\n\nAs cpuset is currently protected by cgroup_mutex, non-online cpusets\naren\u0027t visible to all the iterations and this patch currently doesn\u0027t\nmake any functional difference.  This will be used to de-couple cpuset\nlocking from cgroup core.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "efeb77b2f13deb0503e65ad2b243495b6de75173",
      "tree": "2b0db442e04561e7993301247ae8d8a10855a721",
      "parents": [
        "c8f699bb56aeae951e02fe2a46c9ada022535770"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "message": "cpuset: introduce CS_ONLINE\n\nAdd CS_ONLINE which is set from css_online() and cleared from\ncss_offline().  This will enable using generic cgroup iterator while\nallowing decoupling cpuset from cgroup internal locking.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "c8f699bb56aeae951e02fe2a46c9ada022535770",
      "tree": "bd1099ce72de75b4fcd2c9e763eabf51e27e3f7d",
      "parents": [
        "0772324ae669f787b42fdb9fc5ac2c3d1c0df509"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "message": "cpuset: introduce -\u003ecss_on/offline()\n\nAdd cpuset_css_on/offline() and rearrange css init/exit such that,\n\n* Allocation and clearing to the default values happen in css_alloc().\n  Allocation now uses kzalloc().\n\n* Config inheritance and registration happen in css_online().\n\n* css_offline() undoes what css_online() did.\n\n* css_free() frees.\n\nThis doesn\u0027t introduce any visible behavior changes.  This will help\ncleaning up locking.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "0772324ae669f787b42fdb9fc5ac2c3d1c0df509",
      "tree": "6a7aacbd773a1b3867c6bd2d62c796b79a3579fd",
      "parents": [
        "01c889cf4f2e16c9a21376f8583f4a2872d7d1da"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "message": "cpuset: remove fast exit path from remove_tasks_in_empty_cpuset()\n\nThe function isn\u0027t that hot, the overhead of missing the fast exit is\nlow, the test itself depends heavily on cgroup internals, and it\u0027s\ngonna be a hindrance when trying to decouple cpuset locking from\ncgroup core.  Remove the fast exit path.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "01c889cf4f2e16c9a21376f8583f4a2872d7d1da",
      "tree": "9e14b14da99fb1642c40e7928c25af9900fcc59a",
      "parents": [
        "12a9d2fef1d35770d3cdc2cd1faabb83c45bc0fa"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:51:07 2013 -0800"
      },
      "message": "cpuset: remove unused cpuset_unlock()\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "38d7bee9d24adf4c95676a3dc902827c72930ebb",
      "tree": "f61a6ae69f5976d31bfabe264dd36c8d4d7e3547",
      "parents": [
        "8219fc48adb3b09eabf502c560bf13f273ea69a3"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Wed Dec 12 13:51:24 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 12 17:38:32 2012 -0800"
      },
      "message": "cpuset: use N_MEMORY instead N_HIGH_MEMORY\n\nN_HIGH_MEMORY stands for the nodes that has normal or high memory.\nN_MEMORY stands for the nodes that has any memory.\n\nThe code here need to handle with the nodes which have memory, we should\nuse N_MEMORY instead.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nAcked-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nSigned-off-by: Wen Congyang \u003cwency@cn.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Lin Feng \u003clinfeng@cn.fujitsu.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"
    },
    {
      "commit": "033fa1c5f5f73833598a0beb022c0048fb769dad",
      "tree": "ec6c34da43d3d71ec3dbfc116ae1c3b8197edc89",
      "parents": [
        "2260e7fc1f18ad815324605c1ce7d5c6fd9b19a2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 08:13:39 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 08:13:39 2012 -0800"
      },
      "message": "cgroup, cpuset: remove cgroup_subsys-\u003epost_clone()\n\nCurrently CGRP_CPUSET_CLONE_CHILDREN triggers -\u003epost_clone().  Now\nthat clone_children is cpuset specific, there\u0027s no reason to have this\nrather odd option activation mechanism in cgroup core.  cpuset can\ncheck the flag from its -\u003ecss_allocate() and take the necessary\naction.\n\nMove cpuset_post_clone() logic to the end of cpuset_css_alloc() and\nremove cgroup_subsys-\u003epost_clone().\n\nLoosely based on Glauber\u0027s \"generalize post_clone into post_create\"\npatch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nOriginal-patch-by: Glauber Costa \u003cglommer@parallels.com\u003e\nOriginal-patch: \u003c1351686554-22592-2-git-send-email-glommer@parallels.com\u003e\nAcked-by: Serge E. Hallyn \u003cserge.hallyn@ubuntu.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\n"
    },
    {
      "commit": "92fb97487a7e41b222c1417cabd1d1ab7cc3a48c",
      "tree": "c220c622b9ac9b16535535d448e9cd29be72c77e",
      "parents": [
        "b1929db42f8a649d9a9e397119f628c27fd4021f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 08:13:38 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 08:13:38 2012 -0800"
      },
      "message": "cgroup: rename -\u003ecreate/post_create/pre_destroy/destroy() to -\u003ecss_alloc/online/offline/free()\n\nRename cgroup_subsys css lifetime related callbacks to better describe\nwhat their roles are.  Also, update documentation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "a1cd2b13f754b2c56fb87b8c4912c015f8f57c0c",
      "tree": "bb53414ee118a3807e5280ada2e26c1892c4dd18",
      "parents": [
        "7ddf96b02fe8dd441f452deef879040def5f7b34"
      ],
      "author": {
        "name": "Srivatsa S. Bhat",
        "email": "srivatsa.bhat@linux.vnet.ibm.com",
        "time": "Thu May 24 19:47:03 2012 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Jul 24 13:53:28 2012 +0200"
      },
      "message": "cpusets: Remove/update outdated comments\n\ncpuset_track_online_cpus() is no longer present. So remove the\noutdated comment and replace it with reference to cpuset_update_active_cpus()\nwhich is its equivalent.\n\nAlso, we don\u0027t lack memory hot-unplug anymore. And David Rientjes pointed\nout how it is dealt with. So update that comment as well.\n\nSigned-off-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLink: http://lkml.kernel.org/r/20120524141700.3692.98192.stgit@srivatsabhat.in.ibm.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "7ddf96b02fe8dd441f452deef879040def5f7b34",
      "tree": "779a01bad0b51eb8ca8acb96b75f5a1b06f9a6d3",
      "parents": [
        "80d1fa6463d934969b7aebf04107fc133463f0f6"
      ],
      "author": {
        "name": "Srivatsa S. Bhat",
        "email": "srivatsa.bhat@linux.vnet.ibm.com",
        "time": "Thu May 24 19:46:55 2012 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Jul 24 13:53:22 2012 +0200"
      },
      "message": "cpusets, hotplug: Restructure functions that are invoked during hotplug\n\nSeparate out the cpuset related handling for CPU/Memory online/offline.\nThis also helps us exploit the most obvious and basic level of optimization\nthat any notification mechanism (CPU/Mem online/offline) has to offer us:\n\"We *know* why we have been invoked. So stop pretending that we are lost,\nand do only the necessary amount of processing!\".\n\nAnd while at it, rename scan_for_empty_cpusets() to\nscan_cpusets_upon_hotplug(), which is more appropriate considering how\nit is restructured.\n\nSigned-off-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLink: http://lkml.kernel.org/r/20120524141650.3692.48637.stgit@srivatsabhat.in.ibm.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "80d1fa6463d934969b7aebf04107fc133463f0f6",
      "tree": "9e86e50c41016e68df655890c93a3b200c6a3ec0",
      "parents": [
        "d35be8bab9b0ce44bed4b9453f86ebf64062721e"
      ],
      "author": {
        "name": "Srivatsa S. Bhat",
        "email": "srivatsa.bhat@linux.vnet.ibm.com",
        "time": "Thu May 24 19:46:41 2012 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Jul 24 13:53:18 2012 +0200"
      },
      "message": "cpusets, hotplug: Implement cpuset tree traversal in a helper function\n\nAt present, the functions that deal with cpusets during CPU/Mem hotplug\nare quite messy, since a lot of the functionality is mixed up without clear\nseparation. And this takes a toll on optimization as well. For example,\nthe function cpuset_update_active_cpus() is called on both CPU offline and CPU\nonline events; and it invokes scan_for_empty_cpusets(), which makes sense\nonly for CPU offline events. And hence, the current code ends up unnecessarily\ntraversing the cpuset tree during CPU online also.\n\nAs a first step towards cleaning up those functions, encapsulate the cpuset\ntree traversal in a helper function, so as to facilitate upcoming changes.\n\nSigned-off-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLink: http://lkml.kernel.org/r/20120524141635.3692.893.stgit@srivatsabhat.in.ibm.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "d35be8bab9b0ce44bed4b9453f86ebf64062721e",
      "tree": "295823c4f0d50be5b30714a083de658e1a4185e6",
      "parents": [
        "ee08d1284ea9235b29bd2d9b7493b4b4cf3da09c"
      ],
      "author": {
        "name": "Srivatsa S. Bhat",
        "email": "srivatsa.bhat@linux.vnet.ibm.com",
        "time": "Thu May 24 19:46:26 2012 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Jul 24 13:53:14 2012 +0200"
      },
      "message": "CPU hotplug, cpusets, suspend: Don\u0027t modify cpusets during suspend/resume\n\nIn the event of CPU hotplug, the kernel modifies the cpusets\u0027 cpus_allowed\nmasks as and when necessary to ensure that the tasks belonging to the cpusets\nhave some place (online CPUs) to run on. And regular CPU hotplug is\ndestructive in the sense that the kernel doesn\u0027t remember the original cpuset\nconfigurations set by the user, across hotplug operations.\n\nHowever, suspend/resume (which uses CPU hotplug) is a special case in which\nthe kernel has the responsibility to restore the system (during resume), to\nexactly the same state it was in before suspend.\n\nIn order to achieve that, do the following:\n\n1. Don\u0027t modify cpusets during suspend/resume. At all.\n   In particular, don\u0027t move the tasks from one cpuset to another, and\n   don\u0027t modify any cpuset\u0027s cpus_allowed mask. So, simply ignore cpusets\n   during the CPU hotplug operations that are carried out in the\n   suspend/resume path.\n\n2. However, cpusets and sched domains are related. We just want to avoid\n   altering cpusets alone. So, to keep the sched domains updated, build\n   a single sched domain (containing all active cpus) during each of the\n   CPU hotplug operations carried out in s/r path, effectively ignoring\n   the cpusets\u0027 cpus_allowed masks.\n\n   (Since userspace is frozen while doing all this, it will go unnoticed.)\n\n3. During the last CPU online operation during resume, build the sched\n   domains by looking up the (unaltered) cpusets\u0027 cpus_allowed masks.\n   That will bring back the system to the same original state as it was in\n   before suspend.\n\nUltimately, this will not only solve the cpuset problem related to suspend\nresume (ie., restores the cpusets to exactly what it was before suspend, by\nnot touching it at all) but also speeds up suspend/resume because we avoid\nrunning cpuset update code for every CPU being offlined/onlined.\n\nSigned-off-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLink: http://lkml.kernel.org/r/20120524141611.3692.20155.stgit@srivatsabhat.in.ibm.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "88d6ae8dc33af12fe1c7941b1fae2767374046fd",
      "tree": "8f17415c0722b0a4d7511ac170cfb4e3802e1ad2",
      "parents": [
        "f5c101892fbd3d2f6d2729bc7eb7b3f6c31dbddd",
        "0d4dde1ac9a5af74ac76c6ab90557d1ae7b8f5d8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 22 17:40:19 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 22 17:40:19 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\nPull cgroup updates from Tejun Heo:\n \"cgroup file type addition / removal is updated so that file types are\n  added and removed instead of individual files so that dynamic file\n  type addition / removal can be implemented by cgroup and used by\n  controllers.  blkio controller changes which will come through block\n  tree are dependent on this.  Other changes include res_counter cleanup\n  and disallowing kthread / PF_THREAD_BOUND threads to be attached to\n  non-root cgroups.\n\n  There\u0027s a reported bug with the file type addition / removal handling\n  which can lead to oops on cgroup umount.  The issue is being looked\n  into.  It shouldn\u0027t cause problems for most setups and isn\u0027t a\n  security concern.\"\n\nFix up trivial conflict in Documentation/feature-removal-schedule.txt\n\n* \u0027for-3.5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (21 commits)\n  res_counter: Account max_usage when calling res_counter_charge_nofail()\n  res_counter: Merge res_counter_charge and res_counter_charge_nofail\n  cgroups: disallow attaching kthreadd or PF_THREAD_BOUND threads\n  cgroup: remove cgroup_subsys-\u003epopulate()\n  cgroup: get rid of populate for memcg\n  cgroup: pass struct mem_cgroup instead of struct cgroup to socket memcg\n  cgroup: make css-\u003erefcnt clearing on cgroup removal optional\n  cgroup: use negative bias on css-\u003erefcnt to block css_tryget()\n  cgroup: implement cgroup_rm_cftypes()\n  cgroup: introduce struct cfent\n  cgroup: relocate __d_cgrp() and __d_cft()\n  cgroup: remove cgroup_add_file[s]()\n  cgroup: convert memcg controller to the new cftype interface\n  memcg: always create memsw files if CONFIG_CGROUP_MEM_RES_CTLR_SWAP\n  cgroup: convert all non-memcg controllers to the new cftype interface\n  cgroup: relocate cftype and cgroup_subsys definitions in controllers\n  cgroup: merge cft_release_agent cftype array into the base files array\n  cgroup: implement cgroup_add_cftypes() and friends\n  cgroup: build list of all cgroups under a given cgroupfs_root\n  cgroup: move cgroup_clear_directory() call out of cgroup_populate_dir()\n  ...\n"
    },
    {
      "commit": "deb74f5ca1f22f9e1c5da93143a250dbb96535af",
      "tree": "ee9eb01e5433ea50f3414a469521a4c1cfaccb7a",
      "parents": [
        "dd775ae2549217d3ae09363e3edb305d0fa19928",
        "615399c84d1b8d8d8752629e5e5ab4e5044d6918"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 02 08:53:24 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 02 08:53:24 2012 -0700"
      },
      "message": "Merge tag \u0027for-linus\u0027 of git://github.com/rustyrussell/linux\n\nPull cpumask cleanups from Rusty Russell:\n \"(Somehow forgot to send this out; it\u0027s been sitting in linux-next, and\n  if you don\u0027t want it, it can sit there another cycle)\"\n\nI\u0027m a sucker for things that actually delete lines of code.\n\nFix up trivial conflict in arch/arm/kernel/kprobes.c, where Rusty fixed\na user of \u0026cpu_online_map to be cpu_online_mask, but that code got\ndeleted by commit b21d55e98ac2 (\"ARM: 7332/1: extract out code patch\nfunction from kprobes\").\n\n* tag \u0027for-linus\u0027 of git://github.com/rustyrussell/linux:\n  cpumask: remove old cpu_*_map.\n  documentation: remove references to cpu_*_map.\n  drivers/cpufreq/db8500-cpufreq: remove references to cpu_*_map.\n  remove references to cpu_*_map in arch/\n"
    },
    {
      "commit": "4baf6e33251b37f111e21289f8ee71fe4cce236e",
      "tree": "7decc386a60679fd2696041810cf331c0daf1f41",
      "parents": [
        "676f7c8f84d15e94065841529016da5ab92e901b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 01 12:09:55 2012 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 01 12:09:55 2012 -0700"
      },
      "message": "cgroup: convert all non-memcg controllers to the new cftype interface\n\nConvert debug, freezer, cpuset, cpu_cgroup, cpuacct, net_prio, blkio,\nnet_cls and device controllers to use the new cftype based interface.\nTermination entry is added to cftype arrays and populate callbacks are\nreplaced with cgroup_subsys-\u003ebase_cftypes initializations.\n\nThis is functionally identical transformation.  There shouldn\u0027t be any\nvisible behavior change.\n\nmemcg is rather special and will be converted separately.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cpaul@paulmenage.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "7fda0412c5f7afdd1a5ff518f98dee5157266d8a",
      "tree": "d312af46758fa9b59431a479d258b54184a00591",
      "parents": [
        "6b8212a313dae341ef3a2e413dfec5c4dea59617",
        "160594e99dbbb0a5600ad922c630952c7c1c14bf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 14:46:05 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 14:46:05 2012 -0700"
      },
      "message": "Merge branch \u0027sched-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull scheduler fixes from Ingo Molnar.\n\n* \u0027sched-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  cpusets: Remove an unused variable\n  sched/rt: Improve pick_next_highest_task_rt()\n  sched: Fix select_fallback_rq() vs cpu_active/cpu_online\n  sched/x86/smp: Do not enable IRQs over calibrate_delay()\n  sched: Fix compiler warning about declared inline after use\n  MAINTAINERS: Update email address for SCHEDULER and PERF EVENTS\n"
    },
    {
      "commit": "5f054e31c63be774bf1ce252f20d56012a00f8a5",
      "tree": "c10cf544a46e55cbf9d0b978e61327bb256c4bae",
      "parents": [
        "88d8cd52bc9dd7696617b31ea91263d6c47f22e4"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Mar 29 15:38:31 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Mar 29 15:38:31 2012 +1030"
      },
      "message": "documentation: remove references to cpu_*_map.\n\nThis has been obsolescent for a while, fix documentation and\nmisc comments.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "160594e99dbbb0a5600ad922c630952c7c1c14bf",
      "tree": "4a3e71c4a8df45cb4399c412a63cb292ee7c45e5",
      "parents": [
        "1b028abc779b67b699daff55e27d2432f8d92666"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Wed Mar 28 13:46:09 2012 +0300"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed Mar 28 13:40:44 2012 +0200"
      },
      "message": "cpusets: Remove an unused variable\n\nWe don\u0027t use \"cpu\" any more after 2baab4e904 \"sched: Fix\nselect_fallback_rq() vs cpu_active/cpu_online\".\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nCc: Paul Menage \u003cpaul@paulmenage.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20120328104608.GD29022@elgon.mountain\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "2baab4e90495ebc9826c93f79d74d6e60a828d24",
      "tree": "6e6316694a9bc69e517e50b0d01043c4c9e83888",
      "parents": [
        "bc758133ed73d4b06952bec21da23e28e62bf3ba"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Mar 20 15:57:01 2012 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Mar 27 14:50:14 2012 +0200"
      },
      "message": "sched: Fix select_fallback_rq() vs cpu_active/cpu_online\n\nCommit 5fbd036b55 (\"sched: Cleanup cpu_active madness\"), which was\nsupposed to finally sort the cpu_active mess, instead uncovered more.\n\nSince CPU_STARTING is ran before setting the cpu online, there\u0027s a\n(small) window where the cpu has active,!online.\n\nIf during this time there\u0027s a wakeup of a task that used to reside on\nthat cpu select_task_rq() will use select_fallback_rq() to compute an\nalternative cpu to run on since we find !online.\n\nselect_fallback_rq() however will compute the new cpu against\ncpu_active, this means that it can return the same cpu it started out\nwith, the !online one, since that cpu is in fact marked active.\n\nThis results in us trying to scheduling a task on an offline cpu and\ntriggering a WARN in the IPI code.\n\nThe solution proposed by Chuansheng Liu of setting cpu_active in\nset_cpu_online() is buggy, firstly not all archs actually use\nset_cpu_online(), secondly, not all archs call set_cpu_online() with\nIRQs disabled, this means we would introduce either the same race or\nthe race from fd8a7de17 (\"x86: cpu-hotplug: Prevent softirq wakeup on\nwrong CPU\") -- albeit much narrower.\n\n[ By setting online first and active later we have a window of\n  online,!active, fresh and bound kthreads have task_cpu() of 0 and\n  since cpu0 isn\u0027t in tsk_cpus_allowed() we end up in\n  select_fallback_rq() which excludes !active, resulting in a reset\n  of -\u003ecpus_allowed and the thread running all over the place. ]\n\nThe solution is to re-work select_fallback_rq() to require active\n_and_ online. This makes the active,!online case work as expected,\nOTOH archs running CPU_STARTING after setting online are now\nvulnerable to the issue from fd8a7de17 -- these are alpha and\nblackfin.\n\nReported-by: Chuansheng Liu \u003cchuansheng.liu@intel.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: linux-alpha@vger.kernel.org\nLink: http://lkml.kernel.org/n/tip-hubqk1i10o4dpvlm06gq7v6j@git.kernel.org\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "cc9a6c8776615f9c194ccf0b63a0aa5628235545",
      "tree": "0cbbf118e86541f8eb2fc7b717a0e08eaced986d",
      "parents": [
        "e845e199362cc5712ba0e7eedc14eed70e144258"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Wed Mar 21 16:34:11 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "cpuset: mm: reduce large amounts of memory barrier related damage v3\n\nCommit c0ff7453bb5c (\"cpuset,mm: fix no node to alloc memory when\nchanging cpuset\u0027s mems\") wins a super prize for the largest number of\nmemory barriers entered into fast paths for one commit.\n\n[get|put]_mems_allowed is incredibly heavy with pairs of full memory\nbarriers inserted into a number of hot paths.  This was detected while\ninvestigating at large page allocator slowdown introduced some time\nafter 2.6.32.  The largest portion of this overhead was shown by\noprofile to be at an mfence introduced by this commit into the page\nallocator hot path.\n\nFor extra style points, the commit introduced the use of yield() in an\nimplementation of what looks like a spinning mutex.\n\nThis patch replaces the full memory barriers on both read and write\nsides with a sequence counter with just read barriers on the fast path\nside.  This is much cheaper on some architectures, including x86.  The\nmain bulk of the patch is the retry logic if the nodemask changes in a\nmanner that can cause a false failure.\n\nWhile updating the nodemask, a check is made to see if a false failure\nis a risk.  If it is, the sequence number gets bumped and parallel\nallocators will briefly stall while the nodemask update takes place.\n\nIn a page fault test microbenchmark, oprofile samples from\n__alloc_pages_nodemask went from 4.53% of all samples to 1.15%.  The\nactual results were\n\n                             3.3.0-rc3          3.3.0-rc3\n                             rc3-vanilla        nobarrier-v2r1\n    Clients   1 UserTime       0.07 (  0.00%)   0.08 (-14.19%)\n    Clients   2 UserTime       0.07 (  0.00%)   0.07 (  2.72%)\n    Clients   4 UserTime       0.08 (  0.00%)   0.07 (  3.29%)\n    Clients   1 SysTime        0.70 (  0.00%)   0.65 (  6.65%)\n    Clients   2 SysTime        0.85 (  0.00%)   0.82 (  3.65%)\n    Clients   4 SysTime        1.41 (  0.00%)   1.41 (  0.32%)\n    Clients   1 WallTime       0.77 (  0.00%)   0.74 (  4.19%)\n    Clients   2 WallTime       0.47 (  0.00%)   0.45 (  3.73%)\n    Clients   4 WallTime       0.38 (  0.00%)   0.37 (  1.58%)\n    Clients   1 Flt/sec/cpu  497620.28 (  0.00%) 520294.53 (  4.56%)\n    Clients   2 Flt/sec/cpu  414639.05 (  0.00%) 429882.01 (  3.68%)\n    Clients   4 Flt/sec/cpu  257959.16 (  0.00%) 258761.48 (  0.31%)\n    Clients   1 Flt/sec      495161.39 (  0.00%) 517292.87 (  4.47%)\n    Clients   2 Flt/sec      820325.95 (  0.00%) 850289.77 (  3.65%)\n    Clients   4 Flt/sec      1020068.93 (  0.00%) 1022674.06 (  0.26%)\n    MMTests Statistics: duration\n    Sys Time Running Test (seconds)             135.68    132.17\n    User+Sys Time Running Test (seconds)         164.2    160.13\n    Total Elapsed Time (seconds)                123.46    120.87\n\nThe overall improvement is small but the System CPU time is much\nimproved and roughly in correlation to what oprofile reported (these\nperformance figures are without profiling so skew is expected).  The\nactual number of page faults is noticeably improved.\n\nFor benchmarks like kernel builds, the overall benefit is marginal but\nthe system CPU time is slightly reduced.\n\nTo test the actual bug the commit fixed I opened two terminals.  The\nfirst ran within a cpuset and continually ran a small program that\nfaulted 100M of anonymous data.  In a second window, the nodemask of the\ncpuset was continually randomised in a loop.\n\nWithout the commit, the program would fail every so often (usually\nwithin 10 seconds) and obviously with the commit everything worked fine.\nWith this patch applied, it also worked fine so the fix should be\nfunctionally equivalent.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "761b3ef50e1c2649cffbfa67a4dcb2dcdb7982ed",
      "tree": "67ab6a9a2520811c9c0b4d70d1c19b4bfca16237",
      "parents": [
        "61d1d219c4c0761059236a46867bc49943c4d29d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Jan 31 13:47:36 2012 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 02 09:20:22 2012 -0800"
      },
      "message": "cgroup: remove cgroup_subsys argument from callbacks\n\nThe argument is not used at all, and it\u0027s not necessary, because\na specific callback handler of course knows which subsys it\nbelongs to.\n\nNow only -\u003epupulate() takes this argument, because the handlers of\nthis callback always call cgroup_add_file()/cgroup_add_files().\n\nSo we reduce a few lines of code, though the shrinking of object size\nis minimal.\n\n 16 files changed, 113 insertions(+), 162 deletions(-)\n\n   text    data     bss     dec     hex filename\n5486240  656987 7039960 13183187         c928d3 vmlinux.o.orig\n5486170  656987 7039960 13183117         c9288d vmlinux.o\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "db0c2bf69aa095d4a6de7b1145f29fe9a7c0f6a3",
      "tree": "8f38957c01b18edddd44d49ecc3beeac08a20b4e",
      "parents": [
        "ac69e0928054ff29a5049902fb477f9c7605c773",
        "0d19ea866562e46989412a0676412fa0983c9ce7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 09 12:59:24 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 09 12:59:24 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\n* \u0027for-3.3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (21 commits)\n  cgroup: fix to allow mounting a hierarchy by name\n  cgroup: move assignement out of condition in cgroup_attach_proc()\n  cgroup: Remove task_lock() from cgroup_post_fork()\n  cgroup: add sparse annotation to cgroup_iter_start() and cgroup_iter_end()\n  cgroup: mark cgroup_rmdir_waitq and cgroup_attach_proc() as static\n  cgroup: only need to check oldcgrp\u003d\u003dnewgrp once\n  cgroup: remove redundant get/put of task struct\n  cgroup: remove redundant get/put of old css_set from migrate\n  cgroup: Remove unnecessary task_lock before fetching css_set on migration\n  cgroup: Drop task_lock(parent) on cgroup_fork()\n  cgroups: remove redundant get/put of css_set from css_set_check_fetched()\n  resource cgroups: remove bogus cast\n  cgroup: kill subsys-\u003ecan_attach_task(), pre_attach() and attach_task()\n  cgroup, cpuset: don\u0027t use ss-\u003epre_attach()\n  cgroup: don\u0027t use subsys-\u003ecan_attach_task() or -\u003eattach_task()\n  cgroup: introduce cgroup_taskset and use it in subsys-\u003ecan_attach(), cancel_attach() and attach()\n  cgroup: improve old cgroup handling in cgroup_attach_proc()\n  cgroup: always lock threadgroup during migration\n  threadgroup: extend threadgroup_lock() to cover exit and exec\n  threadgroup: rename signal-\u003ethreadgroup_fork_lock to -\u003egroup_rwsem\n  ...\n\nFix up conflict in kernel/cgroup.c due to commit e0197aae59e5: \"cgroups:\nfix a css_set not found bug in cgroup_attach_proc\" that already\nmentioned that the bug is fixed (differently) in Tejun\u0027s cgroup\npatchset. This one, in other words.\n"
    },
    {
      "commit": "b246272ecc5ac68c743b15c9e41a2275f7ce70e2",
      "tree": "d32b30f02501a6978c7c2d97f7c505604f9bac28",
      "parents": [
        "511585a28e5b5fd1cac61e601e42efc4c5dd64b5"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Dec 19 17:11:52 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 20 10:25:04 2011 -0800"
      },
      "message": "cpusets: stall when updating mems_allowed for mempolicy or disjoint nodemask\n\nKernels where MAX_NUMNODES \u003e BITS_PER_LONG may temporarily see an empty\nnodemask in a tsk\u0027s mempolicy if its previous nodemask is remapped onto a\nnew set of allowed cpuset nodes where the two nodemasks, as a result of\nthe remap, are now disjoint.\n\nc0ff7453bb5c (\"cpuset,mm: fix no node to alloc memory when changing\ncpuset\u0027s mems\") adds get_mems_allowed() to prevent the set of allowed\nnodes from changing for a thread.  This causes any update to a set of\nallowed nodes to stall until put_mems_allowed() is called.\n\nThis stall is unncessary, however, if at least one node remains unchanged\nin the update to the set of allowed nodes.  This was addressed by\n89e8a244b97e (\"cpusets: avoid looping when storing to mems_allowed if one\nnode remains set\"), but it\u0027s still possible that an empty nodemask may be\nread from a mempolicy because the old nodemask may be remapped to the new\nnodemask during rebind.  To prevent this, only avoid the stall if there is\nno mempolicy for the thread being changed.\n\nThis is a temporary solution until all reads from mempolicy nodemasks can\nbe guaranteed to not be empty without the get_mems_allowed()\nsynchronization.\n\nAlso moves the check for nodemask intersection inside task_lock() so that\ntsk-\u003emems_allowed cannot change.  This ensures that nothing can set this\ntsk\u0027s mems_allowed out from under us and also protects tsk-\u003emempolicy.\n\nReported-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cpaul@paulmenage.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "94196f51c1ee5bbad674de28c682b17d78adb8e6",
      "tree": "a4965645000e9766f06ee7b5eb2bab098cde0f8c",
      "parents": [
        "bb9d97b6dffa10cec5e1ce9adbce60f3c2b5eabc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Dec 12 18:12:22 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Dec 12 18:12:22 2011 -0800"
      },
      "message": "cgroup, cpuset: don\u0027t use ss-\u003epre_attach()\n\n-\u003epre_attach() is supposed to be called before migration, which is\nobserved during process migration but task migration does it the other\nway around.  The only -\u003epre_attach() user is cpuset which can do the\nsame operaitons in -\u003ecan_attach().  Collapse cpuset_pre_attach() into\ncpuset_can_attach().\n\n-v2: Patch contamination from later patch removed.  Spotted by Paul\n     Menage.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Paul Menage \u003cpaul@paulmenage.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "bb9d97b6dffa10cec5e1ce9adbce60f3c2b5eabc",
      "tree": "fb8351518fcfb91927e9e138f48284c44553f011",
      "parents": [
        "2f7ee5691eecb67c8108b92001a85563ea336ac5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Dec 12 18:12:21 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Dec 12 18:12:21 2011 -0800"
      },
      "message": "cgroup: don\u0027t use subsys-\u003ecan_attach_task() or -\u003eattach_task()\n\nNow that subsys-\u003ecan_attach() and attach() take @tset instead of\n@task, they can handle per-task operations.  Convert\n-\u003ecan_attach_task() and -\u003eattach_task() users to use -\u003ecan_attach()\nand attach() instead.  Most converions are straight-forward.\nNoteworthy changes are,\n\n* In cgroup_freezer, remove unnecessary NULL assignments to unused\n  methods.  It\u0027s useless and very prone to get out of sync, which\n  already happened.\n\n* In cpuset, PF_THREAD_BOUND test is checked for each task.  This\n  doesn\u0027t make any practical difference but is conceptually cleaner.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cpaul@paulmenage.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "2f7ee5691eecb67c8108b92001a85563ea336ac5",
      "tree": "18cf60ea8a463f4a6cd59c68926ba4357ae8ff4c",
      "parents": [
        "134d33737f9015761c3832f6b268fae6274aac7f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Dec 12 18:12:21 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Dec 12 18:12:21 2011 -0800"
      },
      "message": "cgroup: introduce cgroup_taskset and use it in subsys-\u003ecan_attach(), cancel_attach() and attach()\n\nCurrently, there\u0027s no way to pass multiple tasks to cgroup_subsys\nmethods necessitating the need for separate per-process and per-task\nmethods.  This patch introduces cgroup_taskset which can be used to\npass multiple tasks and their associated cgroups to cgroup_subsys\nmethods.\n\nThree methods - can_attach(), cancel_attach() and attach() - are\nconverted to use cgroup_taskset.  This unifies passed parameters so\nthat all methods have access to all information.  Conversions in this\npatchset are identical and don\u0027t introduce any behavior change.\n\n-v2: documentation updated as per Paul Menage\u0027s suggestion.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Paul Menage \u003cpaul@paulmenage.org\u003e\nAcked-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "89e8a244b97e48f1f30e898b6f32acca477f2a13",
      "tree": "01d55ac07b57d8afaecd1a6871c5b5d6a7151586",
      "parents": [
        "61600f578fbd2e8ad0c90bddb9c729e7628d3813"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Nov 02 13:38:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 16:07:00 2011 -0700"
      },
      "message": "cpusets: avoid looping when storing to mems_allowed if one node remains set\n\n{get,put}_mems_allowed() exist so that general kernel code may locklessly\naccess a task\u0027s set of allowable nodes without having the chance that a\nconcurrent write will cause the nodemask to be empty on configurations\nwhere MAX_NUMNODES \u003e BITS_PER_LONG.\n\nThis could incur a significant delay, however, especially in low memory\nconditions because the page allocator is blocking and reclaim requires\nget_mems_allowed() itself.  It is not atypical to see writes to\ncpuset.mems take over 2 seconds to complete, for example.  In low memory\nconditions, this is problematic because it\u0027s one of the most imporant\ntimes to change cpuset.mems in the first place!\n\nThe only way a task\u0027s set of allowable nodes may change is through cpusets\nby writing to cpuset.mems and when attaching a task to a generic code is\nnot reading the nodemask with get_mems_allowed() at the same time, and\nthen clearing all the old nodes.  This prevents the possibility that a\nreader will see an empty nodemask at the same time the writer is storing a\nnew nodemask.\n\nIf at least one node remains unchanged, though, it\u0027s possible to simply\nset all new nodes and then clear all the old nodes.  Changing a task\u0027s\nnodemask is protected by cgroup_mutex so it\u0027s guaranteed that two threads\nare not changing the same task\u0027s nodemask at the same time, so the\nnodemask is guaranteed to be stored before another thread changes it and\ndetermines whether a node remains set or not.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Paul Menage \u003cpaul@paulmenage.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9984de1a5a8a96275fcab818f7419af5a3c86e71",
      "tree": "1935d411752707a1621c5caf64f75dfe105beb3a",
      "parents": [
        "7c77509c542927ee2a3c8812fad84957e51bf67d"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon May 23 14:51:41 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 09:20:12 2011 -0400"
      },
      "message": "kernel: Map most files to use export.h instead of module.h\n\nThe changed files were only including linux/module.h for the\nEXPORT_SYMBOL infrastructure, and nothing else.  Revector them\nonto the isolated export header for faster compile times.\n\nNothing to see here but a whole lot of instances of:\n\n  -#include \u003clinux/module.h\u003e\n  +#include \u003clinux/export.h\u003e\n\nThis commit is only changing the kernel dir; next targets\nwill probably be mm, fs, the arch dirs, etc.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "60063497a95e716c9a689af3be2687d261f115b4",
      "tree": "6ce0d68db76982c53df46aee5f29f944ebf2c320",
      "parents": [
        "148817ba092f9f6edd35bad3c6c6b8e8f90fe2ed"
      ],
      "author": {
        "name": "Arun Sharma",
        "email": "asharma@fb.com",
        "time": "Tue Jul 26 16:09:06 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:47 2011 -0700"
      },
      "message": "atomic: use \u003clinux/atomic.h\u003e\n\nThis allows us to move duplicated code in \u003casm/atomic.h\u003e\n(atomic_inc_not_zero() for now) to \u003clinux/atomic.h\u003e\n\nSigned-off-by: Arun Sharma \u003casharma@fb.com\u003e\nReviewed-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "778d3b0ff0654ad7092bf823fd32010066b12365",
      "tree": "cd0073d8c513e1c56fd6950c4ec985f16fd004ad",
      "parents": [
        "8521fc50d433507a7cdc96bec280f9e5888a54cc"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue Jul 26 16:08:30 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:43 2011 -0700"
      },
      "message": "cpusets: randomize node rotor used in cpuset_mem_spread_node()\n\n[ This patch has already been accepted as commit 0ac0c0d0f837 but later\n  reverted (commit 35926ff5fba8) because it itroduced arch specific\n  __node_random which was defined only for x86 code so it broke other\n  archs.  This is a followup without any arch specific code.  Other than\n  that there are no functional changes.]\n\nSome workloads that create a large number of small files tend to assign\ntoo many pages to node 0 (multi-node systems).  Part of the reason is\nthat the rotor (in cpuset_mem_spread_node()) used to assign nodes starts\nat node 0 for newly created tasks.\n\nThis patch changes the rotor to be initialized to a random node number\nof the cpuset.\n\n[akpm@linux-foundation.org: fix layout]\n[Lee.Schermerhorn@hp.com: Define stub numa_random() for !NUMA configuration]\n[mhocko@suse.cz: Make it arch independent]\n[akpm@linux-foundation.org: fix CONFIG_NUMA\u003dy, MAX_NUMNODES\u003e1 build]\nSigned-off-by: Jack Steiner \u003csteiner@sgi.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1e1b6c511d1b23cb7c3b619d82fc7bd9f620565d",
      "tree": "c50e88412c8b42264177dc125f74a30f9c7a82d9",
      "parents": [
        "1e876231785d82443a5ac8b6c660e9f51bc5dede"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu May 19 15:08:58 2011 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat May 28 17:02:57 2011 +0200"
      },
      "message": "cpuset: Fix cpuset_cpus_allowed_fallback(), don\u0027t update tsk-\u003ert.nr_cpus_allowed\n\nThe rule is, we have to update tsk-\u003ert.nr_cpus_allowed if we change\ntsk-\u003ecpus_allowed. Otherwise RT scheduler may confuse.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/4DD4B3FA.5060901@jp.fujitsu.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a77aea92010acf54ad785047234418d5d68772e2",
      "tree": "c7cb57b62fd02bee2baceb79251923f7caec6139",
      "parents": [
        "d846687d7f84e45f23ecf3846dbb43312a1206dd"
      ],
      "author": {
        "name": "Daniel Lezcano",
        "email": "daniel.lezcano@free.fr",
        "time": "Thu May 26 16:25:23 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:34 2011 -0700"
      },
      "message": "cgroup: remove the ns_cgroup\n\nThe ns_cgroup is an annoying cgroup at the namespace / cgroup frontier and\nleads to some problems:\n\n  * cgroup creation is out-of-control\n  * cgroup name can conflict when pids are looping\n  * it is not possible to have a single process handling a lot of\n    namespaces without falling in a exponential creation time\n  * we may want to create a namespace without creating a cgroup\n\n  The ns_cgroup was replaced by a compatibility flag \u0027clone_children\u0027,\n  where a newly created cgroup will copy the parent cgroup values.\n  The userspace has to manually create a cgroup and add a task to\n  the \u0027tasks\u0027 file.\n\nThis patch removes the ns_cgroup as suggested in the following thread:\n\nhttps://lists.linux-foundation.org/pipermail/containers/2009-June/018616.html\n\nThe \u0027cgroup_clone\u0027 function is removed because it is no longer used.\n\nThis is a userspace-visible change.  Commit 45531757b45c (\"cgroup: notify\nns_cgroup deprecated\") (merged into 2.6.27) caused the kernel to emit a\nprintk warning users that the feature is planned for removal.  Since that\ntime we have heard from XXX users who were affected by this.\n\nSigned-off-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Jamal Hadi Salim \u003chadi@cyberus.ca\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f780bdb7c1c73009cb57adcf99ef50027d80bf3c",
      "tree": "d15668ffcc40a2aaa31723b87cfda0b166f84d57",
      "parents": [
        "4714d1d32d97239fb5ae3e10521d3f133a899b66"
      ],
      "author": {
        "name": "Ben Blum",
        "email": "bblum@andrew.cmu.edu",
        "time": "Thu May 26 16:25:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:34 2011 -0700"
      },
      "message": "cgroups: add per-thread subsystem callbacks\n\nAdd cgroup subsystem callbacks for per-thread attachment in atomic contexts\n\nAdd can_attach_task(), pre_attach(), and attach_task() as new callbacks\nfor cgroups\u0027s subsystem interface.  Unlike can_attach and attach, these\nare for per-thread operations, to be called potentially many times when\nattaching an entire threadgroup.\n\nAlso, the old \"bool threadgroup\" interface is removed, as replaced by\nthis.  All subsystems are modified for the new interface - of note is\ncpuset, which requires from/to nodemasks for attach to be globally scoped\n(though per-cpuset would work too) to persist from its pre_attach to\nattach_task and attach.\n\nThis is a pre-patch for cgroup-procs-writable.patch.\n\nSigned-off-by: Ben Blum \u003cbblum@andrew.cmu.edu\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nReviewed-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "60495e7760d8ee364695006af37309b0755e0e17",
      "tree": "1c842c0797a6a6b0066b18f296661fcf77cd0d0a",
      "parents": [
        "54ab4ff4316eb329d2c1acc110fbc623d2966931"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Apr 07 14:10:04 2011 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 11 14:09:32 2011 +0200"
      },
      "message": "sched: Dynamic sched_domain::level\n\nRemove the SD_LV_ enum and use dynamic level assignments.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nLink: http://lkml.kernel.org/r/20110407122942.969433965@chello.nl\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "523fb486bfd94e3a3b16a42bcb21b1959cf14df8",
      "tree": "34c1b15a9bc55ef7a3bafb87cce3d3d184d78906",
      "parents": [
        "ee24d3797780eee6ffe581a7b78d27896f9b494a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Mar 23 16:42:48 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:35 2011 -0700"
      },
      "message": "cpuset: hold callback_mutex in cpuset_post_clone()\n\nChaning cpuset-\u003emems/cpuset-\u003ecpus should be protected under\ncallback_mutex.\n\ncpuset_clone() doesn\u0027t follow this rule. It\u0027s ok because it\u0027s\ncalled when creating and initializing a cgroup, but we\u0027d better\nhold the lock to avoid subtil break in the future.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ee24d3797780eee6ffe581a7b78d27896f9b494a",
      "tree": "8034dac124ab8f0a29bc6f238c030915b2e08398",
      "parents": [
        "c8163ca8afcac0fc54593fc60d1e1110edbd0eb2"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Mar 23 16:42:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:35 2011 -0700"
      },
      "message": "cpuset: fix unchecked calls to NODEMASK_ALLOC()\n\nThose functions that use NODEMASK_ALLOC() can\u0027t propagate errno\nto users, but will fail silently.\n\nFix it by using a static nodemask_t variable for each function, and\nthose variables are protected by cgroup_mutex;\n\n[akpm@linux-foundation.org: fix comment spelling, strengthen cgroup_lock comment]\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c8163ca8afcac0fc54593fc60d1e1110edbd0eb2",
      "tree": "55a363ed73b91d8350d2df7083abf49c5c97b20d",
      "parents": [
        "9303e0c4814d2a6afca878cc35433291e862169c"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Mar 23 16:42:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:34 2011 -0700"
      },
      "message": "cpuset: remove unneeded NODEMASK_ALLOC() in cpuset_attach()\n\noldcs-\u003emems_allowed is not modified during cpuset_attach(), so we don\u0027t\nhave to copy it to a buffer allocated by NODEMASK_ALLOC().  Just pass it\nto cpuset_migrate_mm().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9303e0c4814d2a6afca878cc35433291e862169c",
      "tree": "786866f6f0639edcc2996d4157ea7128b2400898",
      "parents": [
        "f9434ad1552427fab49336e1a6e3ef121895b9d1"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Mar 23 16:42:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:34 2011 -0700"
      },
      "message": "cpuset: remove unneeded NODEMASK_ALLOC() in cpuset_sprintf_memlist()\n\nIt\u0027s not necessary to copy cpuset-\u003emems_allowed to a buffer allocated by\nNODEMASK_ALLOC().  Just pass it to nodelist_scnprintf().\n\nAs spotted by Paul, a side effect is we fix a bug that the function can\nreturn -ENOMEM but the caller doesn\u0027t expect negative return value.\nTherefore change the return value of cpuset_sprintf_cpulist() and\ncpuset_sprintf_memlist() from int to size_t.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b75f38d659e6fc747eda64cb72f3920e29dd44a4",
      "tree": "308edc066f8c26991323526d499eefa8c773f267",
      "parents": [
        "2ec38a0359e227c01080dcd670a0368c61ccd9ce"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Mar 04 17:36:21 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 04 17:53:38 2011 -0800"
      },
      "message": "cpuset: add a missing unlock in cpuset_write_resmask()\n\nDon\u0027t forget to release cgroup_mutex if alloc_trial_cpuset() fails.\n\n[akpm@linux-foundation.org: avoid multiple return points]\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f7e835710ab5f6e43933c983f38f2d2e262b718c",
      "tree": "6acdc8212053398e6913dc5c0d8392edcf202f05",
      "parents": [
        "ceefda6931806972ecf550bd8231dce4a4178953"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 26 13:23:11 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:17:06 2010 -0400"
      },
      "message": "convert cgroup and cpuset\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b0ae19811375031ae3b3fecc65b702a9c6e5cc28",
      "tree": "a765b71155fbed1ed3a3cff35c1044ad49a002ae",
      "parents": [
        "9b3056cca09529d34af2d81305b2a9c6b622ca1b"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Fri Oct 15 04:21:18 2010 +0900"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Oct 21 10:12:44 2010 +1100"
      },
      "message": "security: remove unused parameter from security_task_setscheduler()\n\nAll security modules shouldn\u0027t change sched_param parameter of\nsecurity_task_setscheduler().  This is not only meaningless, but also\nmake a harmful result if caller pass a static variable.\n\nThis patch remove policy and sched_param parameter from\nsecurity_task_setscheduler() becuase none of security module is\nusing it.\n\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "c4efd6b569b2646e1346a08a4c40286f8bcb5f11",
      "tree": "bf33e8594ac4e628cc95f2ef25513788b8273601",
      "parents": [
        "4aed2fd8e3181fea7c09ba79cf64e7e3f4413bf9",
        "0bcfe75807944106a3aa655a54bb610d62f3a7f5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 06 09:39:22 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 06 09:39:22 2010 -0700"
      },
      "message": "Merge branch \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (27 commits)\n  sched: Use correct macro to display sched_child_runs_first in /proc/sched_debug\n  sched: No need for bootmem special cases\n  sched: Revert nohz_ratelimit() for now\n  sched: Reduce update_group_power() calls\n  sched: Update rq-\u003eclock for nohz balanced cpus\n  sched: Fix spelling of sibling\n  sched, cpuset: Drop __cpuexit from cpu hotplug callbacks\n  sched: Fix the racy usage of thread_group_cputimer() in fastpath_timer_check()\n  sched: run_posix_cpu_timers: Don\u0027t check -\u003eexit_state, use lock_task_sighand()\n  sched: thread_group_cputime: Simplify, document the \"alive\" check\n  sched: Remove the obsolete exit_state/signal hacks\n  sched: task_tick_rt: Remove the obsolete -\u003esignal !\u003d NULL check\n  sched: __sched_setscheduler: Read the RLIMIT_RTPRIO value lockless\n  sched: Fix comments to make them DocBook happy\n  sched: Fix fix_small_capacity\n  powerpc: Exclude arch_sd_sibiling_asym_packing() on UP\n  powerpc: Enable asymmetric SMT scheduling on POWER7\n  sched: Add asymmetric group packing option for sibling domain\n  sched: Fix capacity calculations for SMT4\n  sched: Change nohz idle load balancing logic to push model\n  ...\n"
    },
    {
      "commit": "0b2e918aa99fe6c3b8f163aa323a275ad8577828",
      "tree": "9e979e6ec865e31bbcc3cddf4f18751c48aa1934",
      "parents": [
        "8d1f431cbec115a780cd551ab1b4955c125f8d31"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jun 21 23:53:31 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 22 08:07:39 2010 +0200"
      },
      "message": "sched, cpuset: Drop __cpuexit from cpu hotplug callbacks\n\nCommit 3a101d05 (sched: adjust when cpu_active and cpuset\nconfigurations are updated during cpu on/offlining) added\nhotplug notifiers marked with __cpuexit; however, ia64 drops\ntext in __cpuexit during link unlike x86.\n\nThis means that functions which are referenced during init but used\nonly for cpu hot unplugging afterwards shouldn\u0027t be marked with\n__cpuexit. Drop __cpuexit from those functions.\n\nReported-by: Tony Luck \u003ctony.luck@intel.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c4C1FDF5B.1040301@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f1bbbb6912662b9f6070c5bfc4ca9eb1f06a9d5b",
      "tree": "c2c130a74be25b0b2dff992e1a195e2728bdaadd",
      "parents": [
        "fd0961ff67727482bb20ca7e8ea97b83e9de2ddb",
        "7e27d6e778cd87b6f2415515d7127eba53fe5d02"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Jun 16 18:08:13 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Jun 16 18:08:13 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n"
    },
    {
      "commit": "732bee7af3102cad811fb047dee8d15966efe569",
      "tree": "1a260fdc7a7155e8b22944dc114af4c2cd56a100",
      "parents": [
        "22c1d8b4f8f04882046ebe592f9a9eaea443cb45"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Fri Jun 11 12:16:59 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Jun 16 18:03:14 2010 +0200"
      },
      "message": "fix typos concerning \"hierarchy\"\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "3a101d0548e925ab16ca6aaa8cf4f767d322ddb0",
      "tree": "b90d8c5f2efe30fcfa49a00fdea037567c6cd46f",
      "parents": [
        "50a323b73069b169385a8ac65633dee837a7d13f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 08 21:40:36 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 08 21:40:36 2010 +0200"
      },
      "message": "sched: adjust when cpu_active and cpuset configurations are updated during cpu on/offlining\n\nCurrently, when a cpu goes down, cpu_active is cleared before\nCPU_DOWN_PREPARE starts and cpuset configuration is updated from a\ndefault priority cpu notifier.  When a cpu is coming up, it\u0027s set\nbefore CPU_ONLINE but cpuset configuration again is updated from the\nsame cpu notifier.\n\nFor cpu notifiers, this presents an inconsistent state.  Threads which\na CPU_DOWN_PREPARE notifier expects to be bound to the CPU can be\nmigrated to other cpus because the cpu is no more inactive.\n\nFix it by updating cpu_active in the highest priority cpu notifier and\ncpuset configuration in the second highest when a cpu is coming up.\nDown path is updated similarly.  This guarantees that all other cpu\nnotifiers see consistent cpu_active and cpuset configuration.\n\ncpuset_track_online_cpus() notifier is converted to\ncpuset_update_active_cpus() which just updates the configuration and\nnow called from cpuset_cpu_[in]active() notifiers registered from\nsched_init_smp().  If cpuset is disabled, cpuset_update_active_cpus()\ndegenerates into partition_sched_domains() making separate notifier\nfor !CONFIG_CPUSETS unnecessary.\n\nThis problem is triggered by cmwq.  During CPU_DOWN_PREPARE, hotplug\ncallback creates a kthread and kthread_bind()s it to the target cpu,\nand the thread is expected to run on that cpu.\n\n* Ingo\u0027s test discovered __cpuinit/exit markups were incorrect.\n  Fixed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\n"
    },
    {
      "commit": "6adef3ebe570bcde67fd6c16101451ddde5712b5",
      "tree": "0f60e2a4d01850ae33aee6cefc7a59845ede89a0",
      "parents": [
        "2c488db27b614816024e7994117f599337de0f34"
      ],
      "author": {
        "name": "Jack Steiner",
        "email": "steiner@sgi.com",
        "time": "Wed May 26 14:42:49 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:44 2010 -0700"
      },
      "message": "cpusets: new round-robin rotor for SLAB allocations\n\nWe have observed several workloads running on multi-node systems where\nmemory is assigned unevenly across the nodes in the system.  There are\nnumerous reasons for this but one is the round-robin rotor in\ncpuset_mem_spread_node().\n\nFor example, a simple test that writes a multi-page file will allocate\npages on nodes 0 2 4 6 ...  Odd nodes are skipped.  (Sometimes it\nallocates on odd nodes \u0026 skips even nodes).\n\nAn example is shown below.  The program \"lfile\" writes a file consisting\nof 10 pages.  The program then mmaps the file \u0026 uses get_mempolicy(...,\nMPOL_F_NODE) to determine the nodes where the file pages were allocated.\nThe output is shown below:\n\n\t# ./lfile\n\t allocated on nodes: 2 4 6 0 1 2 6 0 2\n\nThere is a single rotor that is used for allocating both file pages \u0026 slab\npages.  Writing the file allocates both a data page \u0026 a slab page\n(buffer_head).  This advances the RR rotor 2 nodes for each page\nallocated.\n\nA quick confirmation seems to confirm this is the cause of the uneven\nallocation:\n\n\t# echo 0 \u003e/dev/cpuset/memory_spread_slab\n\t# ./lfile\n\t allocated on nodes: 6 7 8 9 0 1 2 3 4 5\n\nThis patch introduces a second rotor that is used for slab allocations.\n\nSigned-off-by: Jack Steiner \u003csteiner@sgi.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c0ff7453bb5c7c98e0885fb94279f2571946f280",
      "tree": "8bb2b169a5145f0496575dbd2f48bb4b1c83f819",
      "parents": [
        "708c1bbc9d0c3e57f40501794d9b0eed29d10fce"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Mon May 24 14:32:08 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:06:57 2010 -0700"
      },
      "message": "cpuset,mm: fix no node to alloc memory when changing cpuset\u0027s mems\n\nBefore applying this patch, cpuset updates task-\u003emems_allowed and\nmempolicy by setting all new bits in the nodemask first, and clearing all\nold unallowed bits later.  But in the way, the allocator may find that\nthere is no node to alloc memory.\n\nThe reason is that cpuset rebinds the task\u0027s mempolicy, it cleans the\nnodes which the allocater can alloc pages on, for example:\n\n(mpol: mempolicy)\n\ttask1\t\t\ttask1\u0027s mpol\ttask2\n\talloc page\t\t1\n\t  alloc on node0? NO\t1\n\t\t\t\t1\t\tchange mems from 1 to 0\n\t\t\t\t1\t\trebind task1\u0027s mpol\n\t\t\t\t0-1\t\t  set new bits\n\t\t\t\t0\t  \t  clear disallowed bits\n\t  alloc on node1? NO\t0\n\t  ...\n\tcan\u0027t alloc page\n\t  goto oom\n\nThis patch fixes this problem by expanding the nodes range first(set newly\nallowed bits) and shrink it lazily(clear newly disallowed bits).  So we\nuse a variable to tell the write-side task that read-side task is reading\nnodemask, and the write-side task clears newly disallowed nodes after\nread-side task ends the current memory allocation.\n\n[akpm@linux-foundation.org: fix spello]\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "708c1bbc9d0c3e57f40501794d9b0eed29d10fce",
      "tree": "4b19caf68c420b32abdf05af3d413b1320f04fbe",
      "parents": [
        "971ada0f6659488c3f36aed4c6f7670ff5ce4368"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Mon May 24 14:32:07 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:06:57 2010 -0700"
      },
      "message": "mempolicy: restructure rebinding-mempolicy functions\n\nNick Piggin reported that the allocator may see an empty nodemask when\nchanging cpuset\u0027s mems[1].  It happens only on the kernel that do not do\natomic nodemask_t stores.  (MAX_NUMNODES \u003e BITS_PER_LONG)\n\nBut I found that there is also a problem on the kernel that can do atomic\nnodemask_t stores.  The problem is that the allocator can\u0027t find a node to\nalloc page when changing cpuset\u0027s mems though there is a lot of free\nmemory.  The reason is like this:\n\n(mpol: mempolicy)\n\ttask1\t\t\ttask1\u0027s mpol\ttask2\n\talloc page\t\t1\n\t  alloc on node0? NO\t1\n\t\t\t\t1\t\tchange mems from 1 to 0\n\t\t\t\t1\t\trebind task1\u0027s mpol\n\t\t\t\t0-1\t\t  set new bits\n\t\t\t\t0\t  \t  clear disallowed bits\n\t  alloc on node1? NO\t0\n\t  ...\n\tcan\u0027t alloc page\n\t  goto oom\n\nI can use the attached program reproduce it by the following step:\n\n# mkdir /dev/cpuset\n# mount -t cpuset cpuset /dev/cpuset\n# mkdir /dev/cpuset/1\n# echo `cat /dev/cpuset/cpus` \u003e /dev/cpuset/1/cpus\n# echo `cat /dev/cpuset/mems` \u003e /dev/cpuset/1/mems\n# echo $$ \u003e /dev/cpuset/1/tasks\n# numactl --membind\u003d`cat /dev/cpuset/mems` ./cpuset_mem_hog \u003cnr_tasks\u003e \u0026\n   \u003cnr_tasks\u003e \u003d max(nr_cpus - 1, 1)\n# killall -s SIGUSR1 cpuset_mem_hog\n# ./change_mems.sh\n\nseveral hours later, oom will happen though there is a lot of free memory.\n\nThis patchset fixes this problem by expanding the nodes range first(set\nnewly allowed bits) and shrink it lazily(clear newly disallowed bits).  So\nwe use a variable to tell the write-side task that read-side task is\nreading nodemask, and the write-side task clears newly disallowed nodes\nafter read-side task ends the current memory allocation.\n\nThis patch:\n\nIn order to fix no node to alloc memory, when we want to update mempolicy\nand mems_allowed, we expand the set of nodes first (set all the newly\nnodes) and shrink the set of nodes lazily(clean disallowed nodes), But the\nmempolicy\u0027s rebind functions may breaks the expanding.\n\nSo we restructure the mempolicy\u0027s rebind functions and split the rebind\nwork to two steps, just like the update of cpuset\u0027s mems: The 1st step:\nexpand the set of the mempolicy\u0027s nodes.  The 2nd step: shrink the set of\nthe mempolicy\u0027s nodes.  It is used when there is no real lock to protect\nthe mempolicy in the read-side.  Otherwise we can do rebind work at once.\n\nIn order to implement it, we define\n\n\tenum mpol_rebind_step {\n\t\tMPOL_REBIND_ONCE,\n\t\tMPOL_REBIND_STEP1,\n\t\tMPOL_REBIND_STEP2,\n\t\tMPOL_REBIND_NSTEP,\n\t};\n\nIf the mempolicy needn\u0027t be updated by two steps, we can pass\nMPOL_REBIND_ONCE to the rebind functions.  Or we can pass\nMPOL_REBIND_STEP1 to do the first step of the rebind work and pass\nMPOL_REBIND_STEP2 to do the second step work.\n\nBesides that, it maybe long time between these two step and we have to\nrelease the lock that protects mempolicy and mems_allowed.  If we hold the\nlock once again, we must check whether the current mempolicy is under the\nrebinding (the first step has been done) or not, because the task may\nalloc a new mempolicy when we don\u0027t hold the lock.  So we defined the\nfollowing flag to identify it:\n\n#define MPOL_F_REBINDING (1 \u003c\u003c 2)\n\nThe new functions will be used in the next patch.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9084bb8246ea935b98320554229e2f371f7f52fa",
      "tree": "8478d18125e3b4a7e0a31d702647dee1830d23ef",
      "parents": [
        "6a1bdc1b577ebcb65f6603c57f8347309bc4ab13"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Mar 15 10:10:27 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 02 20:12:03 2010 +0200"
      },
      "message": "sched: Make select_fallback_rq() cpuset friendly\n\nIntroduce cpuset_cpus_allowed_fallback() helper to fix the cpuset problems\nwith select_fallback_rq(). It can be called from any context and can\u0027t use\nany cpuset locks including task_lock(). It is called when the task doesn\u0027t\nhave online cpus in -\u003ecpus_allowed but ttwu/etc must be able to find a\nsuitable cpu.\n\nI am not proud of this patch. Everything which needs such a fat comment\ncan\u0027t be good even if correct. But I\u0027d prefer to not change the locking\nrules in the code I hardly understand, and in any case I believe this\nsimple change make the code much more correct compared to deadlocks we\ncurrently have.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c20100315091027.GA9155@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "897f0b3c3ff40b443c84e271bef19bd6ae885195",
      "tree": "6b969149bb59591a1c9485de405639db6c4208d6",
      "parents": [
        "25c2d55c00c6097e6792ebf21e31342f23b9b768"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Mar 15 10:10:03 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 02 20:12:01 2010 +0200"
      },
      "message": "sched: Kill the broken and deadlockable cpuset_lock/cpuset_cpus_allowed_locked code\n\nThis patch just states the fact the cpusets/cpuhotplug interaction is\nbroken and removes the deadlockable code which only pretends to work.\n\n- cpuset_lock() doesn\u0027t really work. It is needed for\n  cpuset_cpus_allowed_locked() but we can\u0027t take this lock in\n  try_to_wake_up()-\u003eselect_fallback_rq() path.\n\n- cpuset_lock() is deadlockable. Suppose that a task T bound to CPU takes\n  callback_mutex. If cpu_down(CPU) happens before T drops callback_mutex\n  stop_machine() preempts T, then migration_call(CPU_DEAD) tries to take\n  cpuset_lock() and hangs forever because CPU is already dead and thus\n  T can\u0027t be scheduled.\n\n- cpuset_cpus_allowed_locked() is deadlockable too. It takes task_lock()\n  which is not irq-safe, but try_to_wake_up() can be called from irq.\n\nKill them, and change select_fallback_rq() to use cpu_possible_mask, like\nwe currently do without CONFIG_CPUSETS.\n\nAlso, with or without this patch, with or without CONFIG_CPUSETS, the\ncallers of select_fallback_rq() can race with each other or with\nset_cpus_allowed() pathes.\n\nThe subsequent patches try to to fix these problems.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c20100315091003.GA9123@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "53feb29767c29c877f9d47dcfe14211b5b0f7ebd",
      "tree": "0416744ece6b7fd667bef355434ed9157fe67b2a",
      "parents": [
        "5ab116c9349ef52d6fbd2e2917a53f13194b048e"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Tue Mar 23 13:35:35 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 24 16:31:21 2010 -0700"
      },
      "message": "cpuset: alloc nodemask_t on the heap rather than the stack\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5ab116c9349ef52d6fbd2e2917a53f13194b048e",
      "tree": "636a6cf02d5ca47c6da5d4935b07ddf08666a09c",
      "parents": [
        "5574169613b40b85d6f4c67208fa4846b897a0a1"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Tue Mar 23 13:35:34 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 24 16:31:21 2010 -0700"
      },
      "message": "cpuset: fix the problem that cpuset_mem_spread_node() returns an offline node\n\ncpuset_mem_spread_node() returns an offline node, and causes an oops.\n\nThis patch fixes it by initializing task-\u003emems_allowed to\nnode_states[N_HIGH_MEMORY], and updating task-\u003emems_allowed when doing\nmemory hotplug.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nReported-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nTested-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ad4c18884e864cf4c77f9074d3d1816063f99cd",
      "tree": "f09643f6148b576fa2d23bf7d4b37d082d94e267",
      "parents": [
        "e1b8090bdf125f8b2e192149547fead7f302a89c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Nov 25 13:31:39 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Dec 06 21:10:56 2009 +0100"
      },
      "message": "sched: Fix balance vs hotplug race\n\nSince (e761b77: cpu hotplug, sched: Introduce cpu_active_map and redo\nsched domain managment) we have cpu_active_mask which is suppose to rule\nscheduler migration and load-balancing, except it never (fully) did.\n\nThe particular problem being solved here is a crash in try_to_wake_up()\nwhere select_task_rq() ends up selecting an offline cpu because\nselect_task_rq_fair() trusts the sched_domain tree to reflect the\ncurrent state of affairs, similarly select_task_rq_rt() trusts the\nroot_domain.\n\nHowever, the sched_domains are updated from CPU_DEAD, which is after the\ncpu is taken offline and after stop_machine is done. Therefore it can\nrace perfectly well with code assuming the domains are right.\n\nCure this by building the domains from cpu_active_mask on\nCPU_DOWN_PREPARE.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e1b8090bdf125f8b2e192149547fead7f302a89c",
      "tree": "76cfb31f2b1c17953c02afa5cbbc683a6d01869d",
      "parents": [
        "6ec22f9b037fc0c2e00ddb7023fad279c365324d"
      ],
      "author": {
        "name": "Geert Uytterhoeven",
        "email": "geert@linux-m68k.org",
        "time": "Sun Dec 06 20:41:16 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Dec 06 21:08:41 2009 +0100"
      },
      "message": "cpumask: Fix generate_sched_domains() for UP\n\nCommit acc3f5d7cabbfd6cec71f0c1f9900621fa2d6ae7 (\"cpumask:\nPartition_sched_domains takes array of cpumask_var_t\") changed\nthe function signature of generate_sched_domains() for the\nCONFIG_SMP\u003dy case, but forgot to update the corresponding\nfunction for the CONFIG_SMP\u003dn case, causing:\n\n  kernel/cpuset.c:2073: warning: passing argument 1 of \u0027generate_sched_domains\u0027 from incompatible pointer type\n\nSigned-off-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nLKML-Reference: \u003calpine.DEB.2.00.0912062038070.5693@ayla.of.borg\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "acc3f5d7cabbfd6cec71f0c1f9900621fa2d6ae7",
      "tree": "672ed45f6df2f52e8f3cced2ee11ad29a1533890",
      "parents": [
        "e2c880630438f80b474378d5487b511b07665051"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Nov 03 14:53:40 2009 +1030"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 04 13:16:40 2009 +0100"
      },
      "message": "cpumask: Partition_sched_domains takes array of cpumask_var_t\n\nCurrently partition_sched_domains() takes a \u0027struct cpumask\n*doms_new\u0027 which is a kmalloc\u0027ed array of cpumask_t.  You can\u0027t\nhave such an array if \u0027struct cpumask\u0027 is undefined, as we plan\nfor CONFIG_CPUMASK_OFFSTACK\u003dy.\n\nSo, we make this an array of cpumask_var_t instead: this is the\nsame for the CONFIG_CPUMASK_OFFSTACK\u003dn case, but requires\nmultiple allocations for the CONFIG_CPUMASK_OFFSTACK\u003dy case.\nHence we add alloc_sched_domains() and free_sched_domains()\nfunctions.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c200911031453.40668.rusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0b9e31e9264f1bad89856afb96da1688292f13b4",
      "tree": "7a9e9b6456dce993efeed8734de0a15a1f16ae94",
      "parents": [
        "cf82ff7ea7695b0e82ba07bc5e9f1bd03a74e1aa",
        "964fe080d94db82a3268443e9b9ece4c60246414"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Oct 25 17:30:53 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Oct 25 17:30:53 2009 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into sched/core\n\nConflicts:\n\tfs/proc/array.c\n\nMerge reason: resolve conflict and queue up dependent patch.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "be367d09927023d081f9199665c8500f69f14d22",
      "tree": "f0c5b9da037506da3c5890cf11b51b39a7d3c427",
      "parents": [
        "c378369d8b4fa516ff2b1e79c3eded4e0e955ebb"
      ],
      "author": {
        "name": "Ben Blum",
        "email": "bblum@google.com",
        "time": "Wed Sep 23 15:56:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:58 2009 -0700"
      },
      "message": "cgroups: let ss-\u003ecan_attach and ss-\u003eattach do whole threadgroups at a time\n\nAlter the ss-\u003ecan_attach and ss-\u003eattach functions to be able to deal with\na whole threadgroup at a time, for use in cgroup_attach_proc.  (This is a\npre-patch to cgroup-procs-writable.patch.)\n\nCurrently, new mode of the attach function can only tell the subsystem\nabout the old cgroup of the threadgroup leader.  No subsystem currently\nneeds that information for each thread that\u0027s being moved, but if one were\nto be added (for example, one that counts tasks within a group) this bit\nwould need to be reworked a bit to tell the subsystem the right\ninformation.\n\n[hidave.darkstar@gmail.com: fix build]\nSigned-off-by: Ben Blum \u003cbblum@google.com\u003e\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nReviewed-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Dave Young \u003chidave.darkstar@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d01d4827858cdc2e1c437c87ab65ec0a00fd40f8",
      "tree": "433ed8bfdf144887129e9b0ea625c99780bedfd6",
      "parents": [
        "0d721ceadbeaa24d7f9dd41b3e5e29912327a7e1"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Mon Sep 21 11:06:27 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Sep 21 11:37:27 2009 +0200"
      },
      "message": "sched: Always show Cpus_allowed field in /proc/\u003cpid\u003e/status\n\nThe Cpus_allowed fields in /proc/\u003cpid\u003e/status is currently only\nshown in case of CONFIG_CPUSETS. However their contents are also\nuseful for the !CONFIG_CPUSETS case.\n\nSo change the current behaviour and always show these fields.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c20090921090627.GD4649@osiris.boeblingen.de.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "58568d2a8215cb6f55caf2332017d7bdff954e1c",
      "tree": "ffcdee457494ac78d6550b0aeac86536ca152e7b",
      "parents": [
        "950592f7b991f267d707d372b90f508bbe72acbc"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Tue Jun 16 15:31:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:31 2009 -0700"
      },
      "message": "cpuset,mm: update tasks\u0027 mems_allowed in time\n\nFix allocating page cache/slab object on the unallowed node when memory\nspread is set by updating tasks\u0027 mems_allowed after its cpuset\u0027s mems is\nchanged.\n\nIn order to update tasks\u0027 mems_allowed in time, we must modify the code of\nmemory policy.  Because the memory policy is applied in the process\u0027s\ncontext originally.  After applying this patch, one task directly\nmanipulates anothers mems_allowed, and we use alloc_lock in the\ntask_struct to protect mems_allowed and memory policy of the task.\n\nBut in the fast path, we didn\u0027t use lock to protect them, because adding a\nlock may lead to performance regression.  But if we don\u0027t add a lock,the\ntask might see no nodes when changing cpuset\u0027s mems_allowed to some\nnon-overlapping set.  In order to avoid it, we set all new allowed nodes,\nthen clear newly disallowed ones.\n\n[lee.schermerhorn@hp.com:\n  The rework of mpol_new() to extract the adjusting of the node mask to\n  apply cpuset and mpol flags \"context\" breaks set_mempolicy() and mbind()\n  with MPOL_PREFERRED and a NULL nodemask--i.e., explicit local\n  allocation.  Fix this by adding the check for MPOL_PREFERRED and empty\n  node mask to mpol_new_mpolicy().\n\n  Remove the now unneeded \u0027nodes \u003d NULL\u0027 from mpol_new().\n\n  Note that mpol_new_mempolicy() is always called with a non-NULL\n  \u0027nodes\u0027 parameter now that it has been removed from mpol_new().\n  Therefore, we don\u0027t need to test nodes for NULL before testing it for\n  \u0027empty\u0027.  However, just to be extra paranoid, add a VM_BUG_ON() to\n  verify this assumption.]\n[lee.schermerhorn@hp.com:\n\n  I don\u0027t think the function name \u0027mpol_new_mempolicy\u0027 is descriptive\n  enough to differentiate it from mpol_new().\n\n  This function applies cpuset set context, usually constraining nodes\n  to those allowed by the cpuset.  However, when the \u0027RELATIVE_NODES flag\n  is set, it also translates the nodes.  So I settled on\n  \u0027mpol_set_nodemask()\u0027, because the comment block for mpol_new() mentions\n  that we need to call this function to \"set nodes\".\n\n  Some additional minor line length, whitespace and typo cleanup.]\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "950592f7b991f267d707d372b90f508bbe72acbc",
      "tree": "b57ef015ff5cd54d8ab21005b466c80e9ccfa9e3",
      "parents": [
        "f3b39d47ebc51416fc3b690a32dfe030a2035e67"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Tue Jun 16 15:31:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:31 2009 -0700"
      },
      "message": "cpusets: update tasks\u0027 page/slab spread flags in time\n\nFix the bug that the kernel didn\u0027t spread page cache/slab object evenly\nover all the allowed nodes when spread flags were set by updating tasks\u0027\npage/slab spread flags in time.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\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"
    },
    {
      "commit": "f3b39d47ebc51416fc3b690a32dfe030a2035e67",
      "tree": "98873bacc74c60407ba3e93337d12351f35711e3",
      "parents": [
        "dcf975d58565880a134afb13bde511d1b873ce79"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Tue Jun 16 15:31:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:31 2009 -0700"
      },
      "message": "cpusets: restructure the function cpuset_update_task_memory_state()\n\nThe kernel still allocates the page caches on old node after modifying its\ncpuset\u0027s mems when \u0027memory_spread_page\u0027 was set, or it didn\u0027t spread the\npage cache evenly over all the nodes that faulting task is allowed to usr\nafter memory_spread_page was set.  it is caused by the old mem_allowed and\nflags of the task, the current kernel doesn\u0027t updates them unless some\nfunction invokes cpuset_update_task_memory_state(), it is too late\nsometimes.We must update the mem_allowed and the flags of the tasks in\ntime.\n\nSlab has the same problem.\n\nThe following patches fix this bug by updating tasks\u0027 mem_allowed and\nspread flag after its cpuset\u0027s mems or spread flag is changed.\n\nThis patch:\n\nExtract a function from cpuset_update_task_memory_state().  It will be\nused later for update tasks\u0027 page/slab spread flags after its cpuset\u0027s\nflag is set\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\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"
    },
    {
      "commit": "38c7fed2f5ffee17e1fa3e0f78b0e1bf43d52d13",
      "tree": "52544d8dcfadbd5347872eae23939fe387d7c78b",
      "parents": [
        "a5f4f52e82114e85aa1a066bd1a450acc19a464d"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Mon May 25 15:10:58 2009 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Thu Jun 11 19:27:07 2009 +0300"
      },
      "message": "x86: remove some alloc_bootmem_cpumask_var calling\n\nNow that we set up the slab allocator earlier, we can get rid of some\nalloc_bootmem_cpumask_var() calls in boot code.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "6d7b2f5f9e88902b19f91d0c8a7ef58a5455f1a2",
      "tree": "4ad594fcef55ad95424e58c39e10a723d1dcbe4f",
      "parents": [
        "db7f47cf4805e30decb0841764b21b7c4000f7dc"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Apr 02 16:57:57 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:57 2009 -0700"
      },
      "message": "cpusets: prevent PF_THREAD_BOUND tasks from attaching to non-root cpusets\n\nKthreads that have the PF_THREAD_BOUND bit set in their flags are bound to a\nspecific cpu.  Thus, their set of allowed cpus shall not change.\n\nThis patch prevents such threads from attaching to non-root cpusets.  They do\nnot have mempolicies that restrict them to a subset of system nodes and, since\ntheir cpumask may never change, they cannot use any of the features of\ncpusets.\n\nThe tasks will forever be a member of the root cpuset and will be returned\nwhen listing the tasks attached to that cpuset.\n\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "db7f47cf4805e30decb0841764b21b7c4000f7dc",
      "tree": "10a7ee574ae29fbd3c78a22bd6700e14efe80e65",
      "parents": [
        "a1bc5a4eee990a1f290735c8694d0aebdad095fa"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Thu Apr 02 16:57:55 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:57 2009 -0700"
      },
      "message": "cpusets: allow cpusets to be configured/built on non-SMP systems\n\nAllow cpusets to be configured/built on non-SMP systems\n\nCurrently it\u0027s impossible to build cpusets under UML on x86-64, since\ncpusets depends on SMP and x86-64 UML doesn\u0027t support SMP.\n\nThere\u0027s code in cpusets that doesn\u0027t depend on SMP.  This patch surrounds\nthe minimum amount of cpusets code with #ifdef CONFIG_SMP in order to\nallow cpusets to build/run on UP systems (for testing purposes under UML).\n\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a1bc5a4eee990a1f290735c8694d0aebdad095fa",
      "tree": "f3e5849823444136df9c7f91f7217e1894235682",
      "parents": [
        "7f81b1ae18416b457e4d5ff23f0bd598e8a42224"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Apr 02 16:57:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:57 2009 -0700"
      },
      "message": "cpusets: replace zone allowed functions with node allowed\n\nThe cpuset_zone_allowed() variants are actually only a function of the\nzone\u0027s node.\n\nCc: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f81b1ae18416b457e4d5ff23f0bd598e8a42224",
      "tree": "8b484cec5b67d4cf00dfacd407b2648cd0d1b645",
      "parents": [
        "010cfac4ca0f9e85f54ba2117a372e72f4fb9a60"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Apr 02 16:57:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:57 2009 -0700"
      },
      "message": "cpuset: remove struct cpuset_hotplug_scanner\n\nUse cgroup_scanner.data, instead of introducing cpuset_hotplug_scanner.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "010cfac4ca0f9e85f54ba2117a372e72f4fb9a60",
      "tree": "47b8ed65b2e3cdfe269794545995020947a667a6",
      "parents": [
        "3b6766fe668b83c8a03c6ed01bcc2ac77cbae848"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Apr 02 16:57:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:57 2009 -0700"
      },
      "message": "cpuset: avoid changing cpuset\u0027s mems when errno returned\n\nWhen writing to cpuset.mems, cpuset has to update its mems_allowed before\ncalling update_tasks_nodemask(), but this function might return -ENOMEM.\n\nTo avoid this rare case, we allocate the memory before changing\nmems_allowed, and then pass to update_tasks_nodemask().  Similar to what\nupdate_cpumask() does.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3b6766fe668b83c8a03c6ed01bcc2ac77cbae848",
      "tree": "8b109576301d849406f080c61f4ce1809556ad0b",
      "parents": [
        "bd1a8ab73edd449fecda633449cc277b856ad4f5"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Apr 02 16:57:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:57 2009 -0700"
      },
      "message": "cpuset: rewrite update_tasks_nodemask()\n\nThis patch uses cgroup_scan_tasks() to rebind tasks\u0027 vmas to new cpuset\u0027s\nmems_allowed.\n\nNot only simplify the code largely, but also avoid allocating an array to\nhold mm pointers of all the tasks in the cpuset.  This array can be big\n(size \u003e PAGESIZE) if we have lots of tasks in that cpuset, thus has a\nchance to fail the allocation when under memory stress.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b4217b3fdddc4a58939720d3ed809537577d48b",
      "tree": "9bda180eb4e9fed454453b4aeaf9447602c74022",
      "parents": [
        "83aae4c737866da3280f51fd15da58eddd788397"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Apr 02 16:57:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:56 2009 -0700"
      },
      "message": "cpuset: fix possible races in cpu/memory hotplug\n\nChange to cpuset-\u003ecpus_allowed and cpuset-\u003emems_allowed should be protected\nby callback_mutex, otherwise the reader may read wrong cpus/mems. This is\ncpuset\u0027s lock rule.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "099fca3225b39f7a3ed853036038054172b55581",
      "tree": "c7a8863f9ca8a5c745297e9ee43b63494b6022d1",
      "parents": [
        "b6719ec1ad54e47e40633b19703f2c1254708842"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Apr 02 16:57:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:54 2009 -0700"
      },
      "message": "cgroups: show correct file mode\n\nWe have some read-only files and write-only files, but currently they are\nall set to 0644, which is counter-intuitive and cause trouble for some\ncgroup tools like libcgroup.\n\nThis patch adds \u0027mode\u0027 to struct cftype to allow cgroup subsys to set it\u0027s\nown files\u0027 file mode, and for the most cases cft-\u003emode can be default to 0\nand cgroup will figure out proper mode.\n\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f90d4118bacef87894621a3e8aba853fa0c89abc",
      "tree": "d09a52848f5d82fc3944818f62166fee23fabc66",
      "parents": [
        "f3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Fri Jan 16 10:24:10 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 19 02:44:00 2009 +0100"
      },
      "message": "cpuset: fix possible deadlock in async_rebuild_sched_domains\n\nLockdep reported some possible circular locking info when we tested cpuset on\nNUMA/fake NUMA box.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n2.6.29-rc1-00224-ga652504 #111\n-------------------------------------------------------\nbash/2968 is trying to acquire lock:\n (events){--..}, at: [\u003cffffffff8024c8cd\u003e] flush_work+0x24/0xd8\n\nbut task is already holding lock:\n (cgroup_mutex){--..}, at: [\u003cffffffff8026ad1e\u003e] cgroup_lock_live_group+0x12/0x29\n\nwhich lock already depends on the new lock.\n......\n-------------------------------------------------------\n\nSteps to reproduce:\n# mkdir /dev/cpuset\n# mount -t cpuset xxx /dev/cpuset\n# mkdir /dev/cpuset/0\n# echo 0 \u003e /dev/cpuset/0/cpus\n# echo 0 \u003e /dev/cpuset/0/mems\n# echo 1 \u003e /dev/cpuset/0/memory_migrate\n# cat /dev/zero \u003e /dev/null \u0026\n# echo $! \u003e /dev/cpuset/0/tasks\n\nThis is because async_rebuild_sched_domains has the following lock sequence:\nrun_workqueue(async_rebuild_sched_domains)\n\t-\u003e do_rebuild_sched_domains -\u003e cgroup_lock\n\nBut, attaching tasks when memory_migrate is set has following:\ncgroup_lock_live_group(cgroup_tasks_write)\n\t-\u003e do_migrate_pages -\u003e flush_work\n\nThis patch fixes it by using a separate workqueue thread.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "45ce80fb6b6f9594d1396d44dd7e7c02d596fef8",
      "tree": "2409270f7073c08329ac01c82df0509a264af48c",
      "parents": [
        "23964d2d02984d44aeb2d84d7ffb3359e728df43"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 15 13:50:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 15 16:39:37 2009 -0800"
      },
      "message": "cgroups: consolidate cgroup documents\n\nMove Documentation/cpusets.txt and Documentation/controllers/* to\nDocumentation/cgroups/\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6af866af34a96fed24a55979a78b6f73bd4e8e87",
      "tree": "e0c4b27ce3b684ebb2f6fa3685051e01a86d7354",
      "parents": [
        "300ed6cbb70718872cb4936d1d22ef295f9ba44d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 07 18:08:45 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:11 2009 -0800"
      },
      "message": "cpuset: remove remaining pointers to cpumask_t\n\nImpact: cleanups, use new cpumask API\n\nFinal trivial cleanups: mainly s/cpumask_t/struct cpumask\n\nNote there is a FIXME in generate_sched_domains(). A future patch will\nchange struct cpumask *doms to struct cpumask *doms[].\n(I suppose Rusty will do this.)\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Mike Travis \u003ctravis@sgi.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "300ed6cbb70718872cb4936d1d22ef295f9ba44d",
      "tree": "56a1dd86be2d6e35b329131ef353a44b929bd53c",
      "parents": [
        "645fcc9d2f6946f97a41c8d00edee38f8a6f0060"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 07 18:08:44 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:11 2009 -0800"
      },
      "message": "cpuset: convert cpuset-\u003ecpus_allowed to cpumask_var_t\n\nImpact: use new cpumask API\n\nThis patch mainly does the following things:\n- change cs-\u003ecpus_allowed from cpumask_t to cpumask_var_t\n- call alloc_bootmem_cpumask_var() for top_cpuset in cpuset_init_early()\n- call alloc_cpumask_var() for other cpusets\n- replace cpus_xxx() to cpumask_xxx()\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Mike Travis \u003ctravis@sgi.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "645fcc9d2f6946f97a41c8d00edee38f8a6f0060",
      "tree": "1d7ad63c9e1bace8f0ccac8814be04af92441ebf",
      "parents": [
        "2341d1b6598c7146d64a5050b53a72a5a819617f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 07 18:08:43 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:11 2009 -0800"
      },
      "message": "cpuset: don\u0027t allocate trial cpuset on stack\n\nImpact: cleanups, reduce stack usage\n\nThis patch prepares for the next patch.  When we convert\ncpuset.cpus_allowed to cpumask_var_t, (trialcs \u003d *cs) no longer works.\n\nAnother result of this patch is reducing stack usage of trialcs.\nsizeof(*cs) can be as large as 148 bytes on x86_64, so it\u0027s really not\ngood to have it on stack.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Mike Travis \u003ctravis@sgi.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2341d1b6598c7146d64a5050b53a72a5a819617f",
      "tree": "1e278566d5fea4d2c02826b9ac0713ccd146fd92",
      "parents": [
        "5771f0a2236df69683e9abea87f35f522c97ff94"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 07 18:08:42 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:11 2009 -0800"
      },
      "message": "cpuset: convert cpuset_attach() to use cpumask_var_t\n\nImpact: reduce stack usage\n\nAllocate a global cpumask_var_t at boot, and use it in cpuset_attach(), so\nwe won\u0027t fail cpuset_attach().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Mike Travis \u003ctravis@sgi.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5771f0a2236df69683e9abea87f35f522c97ff94",
      "tree": "afc960ceac00ab20f2139496e4fa9feeea516467",
      "parents": [
        "5a7625df725a486ad600b0036b6111dbd6321c41"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 07 18:08:41 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:11 2009 -0800"
      },
      "message": "cpuset: remove on stack cpumask_t in cpuset_can_attach()\n\nImpact: reduce stack usage\n\nJust use cs-\u003ecpus_allowed, and no need to allocate a cpumask_var_t.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujistu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Mike Travis \u003ctravis@sgi.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a7625df725a486ad600b0036b6111dbd6321c41",
      "tree": "a1b9c81371a6dffbed4a313ec25df33134925af2",
      "parents": [
        "f5813d94279a18ff5936d675e24b44b44a571197"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 07 18:08:41 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:11 2009 -0800"
      },
      "message": "cpuset: remove on stack cpumask_t in cpuset_sprintf_cpulist()\n\nThis patchset converts cpuset to use new cpumask API, and thus\nremove on stack cpumask_t to reduce stack usage.\n\nBefore:\n # cat kernel/cpuset.c include/linux/cpuset.h | grep -c cpumask_t\n 21\nAfter:\n # cat kernel/cpuset.c include/linux/cpuset.h | grep -c cpumask_t\n 0\n\nThis patch:\n\nImpact: reduce stack usage\n\nIt\u0027s safe to call cpulist_scnprintf inside callback_mutex, and thus we can\njust remove the cpumask_t and no need to allocate a cpumask_var_t.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Mike Travis \u003ctravis@sgi.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f5813d94279a18ff5936d675e24b44b44a571197",
      "tree": "0c565bd5535f0f5623984e65403bda9c41b3a148",
      "parents": [
        "13337714f3b0307dc7f75ef5d83ecf0db2abbd65"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 07 18:08:40 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:11 2009 -0800"
      },
      "message": "cpusets: set task\u0027s cpu_allowed to cpu_possible_map when attaching it into top cpuset\n\nI found a bug on my dual-cpu box.  I created a sub cpuset in top cpuset\nand assign 1 to its cpus.  And then we attach some tasks into this sub\ncpuset.  After this, we offline CPU1.  Now, the tasks in this new cpuset\nare moved into top cpuset automatically because there is no cpu in sub\ncpuset.  Then we online CPU1, we find all the tasks which doesn\u0027t belong\nto top cpuset originally just run on CPU0.\n\nWe fix this bug by setting task\u0027s cpu_allowed to cpu_possible_map when\nattaching it into top cpuset.  This method needn\u0027t modify the current\nbehavior of cpusets on CPU hotplug, and all of tasks in top cpuset use\ncpu_possible_map to initialize their cpu_allowed.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "13337714f3b0307dc7f75ef5d83ecf0db2abbd65",
      "tree": "f76dd8961b9287b25e2ea24d2d34fecc52d2c8a0",
      "parents": [
        "e7c5ec9193d32b9559a3bb8893ceedbda85201ff"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Wed Jan 07 18:08:39 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:11 2009 -0800"
      },
      "message": "cpuset: rcu_read_lock() to protect task_cs()\n\ntask_cs() calls task_subsys_state().\n\nWe must use rcu_read_lock() to protect cgroup_subsys_state().\n\nIt\u0027s correct that top_cpuset is never freed, but cgroup_subsys_state()\naccesses css_set, this css_set maybe freed when task_cs() called.\n\nWe use use rcu_read_lock() to protect it.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "75aa199410359dc5fbcf9025ff7af98a9d20f0d5",
      "tree": "569bffa181ccba56d884ec7e826ae61384297f56",
      "parents": [
        "c7d4caeb1d68d07f77cc09fc20b7759d6d7aa3b1"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jan 06 14:39:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:59 2009 -0800"
      },
      "message": "oom: print triggering task\u0027s cpuset and mems allowed\n\nWhen cpusets are enabled, it\u0027s necessary to print the triggering task\u0027s\nset of allowable nodes so the subsequently printed meminfo can be\ninterpreted correctly.\n\nWe also print the task\u0027s cpuset name for informational purposes.\n\n[rientjes@google.com: task lock current before dereferencing cpuset]\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29c0177e6a4ac094302bed54a1d4bbb6b740a9ef",
      "tree": "d8ee57c5b40baa3f53d607b719344dd20f8c85a0",
      "parents": [
        "98a79d6a50181ca1ecf7400eda01d5dc1bc0dbf0"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Dec 13 21:20:25 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Dec 13 21:20:25 2008 +1030"
      },
      "message": "cpumask: change cpumask_scnprintf, cpumask_parse_user, cpulist_parse, and cpulist_scnprintf to take pointers.\n\nImpact: change calling convention of existing cpumask APIs\n\nMost cpumask functions started with cpus_: these have been replaced by\ncpumask_ ones which take struct cpumask pointers as expected.\n\nThese four functions don\u0027t have good replacement names; fortunately\nthey\u0027re rarely used, so we just change them over.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: paulus@samba.org\nCc: mingo@redhat.com\nCc: tony.luck@intel.com\nCc: ralf@linux-mips.org\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: cl@linux-foundation.org\nCc: srostedt@redhat.com\n"
    },
    {
      "commit": "1583715ddb61f822041807a0f18b3b4845e88c76",
      "tree": "cdc54eb7c0105197560641745059db7c20166eec",
      "parents": [
        "4cd4262034849da01eb88659af677b69f8169f06"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 25 10:27:49 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Nov 29 20:39:29 2008 +0100"
      },
      "message": "sched, cpusets: fix warning in kernel/cpuset.c\n\nthis warning:\n\n  kernel/cpuset.c: In function ‘generate_sched_domains’:\n  kernel/cpuset.c:588: warning: ‘ndoms’ may be used uninitialized in this function\n\ntriggers because GCC does not recognize that ndoms stays uninitialized\nonly if doms is NULL - but that flow is covered at the end of\ngenerate_sched_domains().\n\nHelp out GCC by initializing this variable to 0. (that\u0027s prudent anyway)\n\nAlso, this function needs a splitup and code flow simplification:\nwith 160 lines length it\u0027s clearly too long.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f481891fdc49d3d1b8a9674a1825d183069a805f",
      "tree": "4f027a1321dcd06165394d0a23e49df51c8befc1",
      "parents": [
        "ac97b9f9a2d0b83488e0bbcb8517b229d5c9b142"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Nov 19 15:36:30 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:58 2008 -0800"
      },
      "message": "cpuset: update top cpuset\u0027s mems after adding a node\n\nAfter adding a node into the machine, top cpuset\u0027s mems isn\u0027t updated.\n\nBy reviewing the code, we found that the update function\n\n  cpuset_track_online_nodes()\n\nwas invoked after node_states[N_ONLINE] changes.  It is wrong because\nN_ONLINE just means node has pgdat, and if node has/added memory, we use\nN_HIGH_MEMORY.  So, We should invoke the update function after\nnode_states[N_HIGH_MEMORY] changes, just like its commit says.\n\nThis patch fixes it.  And we use notifier of memory hotplug instead of\ndirect calling of cpuset_track_online_nodes().\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nAcked-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Paul Menage \u003cmenage@google.com\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "700018e0a77b4113172257fcdaa1c58e27a5074f"
}
