)]}'
{
  "commit": "a2b1693bac45ea3fe3ba612fd22c45f17449f610",
  "tree": "2e05859caab6453efbc85d584dd72dca7ef03cd0",
  "parents": [
    "03d8e11142a893ad322285d3c8a08e88b570cda1"
  ],
  "author": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Fri Apr 13 13:11:33 2012 -0700"
  },
  "committer": {
    "name": "Jens Axboe",
    "email": "axboe@kernel.dk",
    "time": "Fri Apr 20 10:06:06 2012 +0200"
  },
  "message": "blkcg: implement per-queue policy activation\n\nAll blkcg policies were assumed to be enabled on all request_queues.\nDue to various implementation obstacles, during the recent blkcg core\nupdates, this was temporarily implemented as shooting down all !root\nblkgs on elevator switch and policy [de]registration combined with\nhalf-broken in-place root blkg updates.  In addition to being buggy\nand racy, this meant losing all blkcg configurations across those\nevents.\n\nNow that blkcg is cleaned up enough, this patch replaces the temporary\nimplementation with proper per-queue policy activation.  Each blkcg\npolicy should call the new blkcg_[de]activate_policy() to enable and\ndisable the policy on a specific queue.  blkcg_activate_policy()\nallocates and installs policy data for the policy for all existing\nblkgs.  blkcg_deactivate_policy() does the reverse.  If a policy is\nnot enabled for a given queue, blkg printing / config functions skip\nthe respective blkg for the queue.\n\nblkcg_activate_policy() also takes care of root blkg creation, and\ncfq_init_queue() and blk_throtl_init() are updated accordingly.\n\nThis replaces blkcg_bypass_{start|end}() and update_root_blkg_pd()\nunnecessary.  Dropped.\n\nv2: cfq_init_queue() was returning uninitialized @ret on root_group\n    alloc failure if !CONFIG_CFQ_GROUP_IOSCHED.  Fixed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d6e4555c982fe5bacb54719f1bf442869e9cac6b",
      "old_mode": 33188,
      "old_path": "block/blk-cgroup.c",
      "new_id": "d6d59ad105b4dfcfddbc1ca2c9f9907942d2767e",
      "new_mode": 33188,
      "new_path": "block/blk-cgroup.c"
    },
    {
      "type": "modify",
      "old_id": "df1c7b290c22b5344fcb47fe334c8cbd0671a623",
      "old_mode": 33188,
      "old_path": "block/blk-cgroup.h",
      "new_id": "66253a7c8ff4cb90683b2092edb8239cc7eb5124",
      "new_mode": 33188,
      "new_path": "block/blk-cgroup.h"
    },
    {
      "type": "modify",
      "old_id": "8c520fad6885411465ba0ce0e02389fef6ffed42",
      "old_mode": 33188,
      "old_path": "block/blk-throttle.c",
      "new_id": "2fc964e06ea427c760d59bbd6a9aff8738411e25",
      "new_mode": 33188,
      "new_path": "block/blk-throttle.c"
    },
    {
      "type": "modify",
      "old_id": "86440e04f3ee72e8e4ce854411492c359f1ae847",
      "old_mode": 33188,
      "old_path": "block/cfq-iosched.c",
      "new_id": "0203652e1f3488bd1a50e58e2ddc3fc928b2a2d0",
      "new_mode": 33188,
      "new_path": "block/cfq-iosched.c"
    },
    {
      "type": "modify",
      "old_id": "be3ab6df0feaf4751af2c68781b8a2a538ed0c9a",
      "old_mode": 33188,
      "old_path": "block/elevator.c",
      "new_id": "6a55d418896f5ceee0042da69c0177c495219cbc",
      "new_mode": 33188,
      "new_path": "block/elevator.c"
    },
    {
      "type": "modify",
      "old_id": "b01c377fd73980e2b38c5b1a37c1a7c17536ff33",
      "old_mode": 33188,
      "old_path": "include/linux/blkdev.h",
      "new_id": "68720ab275d4dd13ef79ebb56977a3fdee303b9d",
      "new_mode": 33188,
      "new_path": "include/linux/blkdev.h"
    }
  ]
}
