)]}'
{
  "commit": "cf8b32e9f4b734f8cf512d02e03b900e9f774cd0",
  "tree": "c8d1f39a084c3c46f6a488f4df1861531722d5e8",
  "parents": [
    "6450eb4aaf808720ec03e46713ecc02e5d0d5898"
  ],
  "author": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Fri Mar 11 07:31:26 2016 -0500"
  },
  "committer": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Fri Mar 11 07:31:26 2016 -0500"
  },
  "message": "cgroup, sched: implement PRIO_RGRP for {set|get}priority()\n\nOne of the missing features in cgroup v2 is the ability to control cpu\ncycle distribution hierarchically among threads of a process.  With\nrgroup infrastructure in place, this can be implemented as a natural\nextension of setpriority().\n\nThis patch introduces a new @which selector PRIO_RGRP for\n{set|get}priority() which can be used only when the calling thread is\nin a rgroup and respectively sets and gets the nice priority of the\nrgroup that the calling thread belongs to.  The nice values have\nexactly the same meaning as for a single task and top-level rgroups\ncompete with peer tasks as if the entire subtree is a single task with\nthe specified nice value.\n\nsetpriority(PRIO_RGRP, nice) automatically enables cpu controller upto\nthe rgroup of the thread.  The cpu controller is available iff it\u0027s\nmounted on the default hierarchy and available on the nearest sgroup\n(ie. the parent of the nearest sgroup should have it enabled in its\nsubtree_control).  If the controller isn\u0027t available, setpriority()\nfails with -ENODEV.\n\nIf the cpu controller is made unavailable either through clearing of\nsubtree_control or migration to a cgroup which doesn\u0027t have it\navailable, cpu controller is disabled for the affected rgroup\nsubtrees.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Paul Turner \u003cpjt@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ca1ec50cae6815c41b0ff9a16442ad68d595241e",
      "old_mode": 33188,
      "old_path": "include/linux/cgroup.h",
      "new_id": "885c29e004cdf4fa4722a1a4a4f62e504ed316b8",
      "new_mode": 33188,
      "new_path": "include/linux/cgroup.h"
    },
    {
      "type": "modify",
      "old_id": "d3849ad4cf94e771a041435db4d8e1af82f8baf2",
      "old_mode": 33188,
      "old_path": "include/linux/sched.h",
      "new_id": "36fc5cb10d9fd6a554cf494234ed2d7777c9f535",
      "new_mode": 33188,
      "new_path": "include/linux/sched.h"
    },
    {
      "type": "modify",
      "old_id": "36fb3b5fb1817287a86290334a48dcca58801f73",
      "old_mode": 33188,
      "old_path": "include/uapi/linux/resource.h",
      "new_id": "da15cb1a76a1288ec69ee74b4f4dfa603203ec8e",
      "new_mode": 33188,
      "new_path": "include/uapi/linux/resource.h"
    },
    {
      "type": "modify",
      "old_id": "6107a1f6072c8fb825488cc1a7561691db848f07",
      "old_mode": 33188,
      "old_path": "kernel/cgroup.c",
      "new_id": "92eb74dddd3de08b2ceebc5daac1aebd57d2bf50",
      "new_mode": 33188,
      "new_path": "kernel/cgroup.c"
    },
    {
      "type": "modify",
      "old_id": "16ad92be3e67a777000f7a559d15d7c068c1a6f6",
      "old_mode": 33188,
      "old_path": "kernel/sched/core.c",
      "new_id": "e22e0ce6c02bddc2aecd97eb2d4c861da0c64306",
      "new_mode": 33188,
      "new_path": "kernel/sched/core.c"
    },
    {
      "type": "modify",
      "old_id": "78947de6f9691e898adf3803ec59fded4a0a28da",
      "old_mode": 33188,
      "old_path": "kernel/sys.c",
      "new_id": "923f66a2806c1aa57170454e3c2f9522fe2210d1",
      "new_mode": 33188,
      "new_path": "kernel/sys.c"
    }
  ]
}
