)]}'
{
  "log": [
    {
      "commit": "9fa4db334c7d9570aec7a5121e84fae99aae1d04",
      "tree": "e9db3a75ec77038f68c1961e947346a33fabafcf",
      "parents": [
        "ca8bdcaff0d77990fb69e0f946018c96a70851cc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 26 18:40:56 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 26 18:40:56 2013 -0400"
      },
      "message": "cgroup: implement CFTYPE_NO_PREFIX\n\nWhen cgroup files are created, cgroup core automatically prepends the\nname of the subsystem as prefix.  This patch adds CFTYPE_NO_ which\ndisables the automatic prefix.  This is to work around historical\nbaggages and shouldn\u0027t be used for new files.\n\nThis will be used to move \"cgroup.event_control\" from cgroup core to\nmemcg.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Glauber Costa \u003cglommer@gmail.com\u003e\n"
    },
    {
      "commit": "35cf083619da5677f83e9a8eae813f0b413d7082",
      "tree": "509ea1ae09644bc82040ec919fa94c928e98db27",
      "parents": [
        "6e6eab0efdf48fb2d8d7aee904d7740acb4661c6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 26 18:40:56 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 26 18:40:56 2013 -0400"
      },
      "message": "cgroup: rename cgroup_css_from_dir() to css_from_dir() and update its syntax\n\ncgroup_css_from_dir() will grow another user.  In preparation, make\nthe following changes.\n\n* All css functions are prefixed with just \"css_\", rename it to\n  css_from_dir().\n\n* Take dentry * instead of file * as dentry is what ultimately\n  identifies a cgroup and file may not always be available.  Note that\n  the function now checkes whether @dentry-\u003ed_inode is NULL as the\n  caller now may specify a negative dentry.\n\n* Make it take cgroup_subsys * instead of integer subsys_id.  This\n  simplifies the function and allows specifying no subsystem for\n  cgroup-\u003edummy_css.\n\n* Make return section a bit less verbose.\n\nThis patch doesn\u0027t introduce any behavior changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\n"
    },
    {
      "commit": "1cb650b91ba582f6737457b7d22e368585596d2c",
      "tree": "1a3d8d4a219dcca229dcc6dc47876091ef0f8438",
      "parents": [
        "930913a31289202d232186b82854b26d7fb7cf4d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Mon Aug 19 10:05:24 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 19 09:52:18 2013 -0400"
      },
      "message": "cgroup: change cgroup_from_id() to css_from_id()\n\nNow we want cgroup core to always provide the css to use to the\nsubsystems, so change this API to css_from_id().\n\nUninline css_from_id(), because it\u0027s getting bigger and cgroup_css()\nhas been unexported.\n\nWhile at it, remove the #ifdef, and shuffle the order of the args.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "0c21ead136a900c36f1ab74fd7d09a306dc31324",
      "tree": "38be4611e1f6ebd1c7ea0c9f61dd2c6aed30fc79",
      "parents": [
        "3c14f8b44fafaa60519440bea1591e495b928327"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 20:22:51 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 20:22:51 2013 -0400"
      },
      "message": "cgroup: RCU protect each cgroup_subsys_state release\n\nWith the planned unified hierarchy, individual css\u0027s will be created\nand destroyed dynamically across the lifetime of a cgroup.  To enable\nsuch usages, css destruction is being decoupled from cgroup\ndestruction.  Most of the destruction path has been decoupled but the\nactual free of css still depends on cgroup free path.\n\nWhen all css refs are drained, css_release() kicks off\ncss_free_work_fn() which puts the cgroup.  When the cgroup refcnt\nreaches zero, cgroup_diput() is invoked which in turn schedules RCU\nfree of the cgroup.  After a grace period, all css\u0027s are freed along\nwith the cgroup itself.\n\nThis patch moves the RCU grace period and css freeing from cgroup\nrelease path to css release path.  css_release(), instead of kicking\noff css_free_work_fn() directly, schedules RCU callback\ncss_free_rcu_fn() which in turn kicks off css_free_work_fn() after a\nRCU grace period.  css_free_work_fn() is updated to free the css\ndirectly.\n\nThe five-way punting - percpu ref kill confirmation, a work item,\npercpu ref release, RCU grace period, and again a work item - is quite\nhairy but the work items are there only to provide process context and\nthe actual sequence is kill confirm -\u003e release -\u003e RCU free, which\nisn\u0027t simple but not too crazy.\n\nThis removes cgroup_css() usage after offline_css() allowing clearing\ncgroup-\u003esubsys[] from offline_css(), which makes it consistent with\nonline_css() and brings it closer to proper lifetime management for\nindividual css\u0027s.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "09a503ea3a816b285b0b402b7f785eaec0c7a7e1",
      "tree": "67f3a360c2e8e0851825cf3e1675bd5244d15926",
      "parents": [
        "f20104de55a212a9742d8df1807f1f29dc95b748"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 20:22:50 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 20:22:50 2013 -0400"
      },
      "message": "cgroup: decouple cgroup_subsys_state destruction from cgroup destruction\n\nCurrently, css (cgroup_subsys_state) lifetime is tied to that of the\nassociated cgroup.  css\u0027s are created when the associated cgroup is\ncreated and destroyed when it gets destroyed.  Also, individual css\u0027s\naren\u0027t RCU protected but the whole cgroup is.  With the planned\nunified hierarchy, css\u0027s will need to be dynamically created and\ndestroyed within the lifetime of a cgroup.\n\nTo enable such usages, this patch decouples css destruction from\ncgroup destruction - offline_css() invocation and the final css_put()\nare moved from cgroup_destroy_css_killed() to css_killed_work_fn().\nNow each css is individually offlined and put as its reference count\nis killed instead of waiting for all css\u0027s attached to the cgroup to\nfinish refcnt killing and then proceeding to offlining and putting\nthem together.\n\nWhile this changes the order of destruction operations, the changes\nshouldn\u0027t be noticeable to cgroup subsystems or userland.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "f20104de55a212a9742d8df1807f1f29dc95b748",
      "tree": "c7686dae4a73615ba67dc6fd4cfe9e7b89cf9708",
      "parents": [
        "223dbc38d2a8745a93749dc75ed909e274ce075d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 20:22:50 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 20:22:50 2013 -0400"
      },
      "message": "cgroup: replace cgroup-\u003ecss_kill_cnt with -\u003enr_css\n\nCurrently, css (cgroup_subsys_state) lifetime is tied to that of the\nassociated cgroup.  With the planned unified hierarchy, css\u0027s will be\ndynamically created and destroyed within the lifetime of a cgroup.  To\nenable such usages, css\u0027s will be individually RCU protected instead\nof being tied to the cgroup.\n\ncgroup-\u003ecss_kill_cnt is used during cgroup destruction to wait for css\nreference count disable; however, this model doesn\u0027t work once css\u0027s\nlifetimes are managed separately from cgroup\u0027s.  This patch replaces\nit with cgroup-\u003enr_css which is an cgroup_mutex protected integer\ncounting the number of attached css\u0027s.  The count is incremented from\nonline_css() and decremented after refcnt kill is confirmed.  If the\ncount reaches zero and the cgroup is marked dead, the second stage of\ncgroup destruction is kicked off.  If a cgroup doesn\u0027t have any css\nattached at the time of rmdir, cgroup_destroy_locked() now invokes the\nsecond stage directly as no css kill confirmation would happen.\n\ncgroup_offline_fn() - the second step of cgroup destruction - is\nrenamed to cgroup_destroy_css_killed() and now expects to be called\nwith cgroup_mutex held.\n\nWhile this patch changes how css destruction is punted to work items,\nit shouldn\u0027t change any visible behavior.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "73e80ed8007fc48a6deeb295ba37159fad274bd2",
      "tree": "c4f430a223725038cb85be6ee0e13578d831c929",
      "parents": [
        "105347ba5da3e87facce2337c50cd5df93cc6bec"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 11:01:55 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 11:01:55 2013 -0400"
      },
      "message": "cgroup: add __rcu modifier to cgroup-\u003esubsys[]\n\nFor the planned unified hierarchy, each css (cgroup_subsys_state) will\nbe RCU protected so that it can be created and destroyed individually\nwhile allowing RCU accesses.  Previous changes ensured that all\ncgroup-\u003esubsys[] accesses use the cgroup_css() accessor.  This patch\nadds __rcu modifier to cgroup-\u003esubsys[], add matching RCU dereference\nin cgroup_css() and convert all assignments to either\nrcu_assign_pointer() or RCU_INIT_POINTER().\n\nThis change prepares for the actual RCUfication of css\u0027s and doesn\u0027t\nintroduce any visible behavior change.  The conversion is verified\nwith sparse and all accesses are properly RCU annotated.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "0ae78e0bf10ac38ab53548e18383afc9997eca22",
      "tree": "8f3e828b1751966af779becd60a0ff432cfefc8d",
      "parents": [
        "35ef10da65d43211f4cd7e7822cbb3becdfc0ae1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 11:01:54 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 11:01:54 2013 -0400"
      },
      "message": "cgroup: add cgroup_subsys_state-\u003eparent\n\nWith the planned unified hierarchy, css\u0027s (cgroup_subsys_state) will\nbe RCU protected and allowed to be attached and detached dynamically\nover the course of a cgroup\u0027s lifetime.  This means that css\u0027s will\nstay accessible after being detached from its cgroup - the matching\npointer in cgroup-\u003esubsys[] cleared - for ref draining and RCU grace\nperiod.\n\ncgroup core still wants to guarantee that the parent css is never\ndestroyed before its children and css_parent() always returns the\nparent regardless of the state of the child css as long as it\u0027s\naccessible.\n\nThis patch makes css\u0027s hold onto their parents and adds css-\u003eparent so\nthat the parent css is never detroyed before its children and can be\ndetermined without consulting the cgroups.\n\ncgroup-\u003edummy_css is also updated to point to the parent dummy_css;\nhowever, it doesn\u0027t need to worry about object lifetime as the parent\ncgroup is already pinned by the child.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "35ef10da65d43211f4cd7e7822cbb3becdfc0ae1",
      "tree": "93384946eba30c0de1621d5a5895ae64c1583730",
      "parents": [
        "40e93b39cd5b6a347333a95152ce37deef37bbd0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 11:01:54 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 13 11:01:54 2013 -0400"
      },
      "message": "cgroup: rename cgroup_subsys_state-\u003edput_work and its callback function\n\ncss (cgroup_subsys_state) will become RCU protected and there will be\ntwo stages which require punting to work item during release.  To\nprepare for using the work item for multiple times, rename\ncss-\u003edput_work to css-\u003edestroy_work and css_dput_fn() to\ncss_free_work_fn() and move work item initialization from css init to\nright before the actual usage.\n\nThis reorganization doesn\u0027t introduce any behavior change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\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": "95109b627ba6a043c181fa5fa45d1c754dd44fbc",
      "tree": "c01adf53fc1ea85cfe23bbe4c7b6b59d203cf2d3",
      "parents": [
        "d99c8727e7bbc01b70e2c57e6127bfab26b868fd"
      ],
      "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: unexport cgroup_css()\n\ncgroup_css() no longer has any user left outside cgroup.c proper and\nwe don\u0027t want subsystems to grow new usages of the function.  cgroup\ncore should always provide the css to use to the subsystems, which\nwill make dynamic creation and destruction of css\u0027s across the\nlifetime of a cgroup much more manageable than exposing the cgroup\ndirectly to subsystems and let them dereference css\u0027s from it.\n\nMake cgroup_css() a static function in cgroup.c.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.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": "81eeaf0411204f52af8ef78ff107cfca2fcfec1d",
      "tree": "50ef753a5f351d9b838c0fbcf16f9e3b3723cc15",
      "parents": [
        "72ec7029937f0518eff21b8762743c31591684f5"
      ],
      "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 cftype-\u003e[un]register_event() 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\ncftype-\u003e[un]register_event() is among the remaining couple interfaces\nwhich still use struct cgroup.  Convert it to cgroup_subsys_state.\nThe conversion is mostly mechanical and removes the last users of\nmem_cgroup_from_cont() and cg_to_vmpressure(), which are removed.\n\nv2: indentation update as suggested 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\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\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": "c59cd3d840b1b0a8f996cbbd9132128dcaabbeb9",
      "tree": "f2ad31b11b14c00cfaa5327a5a587fae56604866",
      "parents": [
        "0942eeeef68f9493c1bcb1a52baf612b73fcf9fb"
      ],
      "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 cgroup_task_iter remember the cgroup being iterated\n\nCurrently all cgroup_task_iter functions require @cgrp to be passed\nin, which is superflous and increases chance of usage error.  Make\ncgroup_task_iter remember the cgroup being iterated and drop @cgrp\nargument from next and end functions.\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: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\n"
    },
    {
      "commit": "0942eeeef68f9493c1bcb1a52baf612b73fcf9fb",
      "tree": "d4cbfc6cf3bce4850669fa976ecc00acf01163e4",
      "parents": [
        "d515876e9d951d8cf7fc7c90db2967664bdc89ee"
      ],
      "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: rename cgroup_iter to cgroup_task_iter\n\ncgroup now has multiple iterators and it\u0027s quite confusing to have\nsomething which walks over tasks of a single cgroup named cgroup_iter.\nLet\u0027s rename it to cgroup_task_iter.\n\nWhile at it, reformat / update comments and replace the overview\ncomment above the interface function decls with proper function\ncomments.  Such overview can be useful but function comments should be\nmore than enough here.\n\nThis is pure rename and doesn\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: Michal Hocko \u003cmhocko@suse.cz\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": "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": "f48e3924dca268c677c4e338e5d91ad9e6fe6b9e",
      "tree": "8056aa4023c6a359851b27677560948835a59465",
      "parents": [
        "3b287a505ef4024634beb12a93773254909d5dae"
      ],
      "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: always use cgroup_next_child() to walk the children list\n\nThere are several places where the children list is accessed directly.\nThis patch converts those places to use cgroup_next_child().  This\nwill help updating the hierarchy iterators to use @css instead of\n@cgrp.\n\nWhile cgroup_next_child() can be heavy in pathological cases - e.g. a\nlot of dead children, this shouldn\u0027t cause any noticeable behavior\ndifferences.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "3b287a505ef4024634beb12a93773254909d5dae",
      "tree": "8cd2892ea52ec1f17a75c333daebd8d967d1f7c4",
      "parents": [
        "182446d087906de40e514573a92a97b203695f71"
      ],
      "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: convert cgroup_next_sibling() to cgroup_next_child()\n\ncgroup is transitioning to using css (cgroup_subsys_state) as the main\nsubsys interface handle instead of cgroup and the iterators will be\nupdated to use css too.  The iterators need to walk the cgroup\nhierarchy and return the css\u0027s matching the origin css, which is a bit\ncumbersome to open code.\n\nThis patch converts cgroup_next_sibling() to cgroup_next_child() so\nthat it can handle all steps of direct child iteration.  This will be\nused to update iterators to take @css instead of @cgrp.  In addition\nto the new iteration init handling, cgroup_next_child() is\nrestructured so that the different branches share the end of iteration\ncondition check.\n\nThis patch doesn\u0027t change any behavior.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\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": "67f4c36f83455b253445b2cb28ac9a2c4f85d99a",
      "tree": "3c7aecc6fc830799cf36716ea64583cc10cb9d40",
      "parents": [
        "f7d58818ba4249f04a83b73aaac135640050bb4f"
      ],
      "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: add cgroup-\u003edummy_css\n\ncgroup subsystem API is being converted to use css\n(cgroup_subsys_state) as the main handle, which makes things a bit\nawkward for subsystem agnostic core features - the \"cgroup.*\"\ninterface files and various iterations - a bit awkward as they don\u0027t\nhave a css to use.\n\nThis patch adds cgroup-\u003edummy_css which has NULL -\u003ess and whose only\nrole is pointing back to the cgroup.  This will be used to support\nsubsystem agnostic features on the coming css based API.\n\ncss_parent() is updated to handle dummy_css\u0027s.  Note that css will\nsoon grow its own -\u003eparent field and css_parent() will be made\ntrivial.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "2bb566cb68dfafad328af666ebadf0e49accd6ca",
      "tree": "700bd0b0f325e9eebf4b0c91ae31d1872f471e39",
      "parents": [
        "eb95419b023abacb415e2a18fea899023ce7624d"
      ],
      "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 subsys backlink pointer to cftype\n\ncgroup is transitioning to using css (cgroup_subsys_state) instead of\ncgroup as the primary subsystem handle.  The cgroupfs file interface\nwill be converted to use css\u0027s which requires finding out the\nsubsystem from cftype so that the matching css can be determined from\nthe cgroup.\n\nThis patch adds cftype-\u003ess which points to the subsystem the file\nbelongs to.  The field is initialized while a cftype is being\nregistered.  This makes it unnecessary to explicitly specify the\nsubsystem for other cftype handling functions.  @ss argument dropped\nfrom various cftype handling functions.\n\nThis patch shouldn\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: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\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": "72c97e54e0f043d33b246d7460ae0a36c4b8c643",
      "tree": "6ab5c1866671d43451aa2a03a0d3e68fada2f291",
      "parents": [
        "3f79851831a135c5cebbcaa8cddb07d02870b069"
      ],
      "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: add subsystem pointer to cgroup_subsys_state\n\nCurrently, given a cgroup_subsys_state, there\u0027s no way to find out\nwhich subsystem the css is for, which we\u0027ll need to convert the cgroup\ncontroller API to primarily use @css instead of @cgroup.  This patch\nadds cgroup_subsys_state-\u003ess which points to the subsystem the @css\nbelongs to.\n\nWhile at it, remove the comment about accessing @css-\u003ecgroup to\ndetermine the hierarchy.  cgroup core will provide API to traverse\nhierarchy of css\u0027es and we don\u0027t want subsystems to directly walk\ncgroup hierarchies anymore.\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": "61584e3f4964995e575618f76ff7197123796e75",
      "tree": "c43a31c30b23d5e576f2f52983cda804036ed389",
      "parents": [
        "b395890a092d8ecbe54f005179e3dec4b6bf752a",
        "da0a12caffad2eeadea429f83818408e7b77379a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 02 16:12:13 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 02 16:12:13 2013 -0400"
      },
      "message": "cgroup: Merge branch \u0027for-3.11-fixes\u0027 into for-3.12\n\nfor-3.12 branch is about to receive invasive updates which are\ndependent on da0a12caff (\"cgroup: fix a leak when percpu_ref_init()\nfails\").  Given the amount of scheduled changes, I think it\u0027d less\npainful to pull in for-3.11-fixes as preparation.  Pull in\nfor-3.11-fixes into for-3.12.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "e14880f7bb7e0dc0933af304998371dd543ceb40",
      "tree": "d17af9f967acdce1761264a2361986f10348995e",
      "parents": [
        "b414dc09a31d41d696093a4cce9fb2853a5ecd4e"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Wed Jul 31 09:51:31 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jul 31 07:47:34 2013 -0400"
      },
      "message": "cgroup: implement cgroup_from_id()\n\nThis will be used as a replacement for css_lookup().\n\nThere\u0027s a difference with cgroup id and css id. cgroup id starts with 0,\nwhile css id starts with 1.\n\nv4:\n- also check if cggroup_mutex is held.\n- make it an inline function.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "b414dc09a31d41d696093a4cce9fb2853a5ecd4e",
      "tree": "63cf081d600fff0d271130b8578f17d4fb90fe49",
      "parents": [
        "4e96ee8e981b5140a2bcc5fff0d5c0eef39a62ee"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Wed Jul 31 09:51:06 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jul 31 07:47:34 2013 -0400"
      },
      "message": "cgroup: document how cgroup IDs are assigned\n\nAs cgroup id has been used in netprio cgroup and will be used in memcg,\nit\u0027s important to make it clear how a cgroup id is allocated.\n\nFor example, in netprio cgroup, the id is used as index of anarray.\n\nSigned-off-by: Li Zefan \u003clizefan@huwei.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "4e96ee8e981b5140a2bcc5fff0d5c0eef39a62ee",
      "tree": "b6ef292c7e0aa59b29ff2827bdee631d23b02eaa",
      "parents": [
        "6f4b7e632d78c2d91502211c430722cc66428492"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Wed Jul 31 09:50:50 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jul 31 07:47:34 2013 -0400"
      },
      "message": "cgroup: convert cgroup_ida to cgroup_idr\n\nThis enables us to lookup a cgroup by its id.\n\nv4:\n- add a comment for idr_remove() in cgroup_offline_fn().\n\nv3:\n- on success, idr_alloc() returns the id but not 0, so fix the BUG_ON()\n  in cgroup_init().\n- pass the right value to idr_alloc() so that the id for dummy cgroup is 0.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\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": "913ffdb54366f94eec65c656cae8c6e00e1ab1b0",
      "tree": "55dae8f32f7a0a64ed6b665497e12414fb6d3103",
      "parents": [
        "add0c59d802e6118e51e21244c3871be35164e4b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 11 16:34:48 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 12 12:49:05 2013 -0700"
      },
      "message": "cgroup: replace task_cgroup_path_from_hierarchy() with task_cgroup_path()\n\ntask_cgroup_path_from_hierarchy() was added for the planned new users\nand none of the currently planned users wants to know about multiple\nhierarchies.  This patch drops the multiple hierarchy part and makes\nit always return the path in the first non-dummy hierarchy.\n\nAs unified hierarchy will always have id 1, this is guaranteed to\nreturn the path for the unified hierarchy if mounted; otherwise, it\nwill return the path from the hierarchy which happens to occupy the\nlowest hierarchy id, which will usually be the first hierarchy mounted\nafter boot.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Lennart Poettering \u003clennart@poettering.net\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Jan Kaluža \u003cjkaluza@redhat.com\u003e\n"
    },
    {
      "commit": "36805aaea5ae3cf1bb32f1643e0a800bb69f0d5b",
      "tree": "5565132549a0733772b3a2ac6b5cda516ea8cdce",
      "parents": [
        "6d2fa9e141ea56a571ec842fd4f3a86bea44a203",
        "d50235b7bc3ee0a0427984d763ea7534149531b4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 11 13:03:24 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 11 13:03:24 2013 -0700"
      },
      "message": "Merge branch \u0027for-3.11/core\u0027 of git://git.kernel.dk/linux-block\n\nPull core block IO updates from Jens Axboe:\n \"Here are the core IO block bits for 3.11. It contains:\n\n   - A tweak to the reserved tag logic from Jan, for weirdo devices with\n     just 3 free tags.  But for those it improves things substantially\n     for random writes.\n\n   - Periodic writeback fix from Jan.  Marked for stable as well.\n\n   - Fix for a race condition in IO scheduler switching from Jianpeng.\n\n   - The hierarchical blk-cgroup support from Tejun.  This is the grunt\n     of the series.\n\n   - blk-throttle fix from Vivek.\n\n  Just a note that I\u0027m in the middle of a relocation, whole family is\n  flying out tomorrow.  Hence I will be awal the remainder of this week,\n  but back at work again on Monday the 15th.  CC\u0027ing Tejun, since any\n  potential \"surprises\" will most likely be from the blk-cgroup work.\n  But it\u0027s been brewing for a while and sitting in my tree and\n  linux-next for a long time, so should be solid.\"\n\n* \u0027for-3.11/core\u0027 of git://git.kernel.dk/linux-block: (36 commits)\n  elevator: Fix a race in elevator switching\n  block: Reserve only one queue tag for sync IO if only 3 tags are available\n  writeback: Fix periodic writeback after fs mount\n  blk-throttle: implement proper hierarchy support\n  blk-throttle: implement throtl_grp-\u003ehas_rules[]\n  blk-throttle: Account for child group\u0027s start time in parent while bio climbs up\n  blk-throttle: add throtl_qnode for dispatch fairness\n  blk-throttle: make throtl_pending_timer_fn() ready for hierarchy\n  blk-throttle: make tg_dispatch_one_bio() ready for hierarchy\n  blk-throttle: make blk_throtl_bio() ready for hierarchy\n  blk-throttle: make blk_throtl_drain() ready for hierarchy\n  blk-throttle: dispatch from throtl_pending_timer_fn()\n  blk-throttle: implement dispatch looping\n  blk-throttle: separate out throtl_service_queue-\u003epending_timer from throtl_data-\u003edispatch_work\n  blk-throttle: set REQ_THROTTLED from throtl_charge_bio() and gate stats update with it\n  blk-throttle: implement sq_to_tg(), sq_to_td() and throtl_log()\n  blk-throttle: add throtl_service_queue-\u003eparent_sq\n  blk-throttle: generalize update_disptime optimization in blk_throtl_bio()\n  blk-throttle: dispatch to throtl_data-\u003eservice_queue.bio_lists[]\n  blk-throttle: move bio_lists[] and friends to throtl_service_queue\n  ...\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": "0ce6cba35777cf96a54ce0d5856dc962566b8717",
      "tree": "c03ee20f1c6deff5494a4ca86802ea053c6d5667",
      "parents": [
        "e2bd416f6246d11be29999c177d2534943a5c2df"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 27 19:37:26 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 27 19:37:26 2013 -0700"
      },
      "message": "cgroup: CGRP_ROOT_SUBSYS_BOUND should be ignored when comparing mount options\n\n1672d04070 (\"cgroup: fix cgroupfs_root early destruction path\")\nintroduced CGRP_ROOT_SUBSYS_BOUND which is used to mark completion of\nsubsys binding on a new root; however, this broke remounts.\ncgroup_remount() doesn\u0027t allow changing root options via remount and\nCGRP_ROOT_SUBSYS_BOUND, which is set on all fully initialized roots,\nmakes the function reject all remounts.\n\nFix it by putting the options part in the lower 16 bits of root-\u003eflags\nand masking the comparions.  While at it, make cgroup_remount() emit\nan error message explaining why it\u0027s rejecting a remount request, so\nthat it\u0027s less of a mystery.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "14611e51a57df10240817d8ada510842faf0ec51",
      "tree": "d2b3ba10386a98a867fac435625cee580f9b5047",
      "parents": [
        "eb178d063324d9c30f673db3877b892a48ade21e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 25 11:48:32 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 26 10:42:46 2013 -0700"
      },
      "message": "cgroup: fix RCU accesses to task-\u003ecgroups\n\ntask-\u003ecgroups is a RCU pointer pointing to struct css_set.  A task\nswitches to a different css_set on cgroup migration but a css_set\ndoesn\u0027t change once created and its pointers to cgroup_subsys_states\naren\u0027t RCU protected.\n\ntask_subsys_state[_check]() is the macro to acquire css given a task\nand subsys_id pair.  It RCU-dereferences task-\u003ecgroups-\u003esubsys[] not\ntask-\u003ecgroups, so the RCU pointer task-\u003ecgroups ends up being\ndereferenced without read_barrier_depends() after it.  It\u0027s broken.\n\nFix it by introducing task_css_set[_check]() which does\nRCU-dereference on task-\u003ecgroups.  task_subsys_state[_check]() is\nreimplemented to directly dereference -\u003esubsys[] of the css_set\nreturned from task_css_set[_check]().\n\nThis removes some of sparse RCU warnings in cgroup.\n\nv2: Fixed unbalanced parenthsis and there\u0027s no need to use\n    rcu_dereference_raw() when !CONFIG_PROVE_RCU.  Both spotted by Li.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "1672d040709b789671c0502e7aac9d632c2f9175",
      "tree": "eceebdf6be0c9769e2c10270b4389c402d4a0df9",
      "parents": [
        "fc76df706123602214da494ba98bccea83e2cfff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 25 18:04:54 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 26 10:39:46 2013 -0700"
      },
      "message": "cgroup: fix cgroupfs_root early destruction path\n\ncgroupfs_root used to have -\u003eactual_subsys_mask in addition to\n-\u003esubsys_mask.  a8a648c4ac (\"cgroup: remove\ncgroup-\u003eactual_subsys_mask\") removed it noting that the subsys_mask is\nessentially temporary and doesn\u0027t belong in cgroupfs_root; however,\nthe patch made it impossible to tell whether a cgroupfs_root actually\nhas the subsystems bound or just have the bits set leading to the\nfollowing BUG when trying to mount with subsystems which are already\nmounted elsewhere.\n\n kernel BUG at kernel/cgroup.c:1038!\n invalid opcode: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC\n ...\n CPU: 1 PID: 7973 Comm: mount Tainted: G        W    3.10.0-rc7-next-20130625-sasha-00011-g1c1dc0e #1105\n task: ffff880fc0ae8000 ti: ffff880fc0b9a000 task.ti: ffff880fc0b9a000\n RIP: 0010:[\u003cffffffff81249b29\u003e]  [\u003cffffffff81249b29\u003e] rebind_subsystems+0x409/0x5f0\n ...\n Call Trace:\n  [\u003cffffffff8124bd4f\u003e] cgroup_kill_sb+0xff/0x210\n  [\u003cffffffff813d21af\u003e] deactivate_locked_super+0x4f/0x90\n  [\u003cffffffff8124f3b3\u003e] cgroup_mount+0x673/0x6e0\n  [\u003cffffffff81257169\u003e] cpuset_mount+0xd9/0x110\n  [\u003cffffffff813d2580\u003e] mount_fs+0xb0/0x2d0\n  [\u003cffffffff81404afd\u003e] vfs_kern_mount+0xbd/0x180\n  [\u003cffffffff814070b5\u003e] do_new_mount+0x145/0x2c0\n  [\u003cffffffff814085d6\u003e] do_mount+0x356/0x3c0\n  [\u003cffffffff8140873d\u003e] SyS_mount+0xfd/0x140\n  [\u003cffffffff854eb600\u003e] tracesys+0xdd/0xe2\n\nWe still want rebind_subsystems() to take added/removed masks, so\nlet\u0027s fix it by marking whether a cgroupfs_root has finished binding\nor not.  Also, document what\u0027s going on around -\u003esubsys_mask\ninitialization so that similar mistakes aren\u0027t repeated.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Sasha Levin \u003csasha.levin@oracle.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "a8a648c4acee2095262f7fa65b0d8a68a03c32e4",
      "tree": "8547cf0629054715b3541b9bbf2de6642ec9deba",
      "parents": [
        "9871bf9550d25e488cd2f0ce958d3f59f17fa720"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jun 24 15:21:47 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jun 24 15:21:47 2013 -0700"
      },
      "message": "cgroup: remove cgroup-\u003eactual_subsys_mask\n\ncgroup curiously has two subsystem masks, -\u003esubsys_mask and\n-\u003eactual_subsys_mask.  The latter only exists because the new target\nsubsys_mask is passed into rebind_subsystems() via @root\u003esubsys_mask.\nrebind_subsystems() needs to know what the current mask is to decide\nhow to reach the target mask so -\u003eactual_subsys_mask is used as the\ntemp location to remember the current state.\n\nAdding a temporary field to a permanent data structure is rather silly\nand can be misleading.  Update rebind_subsystems() to take @added_mask\nand @removed_mask instead and remove @root-\u003eactual_subsys_mask.\n\nThis patch shouldn\u0027t introduce any behavior changes.\n\nv2: Comment and description updated as suggested by Li.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "02c402d98588bdfd3bebd267db574e13afdef722",
      "tree": "1287cb3545c2096f164ce0989f7af7bb416698d7",
      "parents": [
        "03c78cbebb323fc97295ff97dc5e009d56371d57"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jun 24 15:21:47 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jun 24 15:21:47 2013 -0700"
      },
      "message": "cgroup: convert CFTYPE_* flags to enums\n\nPurely cosmetic.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "03c78cbebb323fc97295ff97dc5e009d56371d57",
      "tree": "d6df12606b2eedc81f2da4ce0e3f9e9856ac338b",
      "parents": [
        "00356bd5f0f5e04183fb15805eb29e97c2fc20ac"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Fri Jun 14 11:17:19 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 19 01:22:50 2013 -0700"
      },
      "message": "cgroup: 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": "e8c82d20a9f729cf4b9f73043f7fd4e0872bebfd",
      "tree": "fc45f039baee86a1b867d6c55cb05ea7e8c47288",
      "parents": [
        "794611a1dfcb055d7d41ce133378dd8197d73e38"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Tue Jun 18 18:48:37 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 18 11:14:22 2013 -0700"
      },
      "message": "cgroup: convert cgroup_cft_commit() to use cgroup_for_each_descendant_pre()\n\nWe used root-\u003eallcg_list to iterate cgroup hierarchy because at that time\ncgroup_for_each_descendant_pre() hasn\u0027t been invented.\n\ntj: In cgroup_cfts_commit(), s/@serial_nr/@update_upto/, move the\n    assignment right above releasing cgroup_mutex and explain what\u0027s\n    going on there.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "6db8e85c5c1f89cd0183b76dab027c81009f129f",
      "tree": "6195edbc8abb6645d39a4986fd2d48c89bbefa92",
      "parents": [
        "f63674fd0d6afa1ba24309aee1f8c60195d39041"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jun 14 11:18:22 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 18 08:14:23 2013 -0700"
      },
      "message": "cgroup: disallow rename(2) if sane_behavior\n\ncgroup\u0027s rename(2) isn\u0027t a proper migration implementation - it can\u0027t\nmove the cgroup to a different parent in the hierarchy.  All it can do\nis swapping the name string for that cgroup.  This isn\u0027t useful and\ncan mislead users to think that cgroup supports proper cgroup-level\nmigration.  Disallow rename(2) if sane_behavior.\n\nv2: Fail with -EPERM instead of -EINVAL so that it matches the vfs\n    return value when -\u003erename is not implemented as suggested by Li.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "f63674fd0d6afa1ba24309aee1f8c60195d39041",
      "tree": "032c58b8c71a984c6313abd64091ec2905bb770f",
      "parents": [
        "d3daf28da16a30af95bfb303189a634a87606725"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 19:58:38 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 20:02:26 2013 -0700"
      },
      "message": "cgroup: update sane_behavior documentation\n\nf12dc02014 (\"cgroup: mark \"tasks\" cgroup file as insane\") and\ncc5943a781 (\"cgroup: mark \"notify_on_release\" and \"release_agent\"\ncgroup files insane\") forgot to update the changed behavior\ndocumentation in cgroup.h.  Update it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "d3daf28da16a30af95bfb303189a634a87606725",
      "tree": "d73530e2b759b2f180daec0814124e71e8bb149b",
      "parents": [
        "2b0e53a7c8a6972755c0f0152d7fad2289fdc5eb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 19:39:16 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 19:43:12 2013 -0700"
      },
      "message": "cgroup: use percpu refcnt for cgroup_subsys_states\n\nA css (cgroup_subsys_state) is how each cgroup is represented to a\ncontroller.  As such, it can be used in hot paths across the various\nsubsystems different controllers are associated with.\n\nOne of the common operations is reference counting, which up until now\nhas been implemented using a global atomic counter and can have\nsignificant adverse impact on scalability.  For example, css refcnt\ncan be gotten and put multiple times by blkcg for each IO request.\nFor highops configurations which try to do as much per-cpu as\npossible, the global frequent refcnting can be very expensive.\n\nIn general, given the various and hugely diverse paths css\u0027s end up\nbeing used from, we need to make it cheap and highly scalable.  In its\nusage, css refcnting isn\u0027t very different from module refcnting.\n\nThis patch converts css refcnting to use the recently added\npercpu_ref.  css_get/tryget/put() directly maps to the matching\npercpu_ref operations and the deactivation logic is no longer\nnecessary as percpu_ref already has refcnt killing.\n\nThe only complication is that as the refcnt is per-cpu,\npercpu_ref_kill() in itself doesn\u0027t ensure that further tryget\noperations will fail, which we need to guarantee before invoking\n-\u003ecss_offline()\u0027s.  This is resolved collecting kill confirmation\nusing percpu_ref_kill_and_confirm() and initiating the offline phase\nof destruction after all css refcnt\u0027s are confirmed to be seen as\nkilled on all CPUs.  The previous patches already splitted destruction\ninto two phases, so percpu_ref_kill_and_confirm() can be hooked up\neasily.\n\nThis patch removes css_refcnt() which is used for rcu dereference\nsanity check in css_id().  While we can add a percpu refcnt API to ask\nthe same question, css_id() itself is scheduled to be removed fairly\nsoon, so let\u0027s not bother with it.  Just drop the sanity check and use\nrcu_dereference_raw() instead.\n\nv2: - init_cgroup_css() was calling percpu_ref_init() without checking\n      the return value.  This causes two problems - the obvious lack\n      of error handling and percpu_ref_init() being called from\n      cgroup_init_subsys() before the allocators are up, which\n      triggers warnings but doesn\u0027t cause actual problems as the\n      refcnt isn\u0027t used for roots anyway.  Fix both by moving\n      percpu_ref_init() to cgroup_create().\n\n    - The base references were put too early by\n      percpu_ref_kill_and_confirm() and cgroup_offline_fn() put the\n      refs one extra time.  This wasn\u0027t noticeable because css\u0027s go\n      through another RCU grace period before being freed.  Update\n      cgroup_destroy_locked() to grab an extra reference before\n      killing the refcnts.  This problem was noticed by Kent.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: \"Alasdair G. Kergon\" \u003cagk@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: Glauber Costa \u003cglommer@gmail.com\u003e\n"
    },
    {
      "commit": "ea15f8ccdb430af1e8bc9b4e19a230eb4c356777",
      "tree": "e75aa3f5ddac2a7092c0f16361d72f9b25232832",
      "parents": [
        "455050d23e1bfc47ca98e943ad5b2f3a9bbe45fb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 19:27:42 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 19:27:42 2013 -0700"
      },
      "message": "cgroup: split cgroup destruction into two steps\n\nSplit cgroup_destroy_locked() into two steps and put the latter half\ninto cgroup_offline_fn() which is executed from a work item.  The\nlatter half is responsible for offlining the css\u0027s, removing the\ncgroup from internal lists, and propagating release notification to\nthe parent.  The separation is to allow using percpu refcnt for css.\n\nNote that this allows for other cgroup operations to happen between\nthe first and second halves of destruction, including creating a new\ncgroup with the same name.  As the target cgroup is marked DEAD in the\nfirst half and cgroup internals don\u0027t care about the names of cgroups,\nthis should be fine.  A comment explaining this will be added by the\nnext patch which implements the actual percpu refcnting.\n\nAs RCU freeing is guaranteed to happen after the second step of\ndestruction, we can use the same work item for both.  This patch\nrenames cgroup-\u003efree_work to -\u003edestroy_work and uses it for both\npurposes.  INIT_WORK() is now performed right before queueing the work\nitem.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "6f3d828f0fb7fdaffc6f32cb8a1cb7fcf8824598",
      "tree": "662fa290a077ebe5113c877040cb4b891b72d311",
      "parents": [
        "ddd69148bdc45e5e3e55bfde3571daecd5a96d75"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 12 21:04:55 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 10:55:18 2013 -0700"
      },
      "message": "cgroup: remove cgroup-\u003ecount and use\n\ncgroup-\u003ecount tracks the number of css_sets associated with the cgroup\nand used only to verify that no css_set is associated when the cgroup\nis being destroyed.  It\u0027s superflous as the destruction path can\nsimply check whether cgroup-\u003ecset_links is empty instead.\n\nDrop cgroup-\u003ecount and check -\u003ecset_links directly from\ncgroup_destroy_locked().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "54766d4a1d3d6f84ff8fa475cd8f165c0a0000eb",
      "tree": "8a897b12cfe0f2e373eceffd3eddb095efd23844",
      "parents": [
        "5de0107e634ce862f16360139709d9d3a656463e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 12 21:04:53 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 10:55:18 2013 -0700"
      },
      "message": "cgroup: rename CGRP_REMOVED to CGRP_DEAD\n\nWe will add another flag indicating that the cgroup is in the process\nof being killed.  REMOVING / REMOVED is more difficult to distinguish\nand cgroup_is_removing()/cgroup_is_removed() are a bit awkward.  Also,\nlater percpu_ref usage will involve \"kill\"ing the refcnt.\n\n s/CGRP_REMOVED/CGRP_DEAD/\n s/cgroup_is_removed()/cgroup_is_dead()\n\nThis patch is purely cosmetic.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "5de0107e634ce862f16360139709d9d3a656463e",
      "tree": "07e964c35fae8a82fa86275d1c46517403096f06",
      "parents": [
        "f4f4be2bd2889c69a8698edef8dbfd4f6759aa87"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 12 21:04:52 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 10:55:17 2013 -0700"
      },
      "message": "cgroup: clean up css_[try]get() and css_put()\n\n* __css_get() isn\u0027t used by anyone.  Fold it into css_get().\n\n* Add proper function comments to all css reference functions.\n\nThis patch is purely cosmetic.\n\nv2: Typo fix as per Li.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "69d0206c793a17431eacee2694ee7a4b25df76b7",
      "tree": "f242ce2e576886a18bec4ff6adc9cd7ba9bbe722",
      "parents": [
        "5abb8855734fd7b3fa7f91c13916d0e35d99763c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 12 21:04:50 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 10:55:17 2013 -0700"
      },
      "message": "cgroup: bring some sanity to naming around cg_cgroup_link\n\ncgroups and css_sets are mapped M:N and this M:N mapping is\nrepresented by struct cg_cgroup_link which forms linked lists on both\nsides.  The naming around this mapping is already confusing and struct\ncg_cgroup_link exacerbates the situation quite a bit.\n\n\u003eFrom cgroup side, it starts off -\u003ecss_sets and runs through\n-\u003ecgrp_link_list.  From css_set side, it starts off -\u003ecg_links and\nruns through -\u003ecg_link_list.  This is rather reversed as\ncgrp_link_list is used to iterate css_sets and cg_link_list cgroups.\nAlso, this is the only place which is still using the confusing \"cg\"\nfor css_sets.  This patch cleans it up a bit.\n\n* s/cgroup-\u003ecss_sets/cgroup-\u003ecset_links/\n  s/css_set-\u003ecg_links/css_set-\u003ecgrp_links/\n  s/cgroup_iter-\u003ecg_link/cgroup_iter-\u003ecset_link/\n\n* s/cg_cgroup_link/cgrp_cset_link/\n\n* s/cgrp_cset_link-\u003ecg/cgrp_cset_link-\u003ecset/\n  s/cgrp_cset_link-\u003ecgrp_link_list/cgrp_cset_link-\u003ecset_link/\n  s/cgrp_cset_link-\u003ecg_link_list/cgrp_cset_link-\u003ecgrp_link/\n\n* s/init_css_set_link/init_cgrp_cset_link/\n  s/free_cg_links/free_cgrp_cset_links/\n  s/allocate_cg_links/allocate_cgrp_cset_links/\n\n* s/cgl[12]/link[12]/ in compare_css_sets()\n\n* s/saved_link/tmp_link/ s/tmp/tmp_links/ and a couple similar\n  adustments.\n\n* Comment and whiteline adjustments.\n\nAfter the changes, we have\n\n\tlist_for_each_entry(link, \u0026cont-\u003ecset_links, cset_link) {\n\t\tstruct css_set *cset \u003d link-\u003ecset;\n\ninstead of\n\n\tlist_for_each_entry(link, \u0026cont-\u003ecss_sets, cgrp_link_list) {\n\t\tstruct css_set *cset \u003d link-\u003ecg;\n\nThis patch is purely cosmetic.\n\nv2: Fix broken sentences in the patch description.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "3fc3db9a3ae0ce108badf31a4a00e41b4236f5fc",
      "tree": "7067660f54e2c407cfd705fc3c36a14a6d9820dd",
      "parents": [
        "d5c56ced775f6bdc32b689b01c9c4f9b66e18610"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 12 21:04:48 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 13 10:55:17 2013 -0700"
      },
      "message": "cgroup: remove now unused css_depth()\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\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": "75501a6d59e989e5c286716e5b3b66ace4660e83",
      "tree": "087af4f93bba2257ae139c5e4a0f3b850954ed81",
      "parents": [
        "53fa5261747a90746531e8a1c81eeb78fedc2f71"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri May 24 10:55:38 2013 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri May 24 10:55:38 2013 +0900"
      },
      "message": "cgroup: update iterators to use cgroup_next_sibling()\n\nThis patch converts cgroup_for_each_child(),\ncgroup_next_descendant_pre/post() and thus\ncgroup_for_each_descendant_pre/post() to use cgroup_next_sibling()\ninstead of manually dereferencing -\u003esibling.next.\n\nThe only reason the iterators couldn\u0027t allow dropping RCU read lock\nwhile iteration is in progress was because they couldn\u0027t determine the\nnext sibling safely once RCU read lock is dropped.  Using\ncgroup_next_sibling() removes that problem and enables all iterators\nto allow dropping RCU read lock in the middle.  Comments are updated\naccordingly.\n\nThis makes the iterators easier to use and will simplify controllers.\n\nNote that @cgroup argument is renamed to @cgrp in\ncgroup_for_each_child() because it conflicts with \"struct cgroup\" used\nin the new macro body.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Serge E. Hallyn \u003cserge.hallyn@ubuntu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\n"
    },
    {
      "commit": "53fa5261747a90746531e8a1c81eeb78fedc2f71",
      "tree": "b615f4ac453b9f40d412b5ba22498b827902f438",
      "parents": [
        "bdc7119f1bdd0632d42f435941dc290216a436e7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri May 24 10:55:38 2013 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri May 24 10:55:38 2013 +0900"
      },
      "message": "cgroup: add cgroup-\u003eserial_nr and implement cgroup_next_sibling()\n\nCurrently, there\u0027s no easy way to find out the next sibling cgroup\nunless it\u0027s known that the current cgroup is accessed from the\nparent\u0027s children list in a single RCU critical section.  This in turn\nforces all iterators to require whole iteration to be enclosed in a\nsingle RCU critical section, which sometimes is too restrictive.  This\npatch implements cgroup_next_sibling() which can reliably determine\nthe next sibling regardless of the state of the current cgroup as long\nas it\u0027s accessible.\n\nIt currently is impossible to determine the next sibling after\ndropping RCU read lock because the cgroup being iterated could be\nremoved anytime and if RCU read lock is dropped, nothing guarantess\nits -\u003esibling.next pointer is accessible.  A removed cgroup would\ncontinue to point to its next sibling for RCU accesses but stop\nreceiving updates from the sibling.  IOW, the next sibling could be\nremoved and then complete its grace period while RCU read lock is\ndropped, making it unsafe to dereference -\u003esibling.next after dropping\nand re-acquiring RCU read lock.\n\nThis can be solved by adding a way to traverse to the next sibling\nwithout dereferencing -\u003esibling.next.  This patch adds a monotonically\nincreasing cgroup serial number, cgroup-\u003eserial_nr, which guarantees\nthat all cgroup-\u003echildren lists are kept in increasing serial_nr\norder.  A new function, cgroup_next_sibling(), is implemented, which,\nif CGRP_REMOVED is not set on the current cgroup, follows\n-\u003esibling.next; otherwise, traverses the parent\u0027s -\u003echildren list\nuntil it sees a sibling with higher -\u003eserial_nr.\n\nThis allows the function to always return the next sibling regardless\nof the state of the current cgroup without adding overhead in the fast\npath.\n\nFurther patches will update the iterators to use cgroup_next_sibling()\nso that they allow dropping RCU read lock and blocking while iteration\nis in progress which in turn will be used to simplify controllers.\n\nv2: Typo fix as per Serge.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Serge E. Hallyn \u003cserge.hallyn@ubuntu.com\u003e\n"
    },
    {
      "commit": "bdc7119f1bdd0632d42f435941dc290216a436e7",
      "tree": "3e33099f7e22b637e3ffa9f558938e92e94fd9a6",
      "parents": [
        "3f33e64f4a212771a0b5c63eddaa7f81e65223e3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri May 24 10:55:38 2013 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri May 24 10:55:38 2013 +0900"
      },
      "message": "cgroup: make cgroup_is_removed() static\n\ncgroup_is_removed() no longer has external users and it shouldn\u0027t grow\nany - controllers should deal with cgroup_subsys_state on/offline\nstate instead of cgroup removal state.  Make it static.\n\nWhile at it, make it return bool.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "3f33e64f4a212771a0b5c63eddaa7f81e65223e3",
      "tree": "a212de935bb984849a5bf3bed3618dc9975203db",
      "parents": [
        "23958e729e7029678e746bf8f4094c8863a79c3d",
        "7805d000db30a3787a4c969bab6ae4d8a5fd8ce6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri May 24 10:53:09 2013 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri May 24 10:53:09 2013 +0900"
      },
      "message": "Merge branch \u0027for-3.10-fixes\u0027 into for-3.11\n\nMerging to receive 7805d000db (\"cgroup: fix a subtle bug in descendant\npre-order walk\") so that further iterator updates can build upon it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "7805d000db30a3787a4c969bab6ae4d8a5fd8ce6",
      "tree": "5178e1adaa4f398d2c1367fb38633191e81764e5",
      "parents": [
        "d6cbf35dac8a3dadb9103379820c96d7c85df3d9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri May 24 10:50:24 2013 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri May 24 10:50:24 2013 +0900"
      },
      "message": "cgroup: fix a subtle bug in descendant pre-order walk\n\nWhen cgroup_next_descendant_pre() initiates a walk, it checks whether\nthe subtree root doesn\u0027t have any children and if not returns NULL.\nLater code assumes that the subtree isn\u0027t empty.  This is broken\nbecause the subtree may become empty inbetween, which can lead to the\ntraversal escaping the subtree by walking to the sibling of the\nsubtree root.\n\nThere\u0027s no reason to have the early exit path.  Remove it along with\nthe later assumption that the subtree isn\u0027t empty.  This simplifies\nthe code a bit and fixes the subtle bug.\n\nWhile at it, fix the comment of cgroup_for_each_descendant_pre() which\nwas incorrectly referring to -\u003ecss_offline() instead of\n-\u003ecss_online().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "9138125beabbb76b4a373d4a619870f6f5d86fc5",
      "tree": "61ccabf042ff21b81c6dcd074ea8edeb77fedfa8",
      "parents": [
        "693e751e70843c29884cde326016e746fa16073a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "message": "blk-throttle: implement proper hierarchy support\n\nWith the recent updates, blk-throttle is finally ready for proper\nhierarchy support.  Dispatching now honors service_queue-\u003eparent_sq\nand propagates correctly.  The only thing missing is setting\n-\u003eparent_sq correctly so that throtl_grp hierarchy matches the cgroup\nhierarchy.\n\nThis patch updates throtl_pd_init() such that service_queues form the\nsame hierarchy as the cgroup hierarchy if sane_behavior is enabled.\nAs this concludes proper hierarchy support for blkcg, the shameful\n.broken_hierarchy tag is removed from blkio_subsys.\n\nv2: Updated blkio-controller.txt as suggested by Vivek.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "23958e729e7029678e746bf8f4094c8863a79c3d",
      "tree": "32bc3679396093ae3d456b4504e52cf71267f3fb",
      "parents": [
        "857a2beb09ab83e9a8185821ae16db7dfbe8b837"
      ],
      "author": {
        "name": "Greg KH",
        "email": "gregkh@linuxfoundation.org",
        "time": "Fri May 03 16:26:59 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 11:50:42 2013 -0700"
      },
      "message": "cgroup.h: remove some functions that are now gone\n\ncgroup_lock() and cgroup_unlock() are now no longer exported, so fix\ncgroup.h to not declare them if CONFIG_CGROUPS is not enabled.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "857a2beb09ab83e9a8185821ae16db7dfbe8b837",
      "tree": "2ea1456855d7046dd5503cd7a0a6c78e804aa299",
      "parents": [
        "1a574231669f8c3065c83974e9557fcbbd94b8a6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 14 20:50:08 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 11:42:07 2013 -0700"
      },
      "message": "cgroup: implement task_cgroup_path_from_hierarchy()\n\nkdbus folks want a sane way to determine the cgroup path that a given\ntask belongs to on a given hierarchy, which is a reasonble thing to\nexpect from cgroup core.\n\nImplement task_cgroup_path_from_hierarchy().\n\nv2: Dropped unnecessary NULL check on the return value of\n    task_cgroup_from_root() as suggested by Li Zefan.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Greg Kroah-Hartman \u003cgreg@kroah.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Kay Sievers \u003ckay@vrfy.org\u003e\nCc: Lennart Poettering \u003clennart@poettering.net\u003e\nCc: Daniel Mack \u003cdaniel@zonque.org\u003e\n"
    },
    {
      "commit": "a27bb332c04cec8c4afd7912df0dc7890db27560",
      "tree": "86e6c41c2012f24c40ab455e2449d76346ae8956",
      "parents": [
        "41ef4eb8eef8d06bc1399e7b00c940d771554711"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "koverstreet@google.com",
        "time": "Tue May 07 16:19:08 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 07 20:16:25 2013 -0700"
      },
      "message": "aio: don\u0027t include aio.h in sched.h\n\nFaster kernel compiles by way of fewer unnecessary includes.\n\n[akpm@linux-foundation.org: fix fallout]\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCc: Zach Brown \u003czab@redhat.com\u003e\nCc: Felipe Balbi \u003cbalbi@ti.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Asai Thambi S P \u003casamymuthupa@micron.com\u003e\nCc: Selvan Mani \u003csmani@micron.com\u003e\nCc: Sam Bradshaw \u003csbradshaw@micron.com\u003e\nCc: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nReviewed-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.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": "16fa94b532b1958f508e07eca1a9256351241fbc",
      "tree": "90012a7b7fe2b8cf96f6f5ec12490e0c5e152291",
      "parents": [
        "e0972916e8fe943f342b0dd1c9d43dbf5bc261c2",
        "25f55d9d01ad7a7ad248fd5af1d22675ffd202c5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 30 07:43:28 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 30 07:43:28 2013 -0700"
      },
      "message": "Merge branch \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull scheduler changes from Ingo Molnar:\n \"The main changes in this development cycle were:\n\n   - full dynticks preparatory work by Frederic Weisbecker\n\n   - factor out the cpu time accounting code better, by Li Zefan\n\n   - multi-CPU load balancer cleanups and improvements by Joonsoo Kim\n\n   - various smaller fixes and cleanups\"\n\n* \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (45 commits)\n  sched: Fix init NOHZ_IDLE flag\n  sched: Prevent to re-select dst-cpu in load_balance()\n  sched: Rename load_balance_tmpmask to load_balance_mask\n  sched: Move up affinity check to mitigate useless redoing overhead\n  sched: Don\u0027t consider other cpus in our group in case of NEWLY_IDLE\n  sched: Explicitly cpu_idle_type checking in rebalance_domains()\n  sched: Change position of resched_cpu() in load_balance()\n  sched: Fix wrong rq\u0027s runnable_avg update with rt tasks\n  sched: Document task_struct::personality field\n  sched/cpuacct/UML: Fix header file dependency bug on the UML build\n  cgroup: Kill subsys.active flag\n  sched/cpuacct: No need to check subsys active state\n  sched/cpuacct: Initialize cpuacct subsystem earlier\n  sched/cpuacct: Initialize root cpuacct earlier\n  sched/cpuacct: Allocate per_cpu cpuusage for root cpuacct statically\n  sched/cpuacct: Clean up cpuacct.h\n  sched/cpuacct: Remove redundant NULL checks in cpuacct_acount_field()\n  sched/cpuacct: Remove redundant NULL checks in cpuacct_charge()\n  sched/cpuacct: Add cpuacct_acount_field()\n  sched/cpuacct: Add cpuacct_init()\n  ...\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": "6d2488f64a240191f0733c1f32d73607916b01b7",
      "tree": "8e83c602ae560623ee9a8fc2959ce8d61e52eb03",
      "parents": [
        "16248d8fe65ea116cc30b915e05a1c29496da120"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Mon Apr 29 15:07:21 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 29 15:54:33 2013 -0700"
      },
      "message": "cgroup: remove css_get_next\n\nNow that we have generic and well ordered cgroup tree walkers there is\nno need to keep css_get_next in the place.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "712317ad97f41e738e1a19aa0a6392a78a84094e",
      "tree": "66988449eb8cca53e032eed6ddc1169f9296eeac",
      "parents": [
        "e57d5cf2f894e3f2727f8cf74bed0bc81cae70c8"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Thu Apr 18 23:09:52 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 18 23:11:40 2013 -0700"
      },
      "message": "cgroup: fix broken file xattrs\n\nWe should store file xattrs in struct cfent instead of struct cftype,\nbecause cftype is a type while cfent is object instance of cftype.\n\nFor example each cgroup has a tasks file, and each tasks file is\nassociated with a uniq cfent, but all those files share the same\nstruct cftype.\n\nAlexey Kodanev reported a crash, which can be reproduced:\n\n  # mount -t cgroup -o xattr /sys/fs/cgroup\n  # mkdir /sys/fs/cgroup/test\n  # setfattr -n trusted.value -v test_value /sys/fs/cgroup/tasks\n  # rmdir /sys/fs/cgroup/test\n  # umount /sys/fs/cgroup\n  oops!\n\nIn this case, simple_xattrs_free() will free the same struct simple_xattrs\ntwice.\n\ntj: Dropped unused local variable @cft from cgroup_diput().\n\nCc: \u003cstable@vger.kernel.org\u003e # 3.8.x\nReported-by: Alexey Kodanev \u003calexey.kodanev@oracle.com\u003e\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "f00baae7ad6c5f1503528efa852f0be8e9513f0e",
      "tree": "6d07f953aa06f01b67ed5161073778118b90e6b9",
      "parents": [
        "05fb22ec5456a472a5eadcaacb3e51eca1f8c79c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Apr 15 13:41:15 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Apr 15 13:46:27 2013 -0700"
      },
      "message": "memcg: force use_hierarchy if sane_behavior\n\nTurn on use_hierarchy by default if sane_behavior is specified and\ndon\u0027t create .use_hierarchy file.\n\nIt is debatable whether to remove .use_hierarchy file or make it ro as\nthe former could make transition easier in certain cases; however, the\nbehavior changes which will be gated by sane_behavior are intensive\nincluding changing basic meaning of certain control knobs in a few\ncontrollers and I don\u0027t really think keeping this piece would make\nthings easier in any noticeable way, so let\u0027s remove it.\n\nv2: Explain that mem_cgroup_bind() doesn\u0027t have to worry about\n    children as suggested by Michal Hocko.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Serge E. Hallyn \u003cserge.hallyn@ubuntu.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "05fb22ec5456a472a5eadcaacb3e51eca1f8c79c",
      "tree": "37be0dd3b40b8bf6fc3f4933703543423c39d311",
      "parents": [
        "873fe09ea5df6ccf6bb34811d8c9992aacb67598"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Mon Apr 15 14:25:05 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 14 23:26:10 2013 -0700"
      },
      "message": "cgroup: remove cgrp-\u003etop_cgroup\n\nIt\u0027s not used, and it can be retrieved via cgrp-\u003eroot-\u003etop_cgroup.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "873fe09ea5df6ccf6bb34811d8c9992aacb67598",
      "tree": "ef8d3afc31460ed9fdfd16e70e4c0916d42bcbd6",
      "parents": [
        "25a7e6848db76e22677aff202d9c4ef3503be15b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 14 20:15:26 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 14 20:15:26 2013 -0700"
      },
      "message": "cgroup: introduce sane_behavior mount option\n\nIt\u0027s a sad fact that at this point various cgroup controllers are\ncarrying so many idiosyncrasies and pure insanities that it simply\nisn\u0027t possible to reach any sort of sane consistent behavior while\nmaintaining staying fully compatible with what already has been\nexposed to userland.\n\nAs we can\u0027t break exposed userland interface, transitioning to sane\nbehaviors can only be done in steps while maintaining backwards\ncompatibility.  This patch introduces a new mount option -\n__DEVEL__sane_behavior - which disables crazy features and enforces\nconsistent behaviors in cgroup core proper and various controllers.\nAs exactly which behaviors it changes are still being determined, the\nmount option, at this point, is useful only for development of the new\nbehaviors.  As such, the mount option is prefixed with __DEVEL__ and\ngenerates a warning message when used.\n\nEventually, once we get to the point where all controller\u0027s behaviors\nare consistent enough to implement unified hierarchy, the __DEVEL__\nprefix will be dropped, and more importantly, unified-hierarchy will\nenforce sane_behavior by default.  Maybe we\u0027ll able to completely drop\nthe crazy stuff after a while, maybe not, but we at least have a\nstrategy to move on to saner behaviors.\n\nThis patch introduces the mount option and changes the following\nbehaviors in cgroup core.\n\n* Mount options \"noprefix\" and \"clone_children\" are disallowed.  Also,\n  cgroupfs file cgroup.clone_children is not created.\n\n* When mounting an existing superblock, mount options should match.\n  This is currently pretty crazy.  If one mounts a cgroup, creates a\n  subdirectory, unmounts it and then mount it again with different\n  option, it looks like the new options are applied but they aren\u0027t.\n\n* Remount is disallowed.\n\nThe behaviors changes are documented in the comment above\nCGRP_ROOT_SANE_BEHAVIOR enum and will be expanded as different\ncontrollers are converted and planned improvements progress.\n\nv2: Dropped unnecessary explicit file permission setting sane_behavior\n    cftype entry as suggested by Li Zefan.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Serge E. Hallyn \u003cserge.hallyn@ubuntu.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "25a7e6848db76e22677aff202d9c4ef3503be15b",
      "tree": "e3f944266f4a6ded61ce5d88a5c2c9c33794c366",
      "parents": [
        "9343862945fdd3dd5cb7648bb24cabe40faa9ad9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 14 20:15:25 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 14 20:15:25 2013 -0700"
      },
      "message": "move cgroupfs_root to include/linux/cgroup.h\n\nWhile controllers shouldn\u0027t be accessing cgroupfs_root directly, it\nbeing hidden inside kern/cgroup.c makes somethings pretty silly.  This\nmakes routing hierarchy-wide settings which need to be visible to\ncontrollers cumbersome.\n\nWe\u0027re gonna add another hierarchy-wide setting which needs to be\naccessed from controllers.  Move cgroupfs_root and its flags to the\nheader file so that we can access root settings with inline helpers.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Serge E. Hallyn \u003cserge.hallyn@ubuntu.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "26d5bbe5ba2073fc7ef9e69a55543b2376f5bad0",
      "tree": "d4dcfdec4d3046bb3cee35864264669d44a3a3dc",
      "parents": [
        "ef824fa129b7579f56b92d466ecda2e378879806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Apr 12 10:29:04 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Apr 12 10:29:04 2013 -0700"
      },
      "message": "Revert \"cgroup: remove bind() method from cgroup_subsys.\"\n\nThis reverts commit 84cfb6ab484b442d5115eb3baf9db7d74a3ea626.  There\nare scheduled changes which make use of the removed callback.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Rami Rosen \u003cramirose@gmail.com\u003e\nCc: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "78574cf981cd3d9ae9f6adbd466a772310ec24ff",
      "tree": "50e9da6e2e201663a22e02240d927592e893780d",
      "parents": [
        "415cf07a1c1c65249773330434878ae7bcd92d0f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Mon Apr 08 19:00:38 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Apr 10 11:07:08 2013 -0700"
      },
      "message": "cgroup: implement cgroup_is_descendant()\n\nA couple controllers want to determine whether two cgroups are in\nancestor/descendant relationship.  As it\u0027s more likely that the\ndescendant is the primary subject of interest and there are other\noperations focusing on the descendants, let\u0027s ask is_descendent rather\nthan is_ancestor.\n\nImplementation is trivial as the previous patch guarantees that all\nancestors of a cgroup stay accessible as long as the cgroup is\naccessible.\n\ntj: Removed depth optimization, renamed from cgroup_is_ancestor(),\n    rewrote descriptions.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "84cfb6ab484b442d5115eb3baf9db7d74a3ea626",
      "tree": "3a3d52372b7b6f0e42662103baa8f0ef24789bf2",
      "parents": [
        "8adf12b0ffd0a10340bab355e586f8533a69630d"
      ],
      "author": {
        "name": "Rami Rosen",
        "email": "ramirose@gmail.com",
        "time": "Wed Apr 10 14:41:17 2013 +0300"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Apr 10 10:46:59 2013 -0700"
      },
      "message": "cgroup: remove bind() method from cgroup_subsys.\n\nThe bind() method of cgroup_subsys is not used in any of the\ncontrollers (cpuset, freezer, blkio, net_cls, memcg, net_prio,\ndevices, perf, hugetlb, cpu and cpuacct)\n\ntj: Removed the entry on -\u003ebind() from\n    Documentation/cgroups/cgroups.txt.  Also updated a couple\n    paragraphs which were suggesting that dynamic re-binding may be\n    implemented.  It\u0027s not gonna.\n\nSigned-off-by: Rami Rosen \u003cramirose@gmail.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "479f614110b889d5783acdaec865ede3cdb96b97",
      "tree": "d125a16e1118d7d42125d764843a3869e2f60d4a",
      "parents": [
        "a2b0ae25fc8bfeeb4022b8e847ab811b3c8368d1"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Fri Mar 29 14:44:42 2013 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed Apr 10 13:54:22 2013 +0200"
      },
      "message": "cgroup: Kill subsys.active flag\n\nThe only user was cpuacct.\n\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/5155385A.4040207@huawei.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "2219449a65ace0290cd9c2260ff337e326b8be8a",
      "tree": "ca93a1567a9e07adec09a3384d23536dca44603f",
      "parents": [
        "47cfcd0922454e49f4923b1e2d31a5bf199237c3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 07 09:29:51 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 07 09:29:51 2013 -0700"
      },
      "message": "cgroup: remove cgroup_lock_is_held()\n\nWe don\u0027t want controllers to assume that the information is officially\navailable and do funky things with it.\n\nThe only user is task_subsys_state_check() which uses it to verify RCU\naccess context.  We can move cgroup_lock_is_held() inside\nCONFIG_PROVE_RCU but that doesn\u0027t add meaningful protection compared\nto conditionally exposing cgroup_mutex.\n\nRemove cgroup_lock_is_held(), export cgroup_mutex iff CONFIG_PROVE_RCU\nand use lockdep_is_held() directly on the mutex in\ntask_subsys_state_check().\n\nWhile at it, add parentheses around macro arguments in\ntask_subsys_state_check().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "b9777cf8d7c7854c3c38bd6621d993b85c2afcdf",
      "tree": "d3f0275df187bb01a4262971f8fea6f4dbf7f26d",
      "parents": [
        "7ae1bad99e27b8838d480a24edf4646a2fc547df"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 07 09:29:51 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Apr 07 09:29:51 2013 -0700"
      },
      "message": "cgroup: unexport locking interface and cgroup_attach_task()\n\nNow that all external cgroup_lock() users are gone, we can finally\nunexport the locking interface and prevent future abuse of\ncgroup_mutex.\n\nMake cgroup_[un]lock() and cgroup_lock_live_group() static.  Also,\ncgroup_attach_task() doesn\u0027t have any user left and can\u0027t be used\nwithout locking interface anyway.  Make it static too.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\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": "e7b2dcc52b0e2d598a469f01cc460ccdde6869f2",
      "tree": "c716655a75a9f91de5f21f94fe53e96fbf680fe9",
      "parents": [
        "cfb5966bef85412dab9c93553db10b3e99ac32e8"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Tue Mar 12 15:35:58 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 12 15:35:58 2013 -0700"
      },
      "message": "cgroup: remove cgroup_is_descendant()\n\nIt was used by ns cgroup, and ns cgroup was removed long ago.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "7d8e0bf56a66bab08d2f316dd87e56c08cecb899",
      "tree": "be35c2daec953f0c98241c16311879dd45bc4859",
      "parents": [
        "f50daa704f36a6544a902c52b6cf37b0493dfc5d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Tue Mar 05 10:57:03 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 05 09:33:25 2013 -0800"
      },
      "message": "cgroup: avoid accessing modular cgroup subsys structure without locking\n\nsubsys[i] is set to NULL in cgroup_unload_subsys() at modular unload,\nand that\u0027s protected by cgroup_mutex, and then the memory *subsys[i]\nresides will be freed.\n\nSo this is unsafe without any locking:\n\n  if (!ss || ss-\u003emodule)\n  ...\n\nv2:\n- add a comment for enum cgroup_subsys_id\n- simplify the comment in cgroup_exit()\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "65dff759d2948cf18e2029fc5c0c595b8b7da3a5",
      "tree": "2904e81e44bb939413f406bbb2056e88df008f72",
      "parents": [
        "6dbe51c251a327e012439c4772097a13df43c5b8"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Fri Mar 01 15:01:56 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Mar 04 09:50:08 2013 -0800"
      },
      "message": "cgroup: fix cgroup_path() 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\nAs accessing dentry-\u003ename must be protected by dentry-\u003ed_lock or\nparent inode\u0027s i_mutex, while on the other hand cgroup-path() can\nbe called with some irq-safe spinlocks held, we can\u0027t generate\ncgroup path using dentry-\u003ed_name.\n\nAlternatively we make a copy of dentry-\u003ed_name and save it in\ncgrp-\u003ename when a cgroup is created, and update cgrp-\u003ename at\nrename().\n\nv5: use flexible array instead of zero-size array.\nv4: - allocate root_cgroup_name and all root_cgroup-\u003ename points to it.\n    - add cgroup_name() wrapper.\nv3: use kfree_rcu() instead of synchronize_rcu() in user-visible path.\nv2: make cgrp-\u003ename RCU safe.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "be44562613851235d801d41d5b3976dc4333f622",
      "tree": "ed68df6a444cd106b04f96645c03a6f97fcc2e0c",
      "parents": [
        "86a3db5643c7d29bb36ca85c7a4bb67ad4d88d77"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Thu Jan 24 14:31:42 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 24 12:05:18 2013 -0800"
      },
      "message": "cgroup: remove synchronize_rcu() from cgroup_diput()\n\nFree cgroup via call_rcu(). The actual work is done through\nworkqueue.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "12a9d2fef1d35770d3cdc2cd1faabb83c45bc0fa",
      "tree": "a7c50e81a638a156ce8d4f41dcab273397e6e474",
      "parents": [
        "d5b1fe68baa7213f198e5be8cd1a1037258ab2c8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:49:33 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:50:28 2013 -0800"
      },
      "message": "cgroup: implement cgroup_rightmost_descendant()\n\nImplement cgroup_rightmost_descendant() which returns the right most\ndescendant of the specified cgroup.  This can be used to skip the\ncgroup\u0027s subtree while iterating with\ncgroup_for_each_descendant_pre().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "d5b1fe68baa7213f198e5be8cd1a1037258ab2c8",
      "tree": "83d5c15ee51d1b782904f0b238c584f16d17bdec",
      "parents": [
        "d1c3ed669a2d452cacfb48c2d171a1f364dae2ed"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 28 13:18:28 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 07 08:49:16 2013 -0800"
      },
      "message": "cgroup: remove unused dummy cgroup_fork_callbacks()\n\n5edee61ede (\"cgroup: cgroup_subsys-\u003efork() should be called after the\ntask is added to css_set\") removed cgroup_fork_callbacks() but forgot\nto remove its dummy version for !CONFIG_CGROUPS.  Remove it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Herton Ronaldo Krzesinski \u003cherton.krzesinski@canonical.com\u003e\n"
    },
    {
      "commit": "d0b2fdd2a51203f04ea0a5d716e033c15e0231af",
      "tree": "778d37a6aa21db18b7416309a5cbd1d664e9c6e0",
      "parents": [
        "0a950f65e1e64f4e82b4b5507773848ea88bcb8e"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Tue Nov 20 22:06:18 2012 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Nov 20 06:44:58 2012 -0800"
      },
      "message": "cgroup: remove obsolete guarantee from cgroup_task_migrate.\n\n\u0027guarantee\u0027 is already removed from cgroup_task_migrate, so remove\nthe corresponding comments. Some other typos in cgroup are also\nchanged.\n\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "0a950f65e1e64f4e82b4b5507773848ea88bcb8e",
      "tree": "90106ea13abc3cfe9226dc0c7628ccad136f92b4",
      "parents": [
        "033fa1c5f5f73833598a0beb022c0048fb769dad"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 09:02:12 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 09:02:12 2012 -0800"
      },
      "message": "cgroup: add cgroup-\u003eid\n\nWith the introduction of generic cgroup hierarchy iterators, css_id is\nbeing phased out.  It was unnecessarily complex, id\u0027ing the wrong\nthing (cgroups need IDs, not CSSes) and has other oddities like not\nbeing available at -\u003ecss_alloc().\n\nThis patch adds cgroup-\u003eid, which is a simple per-hierarchy\nida-allocated ID which is assigned before -\u003ecss_alloc() and released\nafter -\u003ecss_free().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Neil Horman \u003cnhorman@tuxdriver.com\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": "2260e7fc1f18ad815324605c1ce7d5c6fd9b19a2",
      "tree": "effa76704caa7a6ce40b19de3fa2c3367ac5b431",
      "parents": [
        "92fb97487a7e41b222c1417cabd1d1ab7cc3a48c"
      ],
      "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: s/CGRP_CLONE_CHILDREN/CGRP_CPUSET_CLONE_CHILDREN/\n\nclone_children is only meaningful for cpuset and will stay that way.\nRename the flag to reflect that and update documentation.  Also, drop\nclone_children() wrapper in cgroup.c.  The thin wrapper is used only a\nfew times and one of them will go away soon.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\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": "b1929db42f8a649d9a9e397119f628c27fd4021f",
      "tree": "04c0fa6f056395f8d17b5cd918403547be3f1425",
      "parents": [
        "4b8b47eb0001a89f271d671d959b235faa8f03e2"
      ],
      "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: allow -\u003epost_create() to fail\n\nThere could be cases where controllers want to do initialization\noperations which may fail from -\u003epost_create().  This patch makes\n-\u003epost_create() return -errno to indicate failure and online_css()\nrelay such failures.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\n"
    },
    {
      "commit": "a31f2d3ff7fe20cbe2a143515a7d7c408b29dd0d",
      "tree": "fd9e909ad92609eb189d406c4812325788d25bbc",
      "parents": [
        "42809dd4225b2f3127a4804314a1b33608620d96"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 08:13:37 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 08:13:37 2012 -0800"
      },
      "message": "cgroup: introduce CSS_ONLINE flag and on/offline_css() helpers\n\nNew helpers on/offline_css() respectively wrap -\u003epost_create() and\n-\u003epre_destroy() invocations.  online_css() sets CSS_ONLINE after\n-\u003epost_create() is complete and offline_css() invokes -\u003epre_destroy()\niff CSS_ONLINE is set and clears it while also handling the temporary\ndropping of cgroup_mutex.\n\nThis patch doesn\u0027t introduce any behavior change at the moment but\nwill be used to improve cgroup_create() failure path and allow\n-\u003epost_create() to fail.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "38b53abaa3e0c7e750ef73eee919cf42eee6b134",
      "tree": "1692ce65068d5df48768564548ec7e4ed4b67da5",
      "parents": [
        "febfcef60d4f9457785b45aab548bc7ee5ea158f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 08:13:36 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 08:13:36 2012 -0800"
      },
      "message": "cgroup: make CSS_* flags bit masks instead of bit positions\n\nCurrently, CSS_* flags are defined as bit positions and manipulated\nusing atomic bitops.  There\u0027s no reason to use atomic bitops for them\nand bit positions are clunkier to deal with than bit masks.  Make\nCSS_* bit masks instead and use the usual C bitwise operators to\naccess them.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "febfcef60d4f9457785b45aab548bc7ee5ea158f",
      "tree": "70fab0e8ec07aec4142f1dc228f307e6b1d79de0",
      "parents": [
        "4e139afc22cb98d0d032ffce0285bfcc73ca5217"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 08:13:36 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 08:13:36 2012 -0800"
      },
      "message": "cgroup: cgroup-\u003edentry isn\u0027t a RCU pointer\n\ncgroup-\u003edentry is marked and used as a RCU pointer; however, it isn\u0027t\none - the final dentry put doesn\u0027t go through call_rcu().  cgroup and\ndentry share the same RCU freeing rule via synchronize_rcu() in\ncgroup_diput() (kfree_rcu() used on cgrp is unnecessary).  If cgrp is\naccessible under RCU read lock, so is its dentry and dereferencing\ncgrp-\u003edentry doesn\u0027t need any further RCU protection or annotation.\n\nWhile not being accurate, before the previous patch, the RCU accessors\nserved a purpose as memory barriers - cgroup-\u003edentry used to be\nassigned after the cgroup was made visible to cgroup_path(), so the\nassignment and dereferencing in cgroup_path() needed the memory\nbarrier pair.  Now that list_add_tail_rcu() happens after\ncgroup-\u003edentry is assigned, this no longer is necessary.\n\nRemove the now unnecessary and misleading RCU annotations from\ncgroup-\u003edentry.  To make up for the removal of rcu_dereference_check()\nin cgroup_path(), add an explicit rcu_lockdep_assert(), which asserts\nthe dereference rule of @cgrp, not cgrp-\u003edentry.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "574bd9f7c7c1d32f52dea5488018a6ff79031e22",
      "tree": "f43657afb59dd12fe1eca329acc6caf885507727",
      "parents": [
        "eb6fd5040ee799009173daa49c3e7aa0362167c9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 09 09:12:29 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 09 09:12:29 2012 -0800"
      },
      "message": "cgroup: implement generic child / descendant walk macros\n\nCurrently, cgroup doesn\u0027t provide any generic helper for walking a\ngiven cgroup\u0027s children or descendants.  This patch adds the following\nthree macros.\n\n* cgroup_for_each_child() - walk immediate children of a cgroup.\n\n* cgroup_for_each_descendant_pre() - visit all descendants of a cgroup\n  in pre-order tree traversal.\n\n* cgroup_for_each_descendant_post() - visit all descendants of a\n  cgroup in post-order tree traversal.\n\nAll three only require the user to hold RCU read lock during\ntraversal.  Verifying that each iterated cgroup is online is the\nresponsibility of the user.  When used with proper synchronization,\ncgroup_for_each_descendant_pre() can be used to propagate state\nupdates to descendants in reliable way.  See comments for details.\n\nv2: s/config/state/ in commit message and comments per Michal.  More\n    documentation on synchronization rules.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujisu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "eb6fd5040ee799009173daa49c3e7aa0362167c9",
      "tree": "16d837a4479b25d379b558d850431fb3b7291dd1",
      "parents": [
        "a8638030f668884720b8f4456448d0ce33952b05"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 09 09:12:29 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 09 09:12:29 2012 -0800"
      },
      "message": "cgroup: use rculist ops for cgroup-\u003echildren\n\nUse RCU safe list operations for cgroup-\u003echildren.  This will be used\nto implement cgroup children / descendant walking which can be used by\ncontrollers.\n\nNote that cgroup_create() now puts a new cgroup at the end of the\n-\u003echildren list instead of head.  This isn\u0027t strictly necessary but is\ndone so that the iteration order is more conventional.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "a8638030f668884720b8f4456448d0ce33952b05",
      "tree": "2532b2ef9def879513fad0e304a6a9c98fa798f0",
      "parents": [
        "316eb661f125397d46f16f94e3c81ad3dc4c1233"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 09 09:12:29 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 09 09:12:29 2012 -0800"
      },
      "message": "cgroup: add cgroup_subsys-\u003epost_create()\n\nCurrently, there\u0027s no way for a controller to find out whether a new\ncgroup finished all -\u003ecreate() allocatinos successfully and is\nconsidered \"live\" by cgroup.\n\nThis becomes a problem later when we add generic descendants walking\nto cgroup which can be used by controllers as controllers don\u0027t have a\nsynchronization point where it can synchronize against new cgroups\nappearing in such walks.\n\nThis patch adds -\u003epost_create().  It\u0027s called after all -\u003ecreate()\nsucceeded and the cgroup is linked into the generic cgroup hierarchy.\nThis plays the counterpart of -\u003epre_destroy().\n\nWhen used in combination with the to-be-added generic descendant\niterators, -\u003epost_create() can be used to implement reliable state\ninheritance.  It will be explained with the descendant iterators.\n\nv2: Added a paragraph about its future use w/ descendant iterators per\n    Michal.\n\nv3: Forgot to add -\u003epost_create() invocation to cgroup_load_subsys().\n    Fixed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\n"
    },
    {
      "commit": "1db1e31b1ee3ae126ef98f39083b5f213c7b41bf",
      "tree": "98328124d3b8b08b6db894c79d0e79b3a42417bf",
      "parents": [
        "5d8f72b55c275677865de670fa147ed318191d81",
        "bcf6de1b9129531215d26dd9af8331e84973bc52"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 05 09:21:51 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 05 09:21:51 2012 -0800"
      },
      "message": "Merge branch \u0027cgroup-rmdir-updates\u0027 into cgroup/for-3.8\n\nPull rmdir updates into for-3.8 so that further callback updates can\nbe put on top.  This pull created a trivial conflict between the\nfollowing two commits.\n\n  8c7f6edbda (\"cgroup: mark subsystems with broken hierarchy support and whine if cgroups are nested for them\")\n  ed95779340 (\"cgroup: kill cgroup_subsys-\u003e__DEPRECATED_clear_css_refs\")\n\nThe former added a field to cgroup_subsys and the latter removed one\nfrom it.  They happen to be colocated causing the conflict.  Keeping\nwhat\u0027s added and removing what\u0027s removed resolves the conflict.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "bcf6de1b9129531215d26dd9af8331e84973bc52",
      "tree": "0666760423e4579a50a7752568036a13e0cfa9d5",
      "parents": [
        "9d093cb10eb482adfba6ddc71a0969b78823ee8b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 05 09:16:59 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 05 09:16:59 2012 -0800"
      },
      "message": "cgroup: make -\u003epre_destroy() return void\n\nAll -\u003epre_destory() implementations return 0 now, which is the only\nallowed return value.  Make it return void.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    }
  ],
  "next": "b25ed609d0eecf077db607e88ea70bae83b6adb2"
}
