)]}'
{
  "log": [
    {
      "commit": "99afb0fd5f05aac467ffa85c36778fec4396209b",
      "tree": "0cac821aec4a1dd0a6a86473df5b03864b788a81",
      "parents": [
        "4729583006772b9530404bc1bb7c3aa4a10ffd4d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Thu Feb 27 18:19:36 2014 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 27 09:39:54 2014 -0500"
      },
      "message": "cpuset: fix a race condition in __cpuset_node_allowed_softwall()\n\nIt\u0027s not safe to access task\u0027s cpuset after releasing task_lock().\nHolding callback_mutex won\u0027t help.\n\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "4729583006772b9530404bc1bb7c3aa4a10ffd4d",
      "tree": "06b53d469d09463d7c06dd9440870e84ced7b46c",
      "parents": [
        "532de3fc72adc2a6525c4d53c07bf81e1732083d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Thu Feb 27 18:19:03 2014 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 27 09:35:59 2014 -0500"
      },
      "message": "cpuset: fix a locking issue in cpuset_migrate_mm()\n\nI can trigger a lockdep warning:\n\n  # mount -t cgroup -o cpuset xxx /cgroup\n  # mkdir /cgroup/cpuset\n  # mkdir /cgroup/tmp\n  # echo 0 \u003e /cgroup/tmp/cpuset.cpus\n  # echo 0 \u003e /cgroup/tmp/cpuset.mems\n  # echo 1 \u003e /cgroup/tmp/cpuset.memory_migrate\n  # echo $$ \u003e /cgroup/tmp/tasks\n  # echo 1 \u003e /cgruop/tmp/cpuset.mems\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.14.0-rc1-0.1-default+ #32 Not tainted\n  -------------------------------\n  include/linux/cgroup.h:682 suspicious rcu_dereference_check() usage!\n  ...\n    [\u003cffffffff81582174\u003e] dump_stack+0x72/0x86\n    [\u003cffffffff810b8f01\u003e] lockdep_rcu_suspicious+0x101/0x140\n    [\u003cffffffff81105ba1\u003e] cpuset_migrate_mm+0xb1/0xe0\n  ...\n\nWe used to hold cgroup_mutex when calling cpuset_migrate_mm(), but now\nwe hold cpuset_mutex, which causes task_css() to complain.\n\nThis is not a false-positive but a real issue.\n\nHolding cpuset_mutex won\u0027t prevent a task from migrating to another\ncpuset, and it won\u0027t prevent the original task-\u003ecgroup from destroying\nduring this change.\n\nFixes: 5d21cc2db040 (cpuset: replace cgroup_mutex locking with cpuset internal locking)\nCc: \u003cstable@vger.kernel.org\u003e # 3.9+\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigend-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "2da8ca822d49c8b8781800ad155aaa00e7bb5f1a",
      "tree": "9ec6b0a7a009d76d0c607640eae64d3e9ed666a9",
      "parents": [
        "7da112792753d71aed44b918395892a1fc53048a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Dec 05 12:28:04 2013 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Dec 05 12:28:04 2013 -0500"
      },
      "message": "cgroup: replace cftype-\u003eread_seq_string() with cftype-\u003eseq_show()\n\nIn preparation of conversion to kernfs, cgroup file handling is\nupdated so that it can be easily mapped to kernfs.  This patch\nreplaces cftype-\u003eread_seq_string() with cftype-\u003eseq_show() which is\nnot limited to single_open() operation and will map directcly to\nkernfs seq_file interface.\n\nThe conversions are mechanical.  As -\u003eseq_show() doesn\u0027t have @css and\n@cft, the functions which make use of them are converted to use\nseq_css() and seq_cft() respectively.  In several occassions, e.f. if\nit has seq_string in its name, the function name is updated to fit the\nnew method better.\n\nThis patch does not introduce any behavior changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Aristeu Rozanski \u003carozansk@redhat.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Daniel Wagner \u003cdaniel.wagner@bmw-carit.de\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\n"
    },
    {
      "commit": "51ffe41178c49738e4d6d17b9bdcf528a262abc8",
      "tree": "62f8db88b98474925f3d34607e58c762c634a07a",
      "parents": [
        "44ffc75ba9a63f972dbebd4fab6888db5fcd3b0e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Dec 05 12:28:02 2013 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Dec 05 12:28:02 2013 -0500"
      },
      "message": "cpuset: convert away from cftype-\u003eread()\n\nIn preparation of conversion to kernfs, cgroup file handling is being\nconsolidated so that it can be easily mapped to the seq_file based\ninterface of kernfs.\n\nAll users of cftype-\u003eread() can be easily served, usually better, by\nseq_file and other methods.  Rename cpuset_common_file_read() to\ncpuset_common_read_seq_string() and convert it to use\nread_seq_string() interface instead.  This not only simplifies the\ncode but also makes it more versatile.  Before, the file couldn\u0027t\noutput if the result is longer than PAGE_SIZE.  After the conversion,\nseq_file automatically grows the buffer until the output can fit.\n\nThis patch doesn\u0027t make any visible behavior changes except for being\nable to handle output larger than PAGE_SIZE.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "0fc0287c9ed1ffd3706f8b4d9b314aa102ef1245",
      "tree": "759b083be5b7fc204f49fd5a3e2b53074a94ac2f",
      "parents": [
        "e5fca243abae1445afbfceebda5f08462ef869d3"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Tue Nov 26 15:03:41 2013 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Nov 27 13:52:47 2013 -0500"
      },
      "message": "cpuset: Fix memory allocator deadlock\n\nJuri hit the below lockdep report:\n\n[    4.303391] \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[    4.303392] [ INFO: SOFTIRQ-safe -\u003e SOFTIRQ-unsafe lock order detected ]\n[    4.303394] 3.12.0-dl-peterz+ #144 Not tainted\n[    4.303395] ------------------------------------------------------\n[    4.303397] kworker/u4:3/689 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:\n[    4.303399]  (\u0026p-\u003emems_allowed_seq){+.+...}, at: [\u003cffffffff8114e63c\u003e] new_slab+0x6c/0x290\n[    4.303417]\n[    4.303417] and this task is already holding:\n[    4.303418]  (\u0026(\u0026q-\u003e__queue_lock)-\u003erlock){..-...}, at: [\u003cffffffff812d2dfb\u003e] blk_execute_rq_nowait+0x5b/0x100\n[    4.303431] which would create a new lock dependency:\n[    4.303432]  (\u0026(\u0026q-\u003e__queue_lock)-\u003erlock){..-...} -\u003e (\u0026p-\u003emems_allowed_seq){+.+...}\n[    4.303436]\n\n[    4.303898] the dependencies between the lock to be acquired and SOFTIRQ-irq-unsafe lock:\n[    4.303918] -\u003e (\u0026p-\u003emems_allowed_seq){+.+...} ops: 2762 {\n[    4.303922]    HARDIRQ-ON-W at:\n[    4.303923]                     [\u003cffffffff8108ab9a\u003e] __lock_acquire+0x65a/0x1ff0\n[    4.303926]                     [\u003cffffffff8108cbe3\u003e] lock_acquire+0x93/0x140\n[    4.303929]                     [\u003cffffffff81063dd6\u003e] kthreadd+0x86/0x180\n[    4.303931]                     [\u003cffffffff816ded6c\u003e] ret_from_fork+0x7c/0xb0\n[    4.303933]    SOFTIRQ-ON-W at:\n[    4.303933]                     [\u003cffffffff8108abcc\u003e] __lock_acquire+0x68c/0x1ff0\n[    4.303935]                     [\u003cffffffff8108cbe3\u003e] lock_acquire+0x93/0x140\n[    4.303940]                     [\u003cffffffff81063dd6\u003e] kthreadd+0x86/0x180\n[    4.303955]                     [\u003cffffffff816ded6c\u003e] ret_from_fork+0x7c/0xb0\n[    4.303959]    INITIAL USE at:\n[    4.303960]                    [\u003cffffffff8108a884\u003e] __lock_acquire+0x344/0x1ff0\n[    4.303963]                    [\u003cffffffff8108cbe3\u003e] lock_acquire+0x93/0x140\n[    4.303966]                    [\u003cffffffff81063dd6\u003e] kthreadd+0x86/0x180\n[    4.303969]                    [\u003cffffffff816ded6c\u003e] ret_from_fork+0x7c/0xb0\n[    4.303972]  }\n\nWhich reports that we take mems_allowed_seq with interrupts enabled. A\nlittle digging found that this can only be from\ncpuset_change_task_nodemask().\n\nThis is an actual deadlock because an interrupt doing an allocation will\nhit get_mems_allowed()-\u003e...-\u003e__read_seqcount_begin(), which will spin\nforever waiting for the write side to complete.\n\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nReported-by: Juri Lelli \u003cjuri.lelli@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nTested-by: Juri Lelli \u003cjuri.lelli@gmail.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "32dad03d164206ea886885d0740284ba215b0970",
      "tree": "5fd89fe27295bfbe47dce5f274aa645099741a71",
      "parents": [
        "357397a14117f0c2eeafcac06a1f8412a02aa6af",
        "d1625964da51bda61306ad3ec45307a799c21f08"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 03 18:25:03 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 03 18:25:03 2013 -0700"
      },
      "message": "Merge branch \u0027for-3.12\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\nPull cgroup updates from Tejun Heo:\n \"A lot of activities on the cgroup front.  Most changes aren\u0027t visible\n  to userland at all at this point and are laying foundation for the\n  planned unified hierarchy.\n\n   - The biggest change is decoupling the lifetime management of css\n     (cgroup_subsys_state) from that of cgroup\u0027s.  Because controllers\n     (cpu, memory, block and so on) will need to be dynamically enabled\n     and disabled, css which is the association point between a cgroup\n     and a controller may come and go dynamically across the lifetime of\n     a cgroup.  Till now, css\u0027s were created when the associated cgroup\n     was created and stayed till the cgroup got destroyed.\n\n     Assumptions around this tight coupling permeated through cgroup\n     core and controllers.  These assumptions are gradually removed,\n     which consists bulk of patches, and css destruction path is\n     completely decoupled from cgroup destruction path.  Note that\n     decoupling of creation path is relatively easy on top of these\n     changes and the patchset is pending for the next window.\n\n   - cgroup has its own event mechanism cgroup.event_control, which is\n     only used by memcg.  It is overly complex trying to achieve high\n     flexibility whose benefits seem dubious at best.  Going forward,\n     new events will simply generate file modified event and the\n     existing mechanism is being made specific to memcg.  This pull\n     request contains prepatory patches for such change.\n\n   - Various fixes and cleanups\"\n\nFixed up conflict in kernel/cgroup.c as per Tejun.\n\n* \u0027for-3.12\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (69 commits)\n  cgroup: fix cgroup_css() invocation in css_from_id()\n  cgroup: make cgroup_write_event_control() use css_from_dir() instead of __d_cgrp()\n  cgroup: make cgroup_event hold onto cgroup_subsys_state instead of cgroup\n  cgroup: implement CFTYPE_NO_PREFIX\n  cgroup: make cgroup_css() take cgroup_subsys * instead and allow NULL subsys\n  cgroup: rename cgroup_css_from_dir() to css_from_dir() and update its syntax\n  cgroup: fix cgroup_write_event_control()\n  cgroup: fix subsystem file accesses on the root cgroup\n  cgroup: change cgroup_from_id() to css_from_id()\n  cgroup: use css_get() in cgroup_create() to check CSS_ROOT\n  cpuset: remove an unncessary forward declaration\n  cgroup: RCU protect each cgroup_subsys_state release\n  cgroup: move subsys file removal to kill_css()\n  cgroup: factor out kill_css()\n  cgroup: decouple cgroup_subsys_state destruction from cgroup destruction\n  cgroup: replace cgroup-\u003ecss_kill_cnt with -\u003enr_css\n  cgroup: bounce cgroup_subsys_state ref kill confirmation to a work item\n  cgroup: move cgroup-\u003esubsys[] assignment to online_css()\n  cgroup: reorganize css init / exit paths\n  cgroup: add __rcu modifier to cgroup-\u003esubsys[]\n  ...\n"
    },
    {
      "commit": "1c09b195d37fa459844036f429a0f378e70c3db6",
      "tree": "f5a489a926304b07a982ea61a7ea8ebeaf253653",
      "parents": [
        "a903f0865a190f8778c73df1a810ea6e25e5d7cf"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Wed Aug 21 10:22:28 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Aug 21 08:40:27 2013 -0400"
      },
      "message": "cpuset: fix a regression in validating config change\n\nIt\u0027s not allowed to clear masks of a cpuset if there\u0027re tasks in it,\nbut it\u0027s broken:\n\n  # mkdir /cgroup/sub\n  # echo 0 \u003e /cgroup/sub/cpuset.cpus\n  # echo 0 \u003e /cgroup/sub/cpuset.mems\n  # echo $$ \u003e /cgroup/sub/tasks\n  # echo \u003e /cgroup/sub/cpuset.cpus\n  (should fail)\n\nThis bug was introduced by commit 88fa523bff295f1d60244a54833480b02f775152\n(\"cpuset: allow to move tasks to empty cpusets\").\n\ntj: Dropped temp bool variables and nestes the conditionals directly.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "ff58ac0d58d51bffe868b239ed8fce7c4a23c5a9",
      "tree": "aade4997bcfc5d58a3330e92be47a36f8a7463d1",
      "parents": [
        "0c21ead136a900c36f1ab74fd7d09a306dc31324"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Tue Aug 13 09:17:33 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 20:23:06 2013 -0400"
      },
      "message": "cpuset: remove an unncessary forward declaration\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "a903f0865a190f8778c73df1a810ea6e25e5d7cf",
      "tree": "aa0c88bb6e99dd163c541ef5d4f47a3fc5aa9932",
      "parents": [
        "da0a12caffad2eeadea429f83818408e7b77379a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Tue Aug 13 10:05:59 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 10:54:40 2013 -0400"
      },
      "message": "cpuset: fix the return value of cpuset_write_u64()\n\nWriting to this file always returns -ENODEV:\n\n  # echo 1 \u003e cpuset.memory_pressure_enabled\n  -bash: echo: write error: No such device\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e # 3.9+\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "bd8815a6d802fc16a7a106e170593aa05dc17e72",
      "tree": "6be9383cac4c468fe77b3a598cdd1664dba4afb4",
      "parents": [
        "95109b627ba6a043c181fa5fa45d1c754dd44fbc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:27 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:27 2013 -0400"
      },
      "message": "cgroup: make css_for_each_descendant() and friends include the origin css in the iteration\n\nPreviously, all css descendant iterators didn\u0027t include the origin\n(root of subtree) css in the iteration.  The reasons were maintaining\nconsistency with css_for_each_child() and that at the time of\nintroduction more use cases needed skipping the origin anyway;\nhowever, given that css_is_descendant() considers self to be a\ndescendant, omitting the origin css has become more confusing and\nlooking at the accumulated use cases rather clearly indicates that\nincluding origin would result in simpler code overall.\n\nWhile this is a change which can easily lead to subtle bugs, cgroup\nAPI including the iterators has recently gone through major\nrestructuring and no out-of-tree changes will be applicable without\nadjustments making this a relatively acceptable opportunity for this\ntype of change.\n\nThe conversions are mostly straight-forward.  If the iteration block\nhad explicit origin handling before or after, it\u0027s moved inside the\niteration.  If not, if (pos \u003d\u003d origin) continue; is added.  Some\nconversions add extra reference get/put around origin handling by\nconsolidating origin handling and the rest.  While the extra ref\noperations aren\u0027t strictly necessary, this shouldn\u0027t cause any\nnoticeable difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Aristeu Rozanski \u003caris@redhat.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\n"
    },
    {
      "commit": "d99c8727e7bbc01b70e2c57e6127bfab26b868fd",
      "tree": "9479ba1329ac1184cf82755ade7dfe94e9d7a4be",
      "parents": [
        "81eeaf0411204f52af8ef78ff107cfca2fcfec1d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:27 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:27 2013 -0400"
      },
      "message": "cgroup: make cgroup_taskset deal with cgroup_subsys_state instead of cgroup\n\ncgroup is in the process of converting to css (cgroup_subsys_state)\nfrom cgroup as the principal subsystem interface handle.  This is\nmostly to prepare for the unified hierarchy support where css\u0027s will\nbe created and destroyed dynamically but also helps cleaning up\nsubsystem implementations as css is usually what they are interested\nin anyway.\n\ncgroup_taskset which is used by the subsystem attach methods is the\nlast cgroup subsystem API which isn\u0027t using css as the handle.  Update\ncgroup_taskset_cur_cgroup() to cgroup_taskset_cur_css() and\ncgroup_taskset_for_each() to take @skip_css instead of @skip_cgrp.\n\nThe conversions are pretty mechanical.  One exception is\ncpuset::cgroup_cs(), which lost its last user and got removed.\n\nThis patch shouldn\u0027t introduce any functional changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Daniel Wagner \u003cdaniel.wagner@bmw-carit.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "72ec7029937f0518eff21b8762743c31591684f5",
      "tree": "43743a5d9e6a36548a23d5ff34ffc4c4fede8aa1",
      "parents": [
        "e535837b1dae17b5a2d76ea1bc22ac1a79354624"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:26 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:26 2013 -0400"
      },
      "message": "cgroup: make task iterators deal with cgroup_subsys_state instead of cgroup\n\ncgroup is in the process of converting to css (cgroup_subsys_state)\nfrom cgroup as the principal subsystem interface handle.  This is\nmostly to prepare for the unified hierarchy support where css\u0027s will\nbe created and destroyed dynamically but also helps cleaning up\nsubsystem implementations as css is usually what they are interested\nin anyway.\n\nThis patch converts task iterators to deal with css instead of cgroup.\nNote that under unified hierarchy, different sets of tasks will be\nconsidered belonging to a given cgroup depending on the subsystem in\nquestion and making the iterators deal with css instead cgroup\nprovides them with enough information about the iteration.\n\nWhile at it, fix several function comment formats in cpuset.c.\n\nThis patch doesn\u0027t introduce any behavior differences.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\n"
    },
    {
      "commit": "e535837b1dae17b5a2d76ea1bc22ac1a79354624",
      "tree": "38a78ca5676a0987f00b737b36fe18e30947cf62",
      "parents": [
        "c59cd3d840b1b0a8f996cbbd9132128dcaabbeb9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:26 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:26 2013 -0400"
      },
      "message": "cgroup: remove struct cgroup_scanner\n\ncgroup_scan_tasks() takes a pointer to struct cgroup_scanner as its\nsole argument and the only function of that struct is packing the\narguments of the function call which are consisted of five fields.\nIt\u0027s not too unusual to pack parameters into a struct when the number\nof arguments gets excessive or the whole set needs to be passed around\na lot, but neither holds here making it just weird.\n\nDrop struct cgroup_scanner and pass the params directly to\ncgroup_scan_tasks().  Note that struct cpuset_change_nodemask_arg was\nadded to cpuset.c to pass both -\u003ecs and -\u003enewmems pointer to\ncpuset_change_nodemask() using single data pointer.\n\nThis doesn\u0027t make any functional differences.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "492eb21b98f88e411a8bb43d6edcd7d7022add10",
      "tree": "da06df9485fd607762fdec06169f7d9f601e3cf6",
      "parents": [
        "f48e3924dca268c677c4e338e5d91ad9e6fe6b9e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:25 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:25 2013 -0400"
      },
      "message": "cgroup: make hierarchy iterators deal with cgroup_subsys_state instead of cgroup\n\ncgroup is currently in the process of transitioning to using css\n(cgroup_subsys_state) as the primary handle instead of cgroup in\nsubsystem API.  For hierarchy iterators, this is beneficial because\n\n* In most cases, css is the only thing subsystems care about anyway.\n\n* On the planned unified hierarchy, iterations for different\n  subsystems will need to skip over different subtrees of the\n  hierarchy depending on which subsystems are enabled on each cgroup.\n  Passing around css makes it unnecessary to explicitly specify the\n  subsystem in question as css is intersection between cgroup and\n  subsystem\n\n* For the planned unified hierarchy, css\u0027s would need to be created\n  and destroyed dynamically independent from cgroup hierarchy.  Having\n  cgroup core manage css iteration makes enforcing deref rules a lot\n  easier.\n\nMost subsystem conversions are straight-forward.  Noteworthy changes\nare\n\n* blkio: cgroup_to_blkcg() is no longer used.  Removed.\n\n* freezer: cgroup_freezer() is no longer used.  Removed.\n\n* devices: cgroup_to_devcgroup() is no longer used.  Removed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Aristeu Rozanski \u003caris@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "182446d087906de40e514573a92a97b203695f71",
      "tree": "6aee96219c82d0a64b9d389c50666c1ce0ec27ee",
      "parents": [
        "67f4c36f83455b253445b2cb28ac9a2c4f85d99a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:24 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:24 2013 -0400"
      },
      "message": "cgroup: pass around cgroup_subsys_state instead of cgroup in file methods\n\ncgroup is currently in the process of transitioning to using struct\ncgroup_subsys_state * as the primary handle instead of struct cgroup.\nPlease see the previous commit which converts the subsystem methods\nfor rationale.\n\nThis patch converts all cftype file operations to take @css instead of\n@cgroup.  cftypes for the cgroup core files don\u0027t have their subsytem\npointer set.  These will automatically use the dummy_css added by the\nprevious patch and can be converted the same way.\n\nMost subsystem conversions are straight forwards but there are some\ninteresting ones.\n\n* freezer: update_if_frozen() is also converted to take @css instead\n  of @cgroup for consistency.  This will make the code look simpler\n  too once iterators are converted to use css.\n\n* memory/vmpressure: mem_cgroup_from_css() needs to be exported to\n  vmpressure while mem_cgroup_from_cont() can be made static.\n  Updated accordingly.\n\n* cpu: cgroup_tg() doesn\u0027t have any user left.  Removed.\n\n* cpuacct: cgroup_ca() doesn\u0027t have any user left.  Removed.\n\n* hugetlb: hugetlb_cgroup_form_cgroup() doesn\u0027t have any user left.\n  Removed.\n\n* net_cls: cgrp_cls_state() doesn\u0027t have any user left.  Removed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Aristeu Rozanski \u003caris@redhat.com\u003e\nAcked-by: Daniel Wagner \u003cdaniel.wagner@bmw-carit.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "eb95419b023abacb415e2a18fea899023ce7624d",
      "tree": "705284469b67cbe440b86c6cb81e1cf27648eba9",
      "parents": [
        "6387698699afd72d6304566fb6ccf84bffe07c56"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "message": "cgroup: pass around cgroup_subsys_state instead of cgroup in subsystem methods\n\ncgroup is currently in the process of transitioning to using struct\ncgroup_subsys_state * as the primary handle instead of struct cgroup *\nin subsystem implementations for the following reasons.\n\n* With unified hierarchy, subsystems will be dynamically bound and\n  unbound from cgroups and thus css\u0027s (cgroup_subsys_state) may be\n  created and destroyed dynamically over the lifetime of a cgroup,\n  which is different from the current state where all css\u0027s are\n  allocated and destroyed together with the associated cgroup.  This\n  in turn means that cgroup_css() should be synchronized and may\n  return NULL, making it more cumbersome to use.\n\n* Differing levels of per-subsystem granularity in the unified\n  hierarchy means that the task and descendant iterators should behave\n  differently depending on the specific subsystem the iteration is\n  being performed for.\n\n* In majority of the cases, subsystems only care about its part in the\n  cgroup hierarchy - ie. the hierarchy of css\u0027s.  Subsystem methods\n  often obtain the matching css pointer from the cgroup and don\u0027t\n  bother with the cgroup pointer itself.  Passing around css fits\n  much better.\n\nThis patch converts all cgroup_subsys methods to take @css instead of\n@cgroup.  The conversions are mostly straight-forward.  A few\nnoteworthy changes are\n\n* -\u003ecss_alloc() now takes css of the parent cgroup rather than the\n  pointer to the new cgroup as the css for the new cgroup doesn\u0027t\n  exist yet.  Knowing the parent css is enough for all the existing\n  subsystems.\n\n* In kernel/cgroup.c::offline_css(), unnecessary open coded css\n  dereference is replaced with local variable access.\n\nThis patch shouldn\u0027t cause any behavior differences.\n\nv2: Unnecessary explicit cgrp-\u003esubsys[] deref in css_online() replaced\n    with local variable @css as suggested by Li Zefan.\n\n    Rebased on top of new for-3.12 which includes for-3.11-fixes so\n    that -\u003ecss_free() invocation added by da0a12caff (\"cgroup: fix a\n    leak when percpu_ref_init() fails\") is converted too.  Suggested\n    by Li Zefan.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Aristeu Rozanski \u003caris@redhat.com\u003e\nAcked-by: Daniel Wagner \u003cdaniel.wagner@bmw-carit.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "6387698699afd72d6304566fb6ccf84bffe07c56",
      "tree": "9440e96fa8e5adce62409a5b0e40984dfedaada3",
      "parents": [
        "a7c6d554aa01236ac2a9f851ab0f75704f76dfa2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "message": "cgroup: add css_parent()\n\nCurrently, controllers have to explicitly follow the cgroup hierarchy\nto find the parent of a given css.  cgroup is moving towards using\ncgroup_subsys_state as the main controller interface construct, so\nlet\u0027s provide a way to climb the hierarchy using just csses.\n\nThis patch implements css_parent() which, given a css, returns its\nparent.  The function is guarnateed to valid non-NULL parent css as\nlong as the target css is not at the top of the hierarchy.\n\nfreezer, cpuset, cpu, cpuacct, hugetlb, memory, net_cls and devices\nare converted to use css_parent() instead of accessing cgroup-\u003eparent\ndirectly.\n\n* __parent_ca() is dropped from cpuacct and its usage is replaced with\n  parent_ca().  The only difference between the two was NULL test on\n  cgroup-\u003eparent which is now embedded in css_parent() making the\n  distinction moot.  Note that eventually a css-\u003eparent field will be\n  added to css and the NULL check in css_parent() will go away.\n\nThis patch shouldn\u0027t cause any behavior differences.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "a7c6d554aa01236ac2a9f851ab0f75704f76dfa2",
      "tree": "fe62d07283a589daa39f843deaefafd11c572b84",
      "parents": [
        "72c97e54e0f043d33b246d7460ae0a36c4b8c643"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "message": "cgroup: add/update accessors which obtain subsys specific data from css\n\ncss (cgroup_subsys_state) is usually embedded in a subsys specific\ndata structure.  Subsystems either use container_of() directly to cast\nfrom css to such data structure or has an accessor function wrapping\nsuch cast.  As cgroup as whole is moving towards using css as the main\ninterface handle, add and update such accessors to ease dealing with\ncss\u0027s.\n\nAll accessors explicitly handle NULL input and return NULL in those\ncases.  While this looks like an extra branch in the code, as all\ncontrollers specific data structures have css as the first field, the\ncasting doesn\u0027t involve any offsetting and the compiler can trivially\noptimize out the branch.\n\n* blkio, freezer, cpuset, cpu, cpuacct and net_cls didn\u0027t have such\n  accessor.  Added.\n\n* memory, hugetlb and devices already had one but didn\u0027t explicitly\n  handle NULL input.  Updated.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "c9710d8018273b0740e0794858f1961fcea5e61a",
      "tree": "889735f6c439e4cb49a7f0d47514522406f3d924",
      "parents": [
        "8af01f56a03e9cbd91a55d688fce1315021efba8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:22 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:22 2013 -0400"
      },
      "message": "cpuset: drop \"const\" qualifiers from struct cpuset instances\n\ncpuset uses \"const\" qualifiers on struct cpuset in some functions;\nhowever, it doesn\u0027t work well when a value derived from returned const\npointer has to be passed to an accessor.  It\u0027s C after all.\n\nDrop the \"const\" qualifiers except for the trivially leaf ones.  This\npatch doesn\u0027t make any functional changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "8af01f56a03e9cbd91a55d688fce1315021efba8",
      "tree": "05c051bd8b188073bb4bf695c3a46c6592e86794",
      "parents": [
        "61584e3f4964995e575618f76ff7197123796e75"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:22 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:22 2013 -0400"
      },
      "message": "cgroup: s/cgroup_subsys_state/cgroup_css/ s/task_subsys_state/task_css/\n\nThe names of the two struct cgroup_subsys_state accessors -\ncgroup_subsys_state() and task_subsys_state() - are somewhat awkward.\nThe former clashes with the type name and the latter doesn\u0027t even\nindicate it\u0027s somehow related to cgroup.\n\nWe\u0027re about to revamp large portion of cgroup API, so, let\u0027s rename\nthem so that they\u0027re less awkward.  Most per-controller usages of the\naccessors are localized in accessor wrappers and given the amount of\nscheduled changes, this isn\u0027t gonna add any noticeable headache.\n\nRename cgroup_subsys_state() to cgroup_css() and task_subsys_state()\nto task_css().  This patch is pure rename.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "6f4b7e632d78c2d91502211c430722cc66428492",
      "tree": "51f64de7cce9b50ee120599dc976a8694c3ed8fa",
      "parents": [
        "e0798ce27346edb8aa369b5b39af5a47fdf2b25c"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Wed Jul 31 16:18:36 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jul 31 06:20:18 2013 -0400"
      },
      "message": "cgroup: more naming cleanups\n\nConstantly use @cset for css_set variables and use @cgrp as cgroup\nvariables.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "0b9e6965add0701e5cbf56d5bab6d9181e948359",
      "tree": "3214484711d56aed0043279cffdd6626b71d3dc4",
      "parents": [
        "9ad9d25a1ec82d6e52d687348e8cdd4942e7d393"
      ],
      "author": {
        "name": "Zhao Hongjiang",
        "email": "zhaohongjiang@huawei.com",
        "time": "Sat Jul 27 11:56:53 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jul 29 14:13:56 2013 -0400"
      },
      "message": "cpuset: relocate a misplaced comment\n\nComment for cpuset_css_offline() was on top of cpuset_css_free().\nMove it.\n\nSigned-off-by: Zhao Hongjiang \u003czhaohongjiang@huawei.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "9ad9d25a1ec82d6e52d687348e8cdd4942e7d393",
      "tree": "b0a0f5ecb632993413f776433468a0a17bec7eb6",
      "parents": [
        "a698b4488ab98deef6c3beeba3e27fea17650132"
      ],
      "author": {
        "name": "Zhao Hongjiang",
        "email": "zhaohongjiang@huawei.com",
        "time": "Sat Jul 27 11:56:49 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jul 29 14:08:08 2013 -0400"
      },
      "message": "cpuset: get rid of the useless forward declaration of cpuset\n\nget rid of the useless forward declaration of the struct cpuset cause the \nbelow define it.\n\nSigned-off-by: Zhao Hongjiang \u003czhaohongjiang@huawei.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "0b0585c3e192967cb2ef0ac0816eb8a8c8d99840",
      "tree": "9f655158a396623736b8cc94c2a27a2fce4ab644",
      "parents": [
        "b028161fbba178ccd35aa69051c04d7673fe9d80",
        "c9e5fe66f5947c9e56dfc7655e5b4b127ca2120f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 02 20:04:25 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 02 20:04:25 2013 -0700"
      },
      "message": "Merge branch \u0027for-3.11-cpuset\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\nPull cpuset changes from Tejun Heo:\n \"cpuset has always been rather odd about its configurations - a cgroup\n  right after creation didn\u0027t allow any task executions before\n  configuration, changing configuration in the parent modifies the\n  descendants irreversibly and so on.  These behaviors are inherently\n  nasty and almost hostile against sharing the hierarchy with other\n  controllers making it very difficult to use in unified hierarchy.\n\n  Li is currently in the process of updating the behaviors for\n  __DEVEL__sane_behavior which is the bulk of changes in this pull\n  request.  It isn\u0027t complete yet and the behaviors will change further\n  but all changes are gated behind sane_behavior.  In the process, the\n  rather hairy work-item punting which was used to work around the\n  limitations of cgroup descendant iterator was simplified.\"\n\n* \u0027for-3.11-cpuset\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:\n  cpuset: rename @cont to @cgrp\n  cpuset: fix to migrate mm correctly in a corner case\n  cpuset: allow to move tasks to empty cpusets\n  cpuset: allow to keep tasks in empty cpusets\n  cpuset: introduce effective_{cpumask|nodemask}_cpuset()\n  cpuset: record old_mems_allowed in struct cpuset\n  cpuset: remove async hotplug propagation work\n  cpuset: let hotplug propagation work wait for task attaching\n  cpuset: re-structure update_cpumask() a bit\n  cpuset: remove cpuset_test_cpumask()\n  cpuset: remove unnecessary variable in cpuset_attach()\n  cpuset: cleanup guarantee_online_{cpus|mems}()\n  cpuset: remove redundant check in cpuset_cpus_allowed_fallback()\n"
    },
    {
      "commit": "0a0fca9d832b704f116a25badd1ca8c16771dcac",
      "tree": "499c5502a79447c84ad1d70d1e976083f2f071dc",
      "parents": [
        "8404c90d050733b3404dc36c500f63ccb0c972ce"
      ],
      "author": {
        "name": "Viresh Kumar",
        "email": "viresh.kumar@linaro.org",
        "time": "Tue Jun 04 13:10:24 2013 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed Jun 19 12:58:42 2013 +0200"
      },
      "message": "sched: Rename sched.c as sched/core.c in comments and Documentation\n\nMost of the stuff from kernel/sched.c was moved to kernel/sched/core.c long time\nback and the comments/Documentation never got updated.\n\nI figured it out when I was going through sched-domains.txt and so thought of\nfixing it globally.\n\nI haven\u0027t crossed check if the stuff that is referenced in sched/core.c by all\nthese files is still present and hasn\u0027t changed as that wasn\u0027t the motive behind\nthis patch.\n\nSigned-off-by: Viresh Kumar \u003cviresh.kumar@linaro.org\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/cdff76a265326ab8d71922a1db5be599f20aad45.1370329560.git.viresh.kumar@linaro.org\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "c9e5fe66f5947c9e56dfc7655e5b4b127ca2120f",
      "tree": "48af9bf5e8a7f8ab346ed3bb203a384e1c2095b6",
      "parents": [
        "f047cecf2cfc9595b1f39c9aab383bb0682f5a53"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Fri Jun 14 11:18:27 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 20:48:19 2013 -0700"
      },
      "message": "cpuset: rename @cont to @cgrp\n\nCont is short for container. control group was named process container\nat first, but then people found container already has a meaning in\nlinux kernel.\n\nClean up the leftover variable name @cont.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "f047cecf2cfc9595b1f39c9aab383bb0682f5a53",
      "tree": "e3cdfd41e39c1a43ab9cba2721efb0aaf000e858",
      "parents": [
        "88fa523bff295f1d60244a54833480b02f775152"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Thu Jun 13 15:11:44 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 10:51:22 2013 -0700"
      },
      "message": "cpuset: fix to migrate mm correctly in a corner case\n\nBefore moving tasks out of empty cpusets, update_tasks_nodemask()\nis called, which calls do_migrate_pages(xx, from, to). Then those\ntasks are moved to an ancestor, and do_migrate_pages() is called\nagain.\n\nThe first time: from \u003d node_to_be_offlined, to \u003d empty.\nThe second time: from \u003d empty, to \u003d ancestor\u0027s nodemask.\n\nso looks like no pages will be migrated.\n\nFix this by:\n\n- Don\u0027t call update_tasks_nodemask() on empty cpusets.\n- Pass cs-\u003eold_mems_allowed to do_migrate_pages().\n\nv4: added comment in cpuset_hotplug_update_tasks() and rephased comment\n    in cpuset_attach().\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "88fa523bff295f1d60244a54833480b02f775152",
      "tree": "45231f9e9d1ec3612bbe3ce5d14673f27c4cbb12",
      "parents": [
        "5c5cc62321d9df7a9a608346fc649c4528380c8f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Sun Jun 09 17:16:46 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 10:48:33 2013 -0700"
      },
      "message": "cpuset: allow to move tasks to empty cpusets\n\nCurrently some cpuset behaviors are not friendly when cpuset is co-mounted\nwith other cgroup controllers.\n\nNow with this patchset if cpuset is mounted with sane_behavior option,\nit behaves differently:\n\n- Tasks will be kept in empty cpusets when hotplug happens and take\n  masks of ancestors with non-empty cpus/mems, instead of being moved to\n  an ancestor.\n\n- A task can be moved into an empty cpuset, and again it takes masks of\n  ancestors, so the user can drop a task into a newly created cgroup without\n  having to do anything for it.\n\nAs tasks can reside in empy cpusets, here\u0027re some rules:\n\n- They can be moved to another cpuset, regardless it\u0027s empty or not.\n\n- Though it takes masks from ancestors, it takes other configs from the\n  empty cpuset.\n\n- If the ancestors\u0027 masks are changed, those tasks will also be updated\n  to take new masks.\n\nv2: add documentation in include/linux/cgroup.h\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "5c5cc62321d9df7a9a608346fc649c4528380c8f",
      "tree": "e7e04867979f4f6920d6d1244057112ceb235390",
      "parents": [
        "070b57fcacc9dfc23a180290079078373fb697e1"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Sun Jun 09 17:16:29 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 10:48:32 2013 -0700"
      },
      "message": "cpuset: allow to keep tasks in empty cpusets\n\nTo achieve this:\n\n- We call update_tasks_cpumask/nodemask() for empty cpusets when\nhotplug happens, instead of moving tasks out of them.\n\n- When a cpuset\u0027s masks are changed by writing cpuset.cpus/mems,\nwe also update tasks in child cpusets which are empty.\n\nv3:\n- do propagation work in one place for both hotplug and unplug\n\nv2:\n- drop rcu_read_lock before calling update_task_nodemask() and\n  update_task_cpumask(), instead of using workqueue.\n- add documentation in include/linux/cgroup.h\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "070b57fcacc9dfc23a180290079078373fb697e1",
      "tree": "12bec33a6fbcb8b4db4cd5f2938dd902f244070a",
      "parents": [
        "33ad801dfb5c8b1127c72fdb745ce8c630150f3f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Sun Jun 09 17:15:22 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 10:48:32 2013 -0700"
      },
      "message": "cpuset: introduce effective_{cpumask|nodemask}_cpuset()\n\neffective_cpumask_cpuset() returns an ancestor cpuset which has\nnon-empty cpumask.\n\nIf a cpuset is empty and the tasks in it need to update their\ncpus_allowed, they take on the ancestor cpuset\u0027s cpumask.\n\nThis currently won\u0027t change any behavior, but it will later allow us\nto keep tasks in empty cpusets.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "33ad801dfb5c8b1127c72fdb745ce8c630150f3f",
      "tree": "3bb097f4353c0950194a23338bdd0cbd3fd28134",
      "parents": [
        "388afd8549dc8be0920e00ae9404341593b6bd7c"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Sun Jun 09 17:15:08 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 10:48:32 2013 -0700"
      },
      "message": "cpuset: record old_mems_allowed in struct cpuset\n\nWhen we update a cpuset\u0027s mems_allowed and thus update tasks\u0027\nmems_allowed, it\u0027s required to pass the old mems_allowed and new\nmems_allowed to cpuset_migrate_mm().\n\nCurrently we save old mems_allowed in a temp local variable before\nchanging cpuset-\u003emems_allowed. This patch changes it by saving\nold mems_allowed in cpuset-\u003eold_mems_allowed.\n\nThis currently won\u0027t change any behavior, but it will later allow\nus to keep tasks in empty cpusets.\n\nv3: restored \"cpuset_attach_nodemask_to \u003d cs-\u003emems_allowed\"\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "388afd8549dc8be0920e00ae9404341593b6bd7c",
      "tree": "b54acc60359bb52585db1da9be7a4452fcc32ba6",
      "parents": [
        "e44193d39e8d4d1de5d996fcd37ed75e5c704f10"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Sun Jun 09 17:14:47 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Jun 09 08:47:13 2013 -0700"
      },
      "message": "cpuset: remove async hotplug propagation work\n\nAs we can drop rcu read lock while iterating cgroup hierarchy,\nwe don\u0027t have to do propagation asynchronously via workqueue.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "e44193d39e8d4d1de5d996fcd37ed75e5c704f10",
      "tree": "e73e4d6fe9de762e3c56fd6a122ed28f2fcf6979",
      "parents": [
        "a73456f37b9dbc917398387d0cba926b4455b70f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Sun Jun 09 17:14:22 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Jun 09 08:47:13 2013 -0700"
      },
      "message": "cpuset: let hotplug propagation work wait for task attaching\n\nInstead of triggering propagation work in cpuset_attach(), we make\nhotplug propagation work wait until there\u0027s no task attaching in\nprogress.\n\nIMO this is more robust. We won\u0027t see empty masks in cpuset_attach().\n\nAlso it\u0027s a preparation for removing propagation work. Without asynchronous\npropagation we can\u0027t call move_tasks_in_empty_cpuset() in cpuset_attach(),\nbecause otherwise we\u0027ll deadlock on cgroup_mutex.\n\ntj: typo fixes.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "a73456f37b9dbc917398387d0cba926b4455b70f",
      "tree": "f719feff0ea9d7d42b0015a4cd388e2f5b072a4b",
      "parents": [
        "249cc86db7492dc8de1d2eddebc6bcc4ab2a8e9e"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Wed Jun 05 17:15:59 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 05 13:55:14 2013 -0700"
      },
      "message": "cpuset: re-structure update_cpumask() a bit\n\nCheck if cpus_allowed is to be changed before calling validate_change().\n\nThis won\u0027t change any behavior, but later it will allow us to do this:\n\n # mkdir /cpuset/child\n # echo $$ \u003e /cpuset/child/tasks\t/* empty cpuset */\n # echo \u003e /cpuset/child/cpuset.cpus\t/* do nothing, won\u0027t fail */\n\nWithout this patch, the last operation will fail.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "249cc86db7492dc8de1d2eddebc6bcc4ab2a8e9e",
      "tree": "be40a0fccba259600d9b88b98b704b55f22cb42d",
      "parents": [
        "67bd2c59850de20d0ecdc8084cbbfe34e53b6804"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Wed Jun 05 17:15:48 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 05 13:55:14 2013 -0700"
      },
      "message": "cpuset: remove cpuset_test_cpumask()\n\nThe test is done in set_cpus_allowed_ptr(), so it\u0027s redundant.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "67bd2c59850de20d0ecdc8084cbbfe34e53b6804",
      "tree": "62c3d7d42c0b4d5a9ea5672458ddd9af3d2e8af3",
      "parents": [
        "40df2deb50570b288b7067b111af0aa9ca640e6f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Wed Jun 05 17:15:35 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 05 13:55:13 2013 -0700"
      },
      "message": "cpuset: remove unnecessary variable in cpuset_attach()\n\nWe can just use oldcs-\u003emems_allowed.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "40df2deb50570b288b7067b111af0aa9ca640e6f",
      "tree": "8726979f640b96191bf656dd8583613ef70ca663",
      "parents": [
        "06d6b3cbdf94bc37732df83e7c25774370411a56"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Wed Jun 05 17:15:23 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 05 13:55:13 2013 -0700"
      },
      "message": "cpuset: cleanup guarantee_online_{cpus|mems}()\n\n- We never pass a NULL @cs to these functions.\n- The top cpuset always has some online cpus/mems.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "06d6b3cbdf94bc37732df83e7c25774370411a56",
      "tree": "3f379e95749dceb02d9d15190a212a9331a58976",
      "parents": [
        "d5c56ced775f6bdc32b689b01c9c4f9b66e18610"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Wed Jun 05 17:15:11 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 05 13:55:13 2013 -0700"
      },
      "message": "cpuset: remove redundant check in cpuset_cpus_allowed_fallback()\n\ntask_cs() will never return NULL.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "20b4fb485227404329e41ad15588afad3df23050",
      "tree": "f3e099f0ab3da8a93b447203e294d2bb22f6dc05",
      "parents": [
        "b9394d8a657cd3c064fa432aa0905c1b58b38fe9",
        "ac3e3c5b1164397656df81b9e9ab4991184d3236"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 01 17:51:54 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 01 17:51:54 2013 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull VFS updates from Al Viro,\n\nMisc cleanups all over the place, mainly wrt /proc interfaces (switch\ncreate_proc_entry to proc_create(), get rid of the deprecated\ncreate_proc_read_entry() in favor of using proc_create_data() and\nseq_file etc).\n\n7kloc removed.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (204 commits)\n  don\u0027t bother with deferred freeing of fdtables\n  proc: Move non-public stuff from linux/proc_fs.h to fs/proc/internal.h\n  proc: Make the PROC_I() and PDE() macros internal to procfs\n  proc: Supply a function to remove a proc entry by PDE\n  take cgroup_open() and cpuset_open() to fs/proc/base.c\n  ppc: Clean up scanlog\n  ppc: Clean up rtas_flash driver somewhat\n  hostap: proc: Use remove_proc_subtree()\n  drm: proc: Use remove_proc_subtree()\n  drm: proc: Use minor-\u003eindex to label things, not PDE-\u003ename\n  drm: Constify drm_proc_list[]\n  zoran: Don\u0027t print proc_dir_entry data in debug\n  reiserfs: Don\u0027t access the proc_dir_entry in r_open(), r_start() r_show()\n  proc: Supply an accessor for getting the data from a PDE\u0027s parent\n  airo: Use remove_proc_subtree()\n  rtl8192u: Don\u0027t need to save device proc dir PDE\n  rtl8187se: Use a dir under /proc/net/r8180/\n  proc: Add proc_mkdir_data()\n  proc: Move some bits from linux/proc_fs.h to linux/{of.h,signal.h,tty.h}\n  proc: Move PDE_NET() to fs/proc/proc_net.c\n  ...\n"
    },
    {
      "commit": "8d8b97ba499cb69fccb5fd9f2b439e3265fc3f27",
      "tree": "7058d6aedd3bbf160144565dc13d92a9e20b797c",
      "parents": [
        "4c23782091dc98221dc149e844ab128771a78ea2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Apr 19 23:11:24 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 01 17:29:46 2013 -0400"
      },
      "message": "take cgroup_open() and cpuset_open() to fs/proc/base.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "191a712090bb8a10e6f129360eeed2d68f3d4c9a",
      "tree": "17e2d6c27fb8a7c3a61828fbcc7c343a4966a0a9",
      "parents": [
        "46d9be3e5eb01f71fc02653755d970247174b400",
        "2a0010af17b1739ef8ea8cf02647a127241ee674"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 29 19:14:20 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 29 19:14:20 2013 -0700"
      },
      "message": "Merge branch \u0027for-3.10\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\nPull cgroup updates from Tejun Heo:\n\n - Fixes and a lot of cleanups.  Locking cleanup is finally complete.\n   cgroup_mutex is no longer exposed to individual controlelrs which\n   used to cause nasty deadlock issues.  Li fixed and cleaned up quite a\n   bit including long standing ones like racy cgroup_path().\n\n - device cgroup now supports proper hierarchy thanks to Aristeu.\n\n - perf_event cgroup now supports proper hierarchy.\n\n - A new mount option \"__DEVEL__sane_behavior\" is added.  As indicated\n   by the name, this option is to be used for development only at this\n   point and generates a warning message when used.  Unfortunately,\n   cgroup interface currently has too many brekages and inconsistencies\n   to implement a consistent and unified hierarchy on top.  The new flag\n   is used to collect the behavior changes which are necessary to\n   implement consistent unified hierarchy.  It\u0027s likely that this flag\n   won\u0027t be used verbatim when it becomes ready but will be enabled\n   implicitly along with unified hierarchy.\n\n   The option currently disables some of broken behaviors in cgroup core\n   and also .use_hierarchy switch in memcg (will be routed through -mm),\n   which can be used to make very unusual hierarchy where nesting is\n   partially honored.  It will also be used to implement hierarchy\n   support for blk-throttle which would be impossible otherwise without\n   introducing a full separate set of control knobs.\n\n   This is essentially versioning of interface which isn\u0027t very nice but\n   at this point I can\u0027t see any other options which would allow keeping\n   the interface the same while moving towards hierarchy behavior which\n   is at least somewhat sane.  The planned unified hierarchy is likely\n   to require some level of adaptation from userland anyway, so I think\n   it\u0027d be best to take the chance and update the interface such that\n   it\u0027s supportable in the long term.\n\n   Maintaining the existing interface does complicate cgroup core but\n   shouldn\u0027t put too much strain on individual controllers and I think\n   it\u0027d be manageable for the foreseeable future.  Maybe we\u0027ll be able\n   to drop it in a decade.\n\nFix up conflicts (including a semantic one adding a new #include to ppc\nthat was uncovered by header the file changes) as per Tejun.\n\n* \u0027for-3.10\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (45 commits)\n  cpuset: fix compile warning when CONFIG_SMP\u003dn\n  cpuset: fix cpu hotplug vs rebuild_sched_domains() race\n  cpuset: use rebuild_sched_domains() in cpuset_hotplug_workfn()\n  cgroup: restore the call to eventfd-\u003epoll()\n  cgroup: fix use-after-free when umounting cgroupfs\n  cgroup: fix broken file xattrs\n  devcg: remove parent_cgroup.\n  memcg: force use_hierarchy if sane_behavior\n  cgroup: remove cgrp-\u003etop_cgroup\n  cgroup: introduce sane_behavior mount option\n  move cgroupfs_root to include/linux/cgroup.h\n  cgroup: convert cgroupfs_root flag bits to masks and add CGRP_ prefix\n  cgroup: make cgroup_path() not print double slashes\n  Revert \"cgroup: remove bind() method from cgroup_subsys.\"\n  perf: make perf_event cgroup hierarchical\n  cgroup: implement cgroup_is_descendant()\n  cgroup: make sure parent won\u0027t be destroyed before its children\n  cgroup: remove bind() method from cgroup_subsys.\n  devcg: remove broken_hierarchy tag\n  cgroup: remove cgroup_lock_is_held()\n  ...\n"
    },
    {
      "commit": "46d9be3e5eb01f71fc02653755d970247174b400",
      "tree": "01534c9ebfa5f52a7133e34354d2831fe6704f15",
      "parents": [
        "ce8aa48929449b491149b6c87861ac69cb797a42",
        "cece95dfe5aa56ba99e51b4746230ff0b8542abd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 29 19:07:40 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 29 19:07:40 2013 -0700"
      },
      "message": "Merge branch \u0027for-3.10\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\nPull workqueue updates from Tejun Heo:\n \"A lot of activities on workqueue side this time.  The changes achieve\n  the followings.\n\n   - WQ_UNBOUND workqueues - the workqueues which are per-cpu - are\n     updated to be able to interface with multiple backend worker pools.\n     This involved a lot of churning but the end result seems actually\n     neater as unbound workqueues are now a lot closer to per-cpu ones.\n\n   - The ability to interface with multiple backend worker pools are\n     used to implement unbound workqueues with custom attributes.\n     Currently the supported attributes are the nice level and CPU\n     affinity.  It may be expanded to include cgroup association in\n     future.  The attributes can be specified either by calling\n     apply_workqueue_attrs() or through /sys/bus/workqueue/WQ_NAME/* if\n     the workqueue in question is exported through sysfs.\n\n     The backend worker pools are keyed by the actual attributes and\n     shared by any workqueues which share the same attributes.  When\n     attributes of a workqueue are changed, the workqueue binds to the\n     worker pool with the specified attributes while leaving the work\n     items which are already executing in its previous worker pools\n     alone.\n\n     This allows converting custom worker pool implementations which\n     want worker attribute tuning to use workqueues.  The writeback pool\n     is already converted in block tree and there are a couple others\n     are likely to follow including btrfs io workers.\n\n   - WQ_UNBOUND\u0027s ability to bind to multiple worker pools is also used\n     to make it NUMA-aware.  Because there\u0027s no association between work\n     item issuer and the specific worker assigned to execute it, before\n     this change, using unbound workqueue led to unnecessary cross-node\n     bouncing and it couldn\u0027t be helped by autonuma as it requires tasks\n     to have implicit node affinity and workers are assigned randomly.\n\n     After these changes, an unbound workqueue now binds to multiple\n     NUMA-affine worker pools so that queued work items are executed in\n     the same node.  This is turned on by default but can be disabled\n     system-wide or for individual workqueues.\n\n     Crypto was requesting NUMA affinity as encrypting data across\n     different nodes can contribute noticeable overhead and doing it\n     per-cpu was too limiting for certain cases and IO throughput could\n     be bottlenecked by one CPU being fully occupied while others have\n     idle cycles.\n\n  While the new features required a lot of changes including\n  restructuring locking, it didn\u0027t complicate the execution paths much.\n  The unbound workqueue handling is now closer to per-cpu ones and the\n  new features are implemented by simply associating a workqueue with\n  different sets of backend worker pools without changing queue,\n  execution or flush paths.\n\n  As such, even though the amount of change is very high, I feel\n  relatively safe in that it isn\u0027t likely to cause subtle issues with\n  basic correctness of work item execution and handling.  If something\n  is wrong, it\u0027s likely to show up as being associated with worker pools\n  with the wrong attributes or OOPS while workqueue attributes are being\n  changed or during CPU hotplug.\n\n  While this creates more backend worker pools, it doesn\u0027t add too many\n  more workers unless, of course, there are many workqueues with unique\n  combinations of attributes.  Assuming everything else is the same,\n  NUMA awareness costs an extra worker pool per NUMA node with online\n  CPUs.\n\n  There are also a couple things which are being routed outside the\n  workqueue tree.\n\n   - block tree pulled in workqueue for-3.10 so that writeback worker\n     pool can be converted to unbound workqueue with sysfs control\n     exposed.  This simplifies the code, makes writeback workers\n     NUMA-aware and allows tuning nice level and CPU affinity via sysfs.\n\n   - The conversion to workqueue means that there\u0027s no 1:1 association\n     between a specific worker, which makes writeback folks unhappy as\n     they want to be able to tell which filesystem caused a problem from\n     backtrace on systems with many filesystems mounted.  This is\n     resolved by allowing work items to set debug info string which is\n     printed when the task is dumped.  As this change involves unifying\n     implementations of dump_stack() and friends in arch codes, it\u0027s\n     being routed through Andrew\u0027s -mm tree.\"\n\n* \u0027for-3.10\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (84 commits)\n  workqueue: use kmem_cache_free() instead of kfree()\n  workqueue: avoid false negative WARN_ON() in destroy_workqueue()\n  workqueue: update sysfs interface to reflect NUMA awareness and a kernel param to disable NUMA affinity\n  workqueue: implement NUMA affinity for unbound workqueues\n  workqueue: introduce put_pwq_unlocked()\n  workqueue: introduce numa_pwq_tbl_install()\n  workqueue: use NUMA-aware allocation for pool_workqueues\n  workqueue: break init_and_link_pwq() into two functions and introduce alloc_unbound_pwq()\n  workqueue: map an unbound workqueues to multiple per-node pool_workqueues\n  workqueue: move hot fields of workqueue_struct to the end\n  workqueue: make workqueue-\u003ename[] fixed len\n  workqueue: add workqueue-\u003eunbound_attrs\n  workqueue: determine NUMA node of workers accourding to the allowed cpumask\n  workqueue: drop \u0027H\u0027 from kworker names of unbound worker pools\n  workqueue: add wq_numa_tbl_len and wq_numa_possible_cpumask[]\n  workqueue: move pwq_pool_locking outside of get/put_unbound_pool()\n  workqueue: fix memory leak in apply_workqueue_attrs()\n  workqueue: fix unbound workqueue attrs hashing / comparison\n  workqueue: fix race condition in unbound workqueue free path\n  workqueue: remove pwq_lock which is no longer used\n  ...\n"
    },
    {
      "commit": "d8f10cb3d375c34ad668f32ca6e4661ad1fc23b2",
      "tree": "37e8289b0f5d28a8ca608c7ee3fac5b5bb8a0e15",
      "parents": [
        "3c743a7f7b682dedef188664514c0ea82e232742"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Apr 29 15:08:08 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 29 15:54:36 2013 -0700"
      },
      "message": "kernel/cpuset.c: use register_hotmemory_notifier()\n\nUse the new interface, remove one ifdef.  No code size changes.\n\nWe could/should have been using __meminit/__meminitdata here but there\u0027s\nnow no point in doing that because all this code is elided at compile time.\n\nCc: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Tejun Heo \u003ctj@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": "2a0010af17b1739ef8ea8cf02647a127241ee674",
      "tree": "aa96feb5df61f15c1814874ce44c69371b1570e9",
      "parents": [
        "5b16c2a493fe1e439c4e7ad51f58153968ca6cf3"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Sun Apr 28 09:46:57 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Apr 27 19:55:04 2013 -0700"
      },
      "message": "cpuset: fix compile warning when CONFIG_SMP\u003dn\n\nReported by Fengguang\u0027s kbuild test robot:\n\nkernel/cpuset.c:787: warning: \u0027generate_sched_domains\u0027 defined but not used\n\nIntroduced by commit e0e80a02e5701c8790bd348ab59edb154fbda60b\n(\"cpuset: use rebuild_sched_domains() in cpuset_hotplug_workfn()),\nwhich removed generate_sched_domains() from cpuset_hotplug_workfn().\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "5b16c2a493fe1e439c4e7ad51f58153968ca6cf3",
      "tree": "82ed118dcd768f713b96ca055200c341ee02baeb",
      "parents": [
        "e0e80a02e5701c8790bd348ab59edb154fbda60b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Sat Apr 27 06:52:43 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Apr 27 06:52:43 2013 -0700"
      },
      "message": "cpuset: fix cpu hotplug vs rebuild_sched_domains() race\n\nrebuild_sched_domains() might pass doms with offlined cpu to\npartition_sched_domains(), which results in an oops:\n\ngeneral protection fault: 0000 [#1] SMP\n...\nRIP: 0010:[\u003cffffffff81077a1e\u003e]  [\u003cffffffff81077a1e\u003e] get_group+0x6e/0x90\n...\nCall Trace:\n [\u003cffffffff8107f07c\u003e] build_sched_domains+0x70c/0xcb0\n [\u003cffffffff8107f2a7\u003e] ? build_sched_domains+0x937/0xcb0\n [\u003cffffffff81173f64\u003e] ? kfree+0xe4/0x1b0\n [\u003cffffffff8107f6e0\u003e] ? partition_sched_domains+0xc0/0x470\n [\u003cffffffff8107f905\u003e] partition_sched_domains+0x2e5/0x470\n [\u003cffffffff8107f6e0\u003e] ? partition_sched_domains+0xc0/0x470\n [\u003cffffffff810c9007\u003e] ? generate_sched_domains+0xc7/0x530\n [\u003cffffffff810c94a8\u003e] rebuild_sched_domains_locked+0x38/0x70\n [\u003cffffffff810cb4a4\u003e] cpuset_write_resmask+0x1a4/0x500\n [\u003cffffffff810c8700\u003e] ? cpuset_mount+0xe0/0xe0\n [\u003cffffffff810c7f50\u003e] ? cpuset_read_u64+0x100/0x100\n [\u003cffffffff810be890\u003e] ? cgroup_iter_next+0x90/0x90\n [\u003cffffffff810cb300\u003e] ? cpuset_css_offline+0x70/0x70\n [\u003cffffffff810c1a73\u003e] cgroup_file_write+0x133/0x2e0\n [\u003cffffffff8118995b\u003e] vfs_write+0xcb/0x130\n [\u003cffffffff8118a174\u003e] sys_write+0x64/0xa0\n\nReported-by: Li Zhong \u003czhong@linux.vnet.ibm.com\u003e\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "e0e80a02e5701c8790bd348ab59edb154fbda60b",
      "tree": "2fa0dc207322674ec0719857449971240d2b7e4e",
      "parents": [
        "7ef70e48735e17d2be5c8e8f85052842b16b923a"
      ],
      "author": {
        "name": "Li Zhong",
        "email": "zhong@linux.vnet.ibm.com",
        "time": "Sat Apr 27 06:52:43 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Apr 27 06:52:43 2013 -0700"
      },
      "message": "cpuset: use rebuild_sched_domains() in cpuset_hotplug_workfn()\n\nIn cpuset_hotplug_workfn(), partition_sched_domains() is called without\nhotplug lock held, which is actually needed (stated in the function\nheader of partition_sched_domains()).\n\nThis patch tries to use rebuild_sched_domains() to solve the above\nissue, and makes the code looks a little simpler.\n\nSigned-off-by: Li Zhong \u003czhong@linux.vnet.ibm.com\u003e\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "8cc9934520e7f752fe45d5199664d741ba24a932",
      "tree": "881744c4c1c69f4c5afc46b80adb1dd71caf58ff",
      "parents": [
        "d9c10ddddc98db0a316243cd266c466875975a94"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 07 09:29:50 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 07 09:29:50 2013 -0700"
      },
      "message": "cgroup, cpuset: replace move_member_tasks_to_cpuset() with cgroup_transfer_tasks()\n\nWhen a cpuset becomes empty (no CPU or memory), its tasks are\ntransferred with the nearest ancestor with execution resources.  This\nis implemented using cgroup_scan_tasks() with a callback which grabs\ncgroup_mutex and invokes cgroup_attach_task() on each task.\n\nBoth cgroup_mutex and cgroup_attach_task() are scheduled to be\nunexported.  Implement cgroup_transfer_tasks() in cgroup proper which\nis essentially the same as move_member_tasks_to_cpuset() except that\nit takes cgroups instead of cpusets and @to comes before @from like\nnormal functions with those arguments, and replace\nmove_member_tasks_to_cpuset() with it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "081aa458c38ba576bdd4265fc807fa95b48b9e79",
      "tree": "b080dbb2d1fed0b53193b8552f561d8bab39d6b5",
      "parents": [
        "bd2953ebbb533aeda9b86c82a53d5197a9a38f1b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Wed Mar 13 09:17:09 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 20 07:50:25 2013 -0700"
      },
      "message": "cgroup: consolidate cgroup_attach_task() and cgroup_attach_proc()\n\nThese two functions share most of the code.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "14a40ffccd6163bbcd1d6f32b28a88ffe6149fc6",
      "tree": "eb61e5bf7b64c3e67f3e33fe6b07fde4ee1d4d43",
      "parents": [
        "2e109a2855bf6cf675a8b74dbd89b6492e8def42"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 19 13:45:20 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 19 13:45:20 2013 -0700"
      },
      "message": "sched: replace PF_THREAD_BOUND with PF_NO_SETAFFINITY\n\nPF_THREAD_BOUND was originally used to mark kernel threads which were\nbound to a specific CPU using kthread_bind() and a task with the flag\nset allows cpus_allowed modifications only to itself.  Workqueue is\ncurrently abusing it to prevent userland from meddling with\ncpus_allowed of workqueue workers.\n\nWhat we need is a flag to prevent userland from messing with\ncpus_allowed of certain kernel tasks.  In kernel, anyone can\n(incorrectly) squash the flag, and, for worker-type usages,\nrestricting cpus_allowed modification to the task itself doesn\u0027t\nprovide meaningful extra proection as other tasks can inject work\nitems to the task anyway.\n\nThis patch replaces PF_THREAD_BOUND with PF_NO_SETAFFINITY.\nsched_setaffinity() checks the flag and return -EINVAL if set.\nset_cpus_allowed_ptr() is no longer affected by the flag.\n\nThis will allow simplifying workqueue worker CPU affinity management.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nReviewed-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "cfb5966bef85412dab9c93553db10b3e99ac32e8",
      "tree": "a0cf5d9513f8b9a97af9bd5e186ff611493a8e93",
      "parents": [
        "ff794dea52eaaa09017efea688a1d7f92ab0818e"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Tue Mar 12 10:28:39 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 12 14:25:25 2013 -0700"
      },
      "message": "cpuset: fix RCU lockdep splat in cpuset_print_task_mems_allowed()\n\nSasha reported a lockdep warning when OOM was triggered. The reason\nis cgroup_name() should be called with rcu_read_lock() held.\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": "f440d98f8ebab02a768c1de17395e4239af9a97d",
      "tree": "06ea2d293e51962fa63bd554b7e1a0819fe8de8a",
      "parents": [
        "65dff759d2948cf18e2029fc5c0c595b8b7da3a5"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Fri Mar 01 15:02:15 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Mar 04 09:50:08 2013 -0800"
      },
      "message": "cpuset: use cgroup_name() in cpuset_print_task_mems_allowed()\n\nUse cgroup_name() instead of cgrp-\u003edentry-\u003ename. This makes the code\na bit simpler.\n\nWhile at it, remove cpuset_name and make cpuset_nodelist a local variable\nto cpuset_print_task_mems_allowed().\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "523fb486bfd94e3a3b16a42bcb21b1959cf14df8"
}
