)]}'
{
  "log": [
    {
      "commit": "f780bdb7c1c73009cb57adcf99ef50027d80bf3c",
      "tree": "d15668ffcc40a2aaa31723b87cfda0b166f84d57",
      "parents": [
        "4714d1d32d97239fb5ae3e10521d3f133a899b66"
      ],
      "author": {
        "name": "Ben Blum",
        "email": "bblum@andrew.cmu.edu",
        "time": "Thu May 26 16:25:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:34 2011 -0700"
      },
      "message": "cgroups: add per-thread subsystem callbacks\n\nAdd cgroup subsystem callbacks for per-thread attachment in atomic contexts\n\nAdd can_attach_task(), pre_attach(), and attach_task() as new callbacks\nfor cgroups\u0027s subsystem interface.  Unlike can_attach and attach, these\nare for per-thread operations, to be called potentially many times when\nattaching an entire threadgroup.\n\nAlso, the old \"bool threadgroup\" interface is removed, as replaced by\nthis.  All subsystems are modified for the new interface - of note is\ncpuset, which requires from/to nodemasks for attach to be globally scoped\n(though per-cpuset would work too) to persist from its pre_attach to\nattach_task and attach.\n\nThis is a pre-patch for cgroup-procs-writable.patch.\n\nSigned-off-by: Ben Blum \u003cbblum@andrew.cmu.edu\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nReviewed-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "317389a7739675aa990b7e0d750a7c435f1d25d7",
      "tree": "c24b7bb45d03233d76405dab4f9406c05c44eafa",
      "parents": [
        "2abae55f5a41d29f21b5b259c33d218c950d5c90"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon May 23 10:02:19 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon May 23 10:02:19 2011 +0200"
      },
      "message": "cfq-iosched: Make IO merge related stats per cpu\n\nMake BLKIO_STAT_MERGED per cpu hence gettring rid of need of taking\nblkg-\u003estats_lock.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f0bdc8cdd9a2bcc2c84ae2a1fdbff4188b354d8d",
      "tree": "6d34ecec4cfc29c6032a7b6ce1acbb61088d1787",
      "parents": [
        "575969a0dd3fe65c6556bcb8f87c42303326ea55"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:30 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:53 2011 +0200"
      },
      "message": "blk-cgroup: Make cgroup stat reset path blkg-\u003elock free for dispatch stats\n\nNow dispatch stats update is lock free. But reset of these stats still\ntakes blkg-\u003estats_lock and is dependent on that. As stats are per cpu,\nwe should be able to just reset the stats on each cpu without any locks.\n(Atleast for 64bit arch).\n\nOn 32bit arch there is a small race where 64bit updates are not atomic.\nThe result of this race can be that in the presence of other writers,\none might not get 0 value after reset of a stat and might see something\nintermediate\n\nOne can write more complicated code to cover this race like sending IPI\nto other cpus to reset stats and for offline cpus, reset these directly.\n\nRight not I am not taking that path because reset_update is more of a\ndebug feature and it can happen only on 32bit arch and possibility of\nit happening is small. Will fix it if it becomes a real problem. For\nthe time being going for code simplicity.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "575969a0dd3fe65c6556bcb8f87c42303326ea55",
      "tree": "0db18fa173b20076e03b5b9c4be4c31c56baa438",
      "parents": [
        "5624a4e445e2ec27582984b068d7bf7f127cee10"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:29 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:53 2011 +0200"
      },
      "message": "blk-cgroup: Make 64bit per cpu stats safe on 32bit arch\n\nSome of the stats are 64bit and updation will be non atomic on 32bit\narchitecture. Use sequence counters on 32bit arch to make reading\nof stats safe.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5624a4e445e2ec27582984b068d7bf7f127cee10",
      "tree": "0827c83c6e5f5fa83bd0dadc1bc395c0f0657dae",
      "parents": [
        "4843c69d496a8d2e4caab6182fe016b9a79136e0"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:28 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:52 2011 +0200"
      },
      "message": "blk-throttle: Make dispatch stats per cpu\n\nCurrently we take blkg_stat lock for even updating the stats. So even if\na group has no throttling rules (common case for root group), we end\nup taking blkg_lock, for updating the stats.\n\nMake dispatch stats per cpu so that these can be updated without taking\nblkg lock.\n\nIf cpu goes offline, these stats simply disappear. No protection has\nbeen provided for that yet. Do we really need anything for that?\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a23e68695593d00b35a6cddf8e9c9ec03505ecb9",
      "tree": "954a92fb07408e4b7483881f09d2afc91002bc00",
      "parents": [
        "a29a171e7c46c60842b85729280e2f5690372683"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:20 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:52 2011 +0200"
      },
      "message": "blk-cgroup: move some fields of unaccounted_time file under right config option\n\ncgroup unaccounted_time file is created only if CONFIG_DEBUG_BLK_CGROUP\u003dy.\nthere are some fields which are out side this config option. Fix that.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "70087dc38cc77ca8f46059564c00338777734762",
      "tree": "2ffd5885a12acb44d90d3c3c1a578387bad94a32",
      "parents": [
        "02e352287a40bd456eb78df705bf888bc3161d3f"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon May 16 15:24:08 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon May 16 15:24:08 2011 +0200"
      },
      "message": "blk-throttle: Use task_subsys_state() to determine a task\u0027s blkio_cgroup\n\nCurrentlly we first map the task to cgroup and then cgroup to\nblkio_cgroup. There is a more direct way to get to blkio_cgroup\nfrom task using task_subsys_state(). Use that.\n\nThe real reason for the fix is that it also avoids a race in generic\ncgroup code. During remount/umount rebind_subsystems() is called and\nit can do following with and rcu protection.\n\ncgrp-\u003esubsys[i] \u003d NULL;\n\nThat means if somebody got hold of cgroup under rcu and then it tried\nto do cgroup-\u003esubsys[] to get to blkio_cgroup, it would get NULL which\nis wrong. I was running into this race condition with ltp running on a\nupstream derived kernel and that lead to crash.\n\nSo ideally we should also fix cgroup generic code to wait for rcu\ngrace period before setting pointer to NULL. Li Zefan is not very keen\non introducing synchronize_wait() as he thinks it will slow\ndown moun/remount/umount operations.\n\nSo for the time being atleast fix the kernel crash by taking a more\ndirect route to blkio_cgroup.\n\nOne tester had reported a crash while running LTP on a derived kernel\nand with this fix crash is no more seen while the test has been\nrunning for over 6 days.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "9026e521c0da0731eb31f9f9022dd00cc3cd8885",
      "tree": "b2e9f44d22d009efcac6bf4a25a620017ac903a0",
      "parents": [
        "eda5e0c91fed2d2a38a341b0957263406d330274"
      ],
      "author": {
        "name": "Justin TerAvest",
        "email": "teravest@google.com",
        "time": "Tue Mar 22 21:26:54 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Mar 22 21:26:54 2011 +0100"
      },
      "message": "blk-cgroup: Only give unaccounted_time under debug\n\nThis change moves unaccounted_time to only be reported when\nCONFIG_DEBUG_BLK_CGROUP is true.\n\nSigned-off-by: Justin TerAvest \u003cteravest@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "167400d34070ebbc408dc0f447c4ddb4bf837360",
      "tree": "19100b0511a7e3e18f6f61d90a5fe5f1c40f59c4",
      "parents": [
        "1f940bdfc0d03265d178d9dfd840d854819f797d"
      ],
      "author": {
        "name": "Justin TerAvest",
        "email": "teravest@google.com",
        "time": "Sat Mar 12 16:54:00 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Mar 12 16:54:00 2011 +0100"
      },
      "message": "blk-cgroup: Add unaccounted time to timeslice_used.\n\nThere are two kind of times that tasks are not charged for: the first\nseek and the extra time slice used over the allocated timeslice. Both\nof these exported as a new unaccounted_time stat.\n\nI think it would be good to have this reported in \u0027time\u0027 as well, but\nthat is probably a separate discussion.\n\nSigned-off-by: Justin TerAvest \u003cteravest@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "bdc85df7a8417b9893443ff5520804699416b6f3",
      "tree": "7d1158ff87d327934c0c3b0d5ec9b02ed4811de6",
      "parents": [
        "0143832cc96d0bf78486297aad5c8fb2c2ead02a"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon Nov 15 19:37:36 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Nov 15 19:37:36 2010 +0100"
      },
      "message": "blk-cgroup: Allow creation of hierarchical cgroups\n\no Allow hierarchical cgroup creation for blkio controller\n\no Currently we disallow it as both the io controller policies (throttling\n  as well as proportion bandwidth) do not support hierarhical accounting\n  and control. But the flip side is that blkio controller can not be used with\n  libvirt as libvirt creates a cgroup hierarchy deeper than 1 level.\n\n  \u003ctop-level-cgroup-dir\u003e/\u003ccontroller\u003e/libvirt/qemu/\u003cvirtual-machine-groups\u003e\n\no So this patch will allow creation of cgroup hierarhcy but at the backend\n  everything will be treated as flat. So if somebody created a an hierarchy\n  like as follows.\n\n\t\t\troot\n\t\t\t/  \\\n\t\t     test1 test2\n\t\t\t|\n\t\t     test3\n\n  CFQ and throttling will practically treat all groups at same level.\n\n\t\t\t\tpivot\n\t\t\t     /  |   \\  \\\n\t\t\troot  test1 test2  test3\n\no Once we have actual support for hierarchical accounting and control\n  then we can introduce another cgroup tunable file \"blkio.use_hierarchy\"\n  which will be 0 by default but if user wants to enforce hierarhical\n  control then it can be set to 1. This way there should not be any\n  ABI problems down the line.\n\no The only not so pretty part is introduction of extra file \"use_hierarchy\"\n  down the line. Kame-san had mentioned that hierarhical accounting is\n  expensive in memory controller hence they keep it off by default. I\n  suspect same will be the case for IO controller also as for each IO\n  completion we shall have to account IO through hierarchy up to the root.\n  if yes, then it probably is not a very bad idea to introduce this extra\n  file so that it will be used only when somebody needs it and some people\n  might enable hierarchy only in part of the hierarchy.\n\no This is how basically memory controller also uses \"use_hierarhcy\" and\n  they also allowed creation of hierarchies when actual backend support\n  was not available.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nReviewed-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nReviewed-by: Ciju Rajan K \u003cciju@linux.vnet.ibm.com\u003e\nTested-by: Ciju Rajan K \u003cciju@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e9dd2b6837e26fe202708cce5ea4bb4ee3e3482e",
      "tree": "f42fd892495bfc4cbb740d06b016d267c9c42d00",
      "parents": [
        "4f3a29dadaf999a273f1e7fe2476595d0283eef3",
        "b4627321e18582dcbdeb45d77df29d3177107c65"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:00:32 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:00:32 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/core\u0027 of git://git.kernel.dk/linux-2.6-block: (39 commits)\n  cfq-iosched: Fix a gcc 4.5 warning and put some comments\n  block: Turn bvec_k{un,}map_irq() into static inline functions\n  block: fix accounting bug on cross partition merges\n  block: Make the integrity mapped property a bio flag\n  block: Fix double free in blk_integrity_unregister\n  block: Ensure physical block size is unsigned int\n  blkio-throttle: Fix possible multiplication overflow in iops calculations\n  blkio-throttle: limit max iops value to UINT_MAX\n  blkio-throttle: There is no need to convert jiffies to milli seconds\n  blkio-throttle: Fix link failure failure on i386\n  blkio: Recalculate the throttled bio dispatch time upon throttle limit change\n  blkio: Add root group to td-\u003etg_list\n  blkio: deletion of a cgroup was causes oops\n  blkio: Do not export throttle files if CONFIG_BLK_DEV_THROTTLING\u003dn\n  block: set the bounce_pfn to the actual DMA limit rather than to max memory\n  block: revert bad fix for memory hotplug causing bounces\n  Fix compile error in blk-exec.c for !CONFIG_DETECT_HUNG_TASK\n  block: set the bounce_pfn to the actual DMA limit rather than to max memory\n  block: Prevent hang_check firing during long I/O\n  cfq: improve fsync performance for small files\n  ...\n\nFix up trivial conflicts due to __rcu sparse annotation in include/linux/genhd.h\n"
    },
    {
      "commit": "9355aede5a3c4975e0ba8bbfe2b9d1fd73308916",
      "tree": "73db212009de0e60d71d343b737d6a90449b06b8",
      "parents": [
        "5e901a2b95db709c5e40599ff4df6029be1e2a12"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 21:16:41 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 21:16:41 2010 +0200"
      },
      "message": "blkio-throttle: limit max iops value to UINT_MAX\n\n- Limit max iops value to UINT_MAX and return error to user if value is more\n  than that instead of accepting bigger values and truncating implicitly.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "fe0714377ee2ca161bf2afb7773e22f15f1786d4",
      "tree": "09f5e8686d741d012333c92251b8cc66793ef916",
      "parents": [
        "02977e4af7ed3b478c505e50491ffdf3e1314cf4"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 14:49:49 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:49:49 2010 +0200"
      },
      "message": "blkio: Recalculate the throttled bio dispatch time upon throttle limit change\n\no Currently any cgroup throttle limit changes are processed asynchronousy and\n  the change does not take affect till a new bio is dispatched from same group.\n\no It might happen that a user sets a redicuously low limit on throttling.\n  Say 1 bytes per second on reads. In such cases simple operations like mount\n  a disk can wait for a very long time.\n\no Once bio is throttled, there is no easy way to come out of that wait even if\n  user increases the read limit later.\n\no This patch fixes it. Now if a user changes the cgroup limits, we recalculate\n  the bio dispatch time according to new limits.\n\no Can\u0027t take queueu lock under blkcg_lock, hence after the change I wake\n  up the dispatch thread again which recalculates the time. So there are some\n  variables being synchronized across two threads without lock and I had to\n  make use of barriers. Hoping I have used barriers correctly. Any review of\n  memory barrier code especially will help.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "61014e96e6ed55b8db0af31574eec2a75d4e8755",
      "tree": "69201251c3c5c51a0ed31dbe595743e60fbdaf52",
      "parents": [
        "13f98250f587b7defa39ed738dfa74b600e46e7b"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 14:49:44 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:49:44 2010 +0200"
      },
      "message": "blkio: deletion of a cgroup was causes oops\n\no Now a cgroup list of blkg elements can contain blkg from multiple policies.\n  Before sending an unlink event, make sure blkg belongs to they policy. If\n  policy does not own the blkg, do not send update for this blkg.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "13f98250f587b7defa39ed738dfa74b600e46e7b",
      "tree": "9d06cb3cd0c8737d1c9289ad6d19e4f4c8ec601f",
      "parents": [
        "efb012b361cf9319cd86ff169afa7550b7aa9336"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 14:49:41 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:49:41 2010 +0200"
      },
      "message": "blkio: Do not export throttle files if CONFIG_BLK_DEV_THROTTLING\u003dn\n\nCurrently throttling related files were visible even if user had disabled\nthrottling using config options. It was switching off background throttling\nof bio but not the cgroup files. This patch fixes it.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7702e8f45b0a3bb262b9366c60beb5445758d94c",
      "tree": "bd61754827def804fe5a1f790f3eb303154df63d",
      "parents": [
        "e43473b7f223ec866f7db273697e76c337c390f9"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:36 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:42:58 2010 +0200"
      },
      "message": "blk-cgroup: cgroup changes for IOPS limit support\n\no cgroup changes for IOPS throttling rules.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4c9eefa16c6f124ffcc736cb719b24ea27f85017",
      "tree": "0fc333553f66b72c3eb1bd532e45040d90e68f1f",
      "parents": [
        "062a644d6121d5e2f51c0b2ca0cbc5155ebf845b"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:34 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:42:12 2010 +0200"
      },
      "message": "blk-cgroup: Introduce cgroup changes for throttling policy\n\no cgroup chagnes for throttle policy.\n\no Introduces READ and WRITE bytes per second throttling rules.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "062a644d6121d5e2f51c0b2ca0cbc5155ebf845b",
      "tree": "250626a8ee11efa8e598692904e12ac26c29cab5",
      "parents": [
        "af41d7bd9b685ab4e8f930627874ba4f4728e128"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:33 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:42:04 2010 +0200"
      },
      "message": "blk-cgroup: Prepare the base for supporting more than one IO control policies\n\no This patch prepares the base for introducing new IO control policies.\n  Currently all the code is written knowing there is only one policy\n  and that is proportional bandwidth. Creating infrastructure for newer\n  policies to come in.\n\no Also there were many functions which were generated using macro. It was\n  very confusing. Got rid of those.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "af41d7bd9b685ab4e8f930627874ba4f4728e128",
      "tree": "f91be30499efd1c39a3417cb19186ecca261ebe2",
      "parents": [
        "38b6f45a97bbb8536cc7d095b577f580bd4d643e"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:32 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:40:42 2010 +0200"
      },
      "message": "blk-cgroup: Kill the header printed at the start of blkio.weight_device file\n\no Kill extra \"dev weight\" header which is printed when somebody reads\n  blkio.weight_device file. This really seems to be out of convention. No other\n  blkio files are printing any header at the start of file. I think it is ok\n  to just print values and how to interpret values should be part of\n  documentation.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "96aa1b419d47286db446f292cf898bb1a8b27f24",
      "tree": "1b7a7c5c8131374396df69fd52d02de5de06e978",
      "parents": [
        "9ee47476d6734c9deb9ae9ab05d963302f6b6150"
      ],
      "author": {
        "name": "Ciju Rajan K",
        "email": "ciju@linux.vnet.ibm.com",
        "time": "Mon Aug 23 10:56:30 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 10:56:30 2010 +0200"
      },
      "message": "blkio: Fix return code for mkdir calls\n\nIf the cgroup hierarchy for blkio control groups is deeper than two\nlevels, kernel should not allow the creation of further levels. mkdir\nsystem call does not except EINVAL as a return value. This patch\nreplaces EINVAL with more appropriate EPERM\n\nSigned-off-by: Ciju Rajan K \u003cciju@linux.vnet.ibm.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "ee9a3607fb03e804ddf624544105f4e34260c380",
      "tree": "ce41b6e0fa10982a306f6c142a92dbf3c9961284",
      "parents": [
        "b492e95be0ae672922f4734acf3f5d35c30be948",
        "d515e86e639890b33a09390d062b0831664f04a2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 21:27:26 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 21:27:26 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.35\n\nConflicts:\n\tfs/ext3/fsync.c\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0341509fdfc9519f7de6aabc5dd23217cef72b73",
      "tree": "84415f35129013b9d8fb3f5f0ef266437a02f09c",
      "parents": [
        "dcf097b247affd8b88ad410a92298590c5600f44"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri May 07 08:57:00 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 07 08:57:00 2010 +0200"
      },
      "message": "blk-cgroup: Fix an RCU warning in blkiocg_create()\n\nwith CONFIG_PROVE_RCU\u003dy, a warning can be triggered:\n\n  # mount -t cgroup -o blkio xxx /mnt\n  # mkdir /mnt/subgroup\n\n...\nkernel/cgroup.c:4442 invoked rcu_dereference_check() without protection!\n...\n\nTo fix this, we avoid caling css_depth() here, which is a bit simpler\nthan the original code.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0f3942a39ed768c967cb71ea0e9be7fc94112713",
      "tree": "337b13077be49921cbd77523c946788e12e4bac9",
      "parents": [
        "7407cf355fdf5500430be966dbbde84a27293bad"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 03 14:28:55 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 03 14:28:55 2010 +0200"
      },
      "message": "block: kill some useless goto\u0027s in blk-cgroup.c\n\ngoto has its place, but lets cut back on some of the more\nfrivolous uses of it.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "afc24d49c1e5dbeef745c1c1246f5ae6ebd97c71",
      "tree": "c936676ed21d032bf1d27f9ff1451f6242c8b3b6",
      "parents": [
        "e5ff082e8a68d9a6874990597497c7e6a96ad752"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon Apr 26 19:27:56 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 26 19:27:56 2010 +0200"
      },
      "message": "blk-cgroup: config options re-arrangement\n\nThis patch fixes few usability and configurability issues.\n\no All the cgroup based controller options are configurable from\n  \"Genral Setup/Control Group Support/\" menu. blkio is the only exception.\n  Hence make this option visible in above menu and make it configurable from\n  there to bring it inline with rest of the cgroup based controllers.\n\no Get rid of CONFIG_DEBUG_CFQ_IOSCHED.\n\n  This option currently does two things.\n\n  - Enable printing of cgroup paths in blktrace\n  - Enables CONFIG_DEBUG_BLK_CGROUP, which in turn displays additional stat\n    files in cgroup.\n\n  If we are using group scheduling, blktrace data is of not really much use\n  if cgroup information is not present. To get this data, currently one has to\n  also enable CONFIG_DEBUG_CFQ_IOSCHED, which in turn brings the overhead of\n  all the additional debug stat files which is not desired.\n\n  Hence, this patch moves printing of cgroup paths under\n  CONFIG_CFQ_GROUP_IOSCHED.\n\n  This allows us to get rid of CONFIG_DEBUG_CFQ_IOSCHED completely. Now all\n  the debug stat files are controlled only by CONFIG_DEBUG_BLK_CGROUP which\n  can be enabled through config menu.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Divyesh Shah \u003cdpshah@google.com\u003e\nReviewed-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e5ff082e8a68d9a6874990597497c7e6a96ad752",
      "tree": "43c750821e89a50a01f4c7d73a68f779a57443fe",
      "parents": [
        "7f1dc8a2d2f45fc557b27fd56115338b1d34fc24"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon Apr 26 19:25:11 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 26 19:25:11 2010 +0200"
      },
      "message": "blkio: Fix another BUG_ON() crash due to cfqq movement across groups\n\no Once in a while, I was hitting a BUG_ON() in blkio code. empty_time was\n  assuming that upon slice expiry, group can\u0027t be marked empty already (except\n  forced dispatch).\n\n  But this assumption is broken if cfqq can move (group_isolation\u003d0) across\n  groups after receiving a request.\n\n  I think most likely in this case we got a request in a cfqq and accounted\n  the rq in one group, later while adding the cfqq to tree, we moved the queue\n  to a different group which was already marked empty and after dispatch from\n  slice we found group already marked empty and raised alarm.\n\n  This patch does not error out if group is already marked empty. This can\n  introduce some empty_time stat error only in case of group_isolation\u003d0. This\n  is better than crashing. In case of group_isolation\u003d1 we should still get\n  same stats as before this patch.\n\n[  222.308546] ------------[ cut here ]------------\n[  222.309311] kernel BUG at block/blk-cgroup.c:236!\n[  222.309311] invalid opcode: 0000 [#1] SMP\n[  222.309311] last sysfs file: /sys/devices/virtual/block/dm-3/queue/scheduler\n[  222.309311] CPU 1\n[  222.309311] Modules linked in: dm_round_robin dm_multipath qla2xxx scsi_transport_fc dm_zero dm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]\n[  222.309311]\n[  222.309311] Pid: 4780, comm: fio Not tainted 2.6.34-rc4-blkio-config #68 0A98h/HP xw8600 Workstation\n[  222.309311] RIP: 0010:[\u003cffffffff8121ad88\u003e]  [\u003cffffffff8121ad88\u003e] blkiocg_set_start_empty_time+0x50/0x83\n[  222.309311] RSP: 0018:ffff8800ba6e79f8  EFLAGS: 00010002\n[  222.309311] RAX: 0000000000000082 RBX: ffff8800a13b7990 RCX: ffff8800a13b7808\n[  222.309311] RDX: 0000000000002121 RSI: 0000000000000082 RDI: ffff8800a13b7a30\n[  222.309311] RBP: ffff8800ba6e7a18 R08: 0000000000000000 R09: 0000000000000001\n[  222.309311] R10: 000000000002f8c8 R11: ffff8800ba6e7ad8 R12: ffff8800a13b78ff\n[  222.309311] R13: ffff8800a13b7990 R14: 0000000000000001 R15: ffff8800a13b7808\n[  222.309311] FS:  00007f3beec476f0(0000) GS:ffff880001e40000(0000) knlGS:0000000000000000\n[  222.309311] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n[  222.309311] CR2: 000000000040e7f0 CR3: 00000000a12d5000 CR4: 00000000000006e0\n[  222.309311] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n[  222.309311] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n[  222.309311] Process fio (pid: 4780, threadinfo ffff8800ba6e6000, task ffff8800b3d6bf00)\n[  222.309311] Stack:\n[  222.309311]  0000000000000001 ffff8800bab17a48 ffff8800bab17a48 ffff8800a13b7800\n[  222.309311] \u003c0\u003e ffff8800ba6e7a68 ffffffff8121da35 ffff880000000001 00ff8800ba5c5698\n[  222.309311] \u003c0\u003e ffff8800ba6e7a68 ffff8800a13b7800 0000000000000000 ffff8800bab17a48\n[  222.309311] Call Trace:\n[  222.309311]  [\u003cffffffff8121da35\u003e] __cfq_slice_expired+0x2af/0x3ec\n[  222.309311]  [\u003cffffffff8121fd7b\u003e] cfq_dispatch_requests+0x2c8/0x8e8\n[  222.309311]  [\u003cffffffff8120f1cd\u003e] ? spin_unlock_irqrestore+0xe/0x10\n[  222.309311]  [\u003cffffffff8120fb1a\u003e] ? blk_insert_cloned_request+0x70/0x7b\n[  222.309311]  [\u003cffffffff81210461\u003e] blk_peek_request+0x191/0x1a7\n[  222.309311]  [\u003cffffffffa0002799\u003e] dm_request_fn+0x38/0x14c [dm_mod]\n[  222.309311]  [\u003cffffffff810ae61f\u003e] ? sync_page_killable+0x0/0x35\n[  222.309311]  [\u003cffffffff81210fd4\u003e] __generic_unplug_device+0x32/0x37\n[  222.309311]  [\u003cffffffff81211274\u003e] generic_unplug_device+0x2e/0x3c\n[  222.309311]  [\u003cffffffffa00011a6\u003e] dm_unplug_all+0x42/0x5b [dm_mod]\n[  222.309311]  [\u003cffffffff8120ca37\u003e] blk_unplug+0x29/0x2d\n[  222.309311]  [\u003cffffffff8120ca4d\u003e] blk_backing_dev_unplug+0x12/0x14\n[  222.309311]  [\u003cffffffff81109a7a\u003e] block_sync_page+0x35/0x39\n[  222.309311]  [\u003cffffffff810ae616\u003e] sync_page+0x41/0x4a\n[  222.309311]  [\u003cffffffff810ae62d\u003e] sync_page_killable+0xe/0x35\n[  222.309311]  [\u003cffffffff8158aa59\u003e] __wait_on_bit_lock+0x46/0x8f\n[  222.309311]  [\u003cffffffff810ae4f5\u003e] __lock_page_killable+0x66/0x6d\n[  222.309311]  [\u003cffffffff81056f9c\u003e] ? wake_bit_function+0x0/0x33\n[  222.309311]  [\u003cffffffff810ae528\u003e] lock_page_killable+0x2c/0x2e\n[  222.309311]  [\u003cffffffff810afbc5\u003e] generic_file_aio_read+0x361/0x4f0\n[  222.309311]  [\u003cffffffff810ea044\u003e] do_sync_read+0xcb/0x108\n[  222.309311]  [\u003cffffffff811e42f7\u003e] ? security_file_permission+0x16/0x18\n[  222.309311]  [\u003cffffffff810ea6ab\u003e] vfs_read+0xab/0x108\n[  222.309311]  [\u003cffffffff810ea7c8\u003e] sys_read+0x4a/0x6e\n[  222.309311]  [\u003cffffffff81002b5b\u003e] system_call_fastpath+0x16/0x1b\n[  222.309311] Code: 58 01 00 00 00 48 89 c6 75 0a 48 83 bb 60 01 00 00 00 74 09 48 8d bb a0 00 00 00 eb 35 41 fe cc 74 0d f6 83 c0 01 00 00 04 74 04 \u003c0f\u003e 0b eb fe 48 89 75 e8 e8 be e0 de ff 66 83 8b c0 01 00 00 04\n[  222.309311] RIP  [\u003cffffffff8121ad88\u003e] blkiocg_set_start_empty_time+0x50/0x83\n[  222.309311]  RSP \u003cffff8800ba6e79f8\u003e\n[  222.309311] ---[ end trace 32b4f71dffc15712 ]---\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Divyesh Shah \u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8d2a91f8960b230b8bbcc4d97ed2015f5271c87d",
      "tree": "54b742bd0ce37c1ec227178d23d7da347993a6b5",
      "parents": [
        "b6ac23af2c66e114d3a87ef28d56f1ceec283007"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Fri Apr 16 08:10:51 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 16 08:10:51 2010 +0200"
      },
      "message": "blkio: Initialize blkg-\u003estats_lock for the root cfqg too\n\nThis fixes the lockdep warning reported by Gui Jianfeng.\n\nSigned-off-by: Divyesh Shah \u003cdpshah@google.com\u003e\nReviewed-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "28baf44299e0480d66ebb3093de5d51deff04e9f",
      "tree": "2cac2546027638c269441f4035a67abd3d267ca4",
      "parents": [
        "4facdaec1ce186e731e6baa04f074804849e9a49"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Wed Apr 14 11:22:38 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 14 11:22:38 2010 +0200"
      },
      "message": "blkio: Fix compile errors\n\nFixes compile errors in blk-cgroup code for empty_time stat and a merge fix in\nCFQ. The first error was when CONFIG_DEBUG_CFQ_IOSCHED is not set.\n\nSigned-off-by: Divyesh Shah \u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4facdaec1ce186e731e6baa04f074804849e9a49",
      "tree": "e521fba8386bf23533cfe21ea5200e615960ec07",
      "parents": [
        "a11cdaa7af56423a921a8bdad8f5a5f4ddca918a",
        "0d0fb0f9c5fddef4a10242fe3337f00f528a3099"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 13 20:03:21 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 13 20:03:21 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.35\n\nConflicts:\n\tblock/blk-cgroup.c\n\tblock/cfq-iosched.c\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a11cdaa7af56423a921a8bdad8f5a5f4ddca918a",
      "tree": "45309d760ab80347d4ad5a2cd249c988a507c636",
      "parents": [
        "da69da184c06f365b335a0e013dc6360a82abe85"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Tue Apr 13 19:59:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 13 19:59:17 2010 +0200"
      },
      "message": "block: Update to io-controller stats\n\nChangelog from v1:\no Call blkiocg_update_idle_time_stats() at cfq_rq_enqueued() instead of at\n  dispatch time.\n\nChangelog from original patchset: (in response to Vivek Goyal\u0027s comments)\no group blkiocg_update_blkio_group_dequeue_stats() with other DEBUG functions\no rename blkiocg_update_set_active_queue_stats() to\n  blkiocg_update_avg_queue_size_stats()\no s/request/io/ in blkiocg_update_request_add_stats() and\n  blkiocg_update_request_remove_stats()\no Call cfq_del_timer() at request dispatch() instead of\n  blkiocg_update_idle_time_stats()\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "34d0f179d6dd711d3fc13c0820a456c59aae8048",
      "tree": "0e3d533e16cd7d99b0d28ec13353862f1da96dfd",
      "parents": [
        "812df48d127365ffd0869aa139738f572a86759c"
      ],
      "author": {
        "name": "Gui Jianfeng",
        "email": "guijianfeng@cn.fujitsu.com",
        "time": "Tue Apr 13 16:05:49 2010 +0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 13 10:14:20 2010 +0200"
      },
      "message": "io-controller: Add a new interface \"weight_device\" for IO-Controller\n\nCurrently, IO Controller makes use of blkio.weight to assign weight for\nall devices. Here a new user interface \"blkio.weight_device\" is introduced to\nassign different weights for different devices. blkio.weight becomes the\ndefault value for devices which are not configured by \"blkio.weight_device\"\n\nYou can use the following format to assigned specific weight for a given\ndevice:\n#echo \"major:minor weight\" \u003e blkio.weight_device\n\nmajor:minor represents device number.\n\nAnd you can remove weight for a given device as following:\n#echo \"major:minor 0\" \u003e blkio.weight_device\n\nV1-\u003eV2 changes:\n- use user interface \"weight_device\" instead of \"policy\" suggested by Vivek\n- rename some struct suggested by Vivek\n- rebase to 2.6-block \"for-linus\" branch\n- remove an useless list_empty check pointed out by Li Zefan\n- some trivial typo fix\n\nV2-\u003eV3 changes:\n- Move policy_*_node() functions up to get rid of forward declarations\n- rename related functions by adding prefix \"blkio_\"\n\nSigned-off-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "812df48d127365ffd0869aa139738f572a86759c",
      "tree": "772ef559057cd432ad874cd429287e7a912b1bb3",
      "parents": [
        "cdc1184cf4a7bd99f5473a91244197accc49146b"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Thu Apr 08 21:15:35 2010 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 09 08:36:08 2010 +0200"
      },
      "message": "blkio: Add more debug-only per-cgroup stats\n\n1) group_wait_time - This is the amount of time the cgroup had to wait to get a\n  timeslice for one of its queues from when it became busy, i.e., went from 0\n  to 1 request queued. This is different from the io_wait_time which is the\n  cumulative total of the amount of time spent by each IO in that cgroup waiting\n  in the scheduler queue. This stat is a great way to find out any jobs in the\n  fleet that are being starved or waiting for longer than what is expected (due\n  to an IO controller bug or any other issue).\n2) empty_time - This is the amount of time a cgroup spends w/o any pending\n   requests. This stat is useful when a job does not seem to be able to use its\n   assigned disk share by helping check if that is happening due to an IO\n   controller bug or because the job is not submitting enough IOs.\n3) idle_time - This is the amount of time spent by the IO scheduler idling\n   for a given cgroup in anticipation of a better request than the exising ones\n   from other queues/cgroups.\n\nAll these stats are recorded using start and stop events. When reading these\nstats, we do not add the delta between the current time and the last start time\nif we\u0027re between the start and stop events. We avoid doing this to make sure\nthat these numbers are always monotonically increasing when read. Since we\u0027re\nusing sched_clock() which may use the tsc as its source, it may induce some\ninconsistency (due to tsc resync across cpus) if we included the current delta.\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cdc1184cf4a7bd99f5473a91244197accc49146b",
      "tree": "ecd572867bfa5a82fa4ed16d7303448c7ea7d24c",
      "parents": [
        "812d402648f4fc1ab1091b2172a46fc1b367c724"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Thu Apr 08 21:15:10 2010 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 09 08:36:08 2010 +0200"
      },
      "message": "blkio: Add io_queued and avg_queue_size stats\n\nThese stats are useful for getting a feel for the queue depth of the cgroup,\ni.e., how filled up its queues are at a given instant and over the existence of\nthe cgroup. This ability is useful when debugging problems in the wild as it\nhelps understand the application\u0027s IO pattern w/o having to read through the\nuserspace code (coz its tedious or just not available) or w/o the ability\nto run blktrace (since you may not have root access and/or not want to disturb\nperformance).\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "812d402648f4fc1ab1091b2172a46fc1b367c724",
      "tree": "9dc52d5bfdbc170559169a0157ed3295d551e9cf",
      "parents": [
        "84c124da9ff50bd71fab9c939ee5b7cd8bef2bd9"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Thu Apr 08 21:14:23 2010 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 09 08:36:07 2010 +0200"
      },
      "message": "blkio: Add io_merged stat\n\nThis includes both the number of bios merged into requests belonging to this\ncgroup as well as the number of requests merged together.\nIn the past, we\u0027ve observed different merging behavior across upstream kernels,\nsome by design some actual bugs. This stat helps a lot in debugging such\nproblems when applications report decreased throughput with a new kernel\nversion.\n\nThis needed adding an extra elevator function to capture bios being merged as I\ndid not want to pollute elevator code with blkiocg knowledge and hence needed\nthe accounting invocation to come from CFQ.\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "84c124da9ff50bd71fab9c939ee5b7cd8bef2bd9",
      "tree": "f94ad03b56c71ebbe6b92265054c5e24af25b869",
      "parents": [
        "31373d09da5b7fe21fe6f781e92bd534a3495f00"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Fri Apr 09 08:31:19 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 09 08:31:19 2010 +0200"
      },
      "message": "blkio: Changes to IO controller additional stats patches\n\nthat include some minor fixes and addresses all comments.\n\nChangelog: (most based on Vivek Goyal\u0027s comments)\no renamed blkiocg_reset_write to blkiocg_reset_stats\no more clarification in the documentation on io_service_time and io_wait_time\no Initialize blkg-\u003estats_lock\no rename io_add_stat to blkio_add_stat and declare it static\no use bool for direction and sync\no derive direction and sync info from existing rq methods\no use 12 for major:minor string length\no define io_service_time better to cover the NCQ case\no add a separate reset_stats interface\no make the indexed stats a 2d array to simplify macro and function pointer code\no blkio.time now exports in jiffies as before\no Added stats description in patch description and\n  Documentation/cgroup/blkio-controller.txt\no Prefix all stats functions with blkio and make them static as applicable\no replace IO_TYPE_MAX with IO_TYPE_TOTAL\no Moved #define constant to top of blk-cgroup.c\no Pass dev_t around instead of char *\no Add note to documentation file about resetting stats\no use BLK_CGROUP_MODULE in addition to BLK_CGROUP config option in #ifdef\n  statements\no Avoid struct request specific knowledge in blk-cgroup. blk-cgroup.h now has\n  rq_direction() and rq_sync() functions which are used by CFQ and when using\n  io-controller at a higher level, bio_* functions can be added.\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9195291e5f05e01d67f9a09c756b8aca8f009089",
      "tree": "e46a151fe39be2bc23d0683bedb2cbefe916fb5b",
      "parents": [
        "303a3acb2362f16c7e7f4c53b40c2f4b396dc8d5"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Thu Apr 01 15:01:41 2010 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 02 08:44:37 2010 +0200"
      },
      "message": "blkio: Increment the blkio cgroup stats for real now\n\nWe also add start_time_ns and io_start_time_ns fields to struct request\nhere to record the time when a request is created and when it is\ndispatched to device. We use ns uints here as ms and jiffies are\nnot very useful for non-rotational media.\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "303a3acb2362f16c7e7f4c53b40c2f4b396dc8d5",
      "tree": "7996f28d5659fef44594f7049e30264b16baa62d",
      "parents": [
        "9a0785b0da561e1e9c6617df85e93ae107a42f18"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Thu Apr 01 15:01:24 2010 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 02 08:44:36 2010 +0200"
      },
      "message": "blkio: Add io controller stats like\n\n- io_service_time\n- io_wait_time\n- io_serviced\n- io_service_bytes\n\nThese stats are accumulated per operation type helping us to distinguish between\nread and write, and sync and async IO. This patch does not increment any of\nthese stats.\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9a0785b0da561e1e9c6617df85e93ae107a42f18",
      "tree": "56cb6b65f175a13c85976192216a6b8101b0d0f3",
      "parents": [
        "ed6b6dc7c142bfb5840d201a9b4a465c9e56ce33"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Thu Apr 01 15:01:04 2010 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 02 08:44:36 2010 +0200"
      },
      "message": "blkio: Remove per-cfqq nr_sectors as we\u0027ll be passing\n\nthat info at request dispatch with other stats now. This patch removes the\nexisting support for accounting sectors for a blkio_group. This will be added\nback differently in the next two patches.\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "67523c48aa74d5637848edeccf285af1c60bf14a",
      "tree": "ebd14992e210c8dfb503ae5fdffc1f5392ad52df",
      "parents": [
        "8ca712ea84728531d36841ca8f98f9e8680bcf4e"
      ],
      "author": {
        "name": "Ben Blum",
        "email": "bblum@andrew.cmu.edu",
        "time": "Wed Mar 10 15:22:11 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 12 15:52:36 2010 -0800"
      },
      "message": "cgroups: blkio subsystem as module\n\nModify the Block I/O cgroup subsystem to be able to be built as a module.\nAs the CFQ disk scheduler optionally depends on blk-cgroup, config options\nin block/Kconfig, block/Kconfig.iosched, and block/blk-cgroup.h are\nenhanced to support the new module dependency.\n\nSigned-off-by: Ben Blum \u003cbblum@andrew.cmu.edu\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "024f9066165ffe9c8284431c78adcbcddd309831",
      "tree": "11b64dd7861985aca57bd7624cd25c804afd4b1a",
      "parents": [
        "7f03292ee16e68be96aa88904afc6152f8d37736"
      ],
      "author": {
        "name": "Gui Jianfeng",
        "email": "guijianfeng@cn.fujitsu.com",
        "time": "Fri Feb 26 08:56:15 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 08:56:15 2010 +0100"
      },
      "message": "cfq: Remove useless css reference get\n\nThere\u0027s no need to take css reference here, for the caller\nhas already called rcu_read_lock() to prevent cgroup from\nbeing removed.\n\nSigned-off-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "bcf4dd43424cdfd8195f3955300a579fe58e9911",
      "tree": "ad4f94fdb111dc624b58a6caa9ce45da64c910ee",
      "parents": [
        "9e9432c267e4047db98b9d4fba95099c6effcef9"
      ],
      "author": {
        "name": "Gui Jianfeng",
        "email": "guijianfeng@cn.fujitsu.com",
        "time": "Mon Feb 01 09:58:54 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 01 09:58:54 2010 +0100"
      },
      "message": "blk-cgroup: Fix potential deadlock in blk-cgroup\n\nI triggered a lockdep warning as following.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n2.6.33-rc2 #1\n-------------------------------------------------------\ntest_io_control/7357 is trying to acquire lock:\n (blkio_list_lock){+.+...}, at: [\u003cc053a990\u003e] blkiocg_weight_write+0x82/0x9e\n\nbut task is already holding lock:\n (\u0026(\u0026blkcg-\u003elock)-\u003erlock){......}, at: [\u003cc053a949\u003e] blkiocg_weight_write+0x3b/0x9e\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #2 (\u0026(\u0026blkcg-\u003elock)-\u003erlock){......}:\n       [\u003cc04583b7\u003e] validate_chain+0x8bc/0xb9c\n       [\u003cc0458dba\u003e] __lock_acquire+0x723/0x789\n       [\u003cc0458eb0\u003e] lock_acquire+0x90/0xa7\n       [\u003cc0692b0a\u003e] _raw_spin_lock_irqsave+0x27/0x5a\n       [\u003cc053a4e1\u003e] blkiocg_add_blkio_group+0x1a/0x6d\n       [\u003cc053cac7\u003e] cfq_get_queue+0x225/0x3de\n       [\u003cc053eec2\u003e] cfq_set_request+0x217/0x42d\n       [\u003cc052c8a6\u003e] elv_set_request+0x17/0x26\n       [\u003cc0532a0f\u003e] get_request+0x203/0x2c5\n       [\u003cc0532ae9\u003e] get_request_wait+0x18/0x10e\n       [\u003cc0533470\u003e] __make_request+0x2ba/0x375\n       [\u003cc0531985\u003e] generic_make_request+0x28d/0x30f\n       [\u003cc0532da7\u003e] submit_bio+0x8a/0x8f\n       [\u003cc04d827a\u003e] submit_bh+0xf0/0x10f\n       [\u003cc04d91d2\u003e] ll_rw_block+0xc0/0xf9\n       [\u003cf86e9705\u003e] ext3_find_entry+0x319/0x544 [ext3]\n       [\u003cf86eae58\u003e] ext3_lookup+0x2c/0xb9 [ext3]\n       [\u003cc04c3e1b\u003e] do_lookup+0xd3/0x172\n       [\u003cc04c56c8\u003e] link_path_walk+0x5fb/0x95c\n       [\u003cc04c5a65\u003e] path_walk+0x3c/0x81\n       [\u003cc04c5b63\u003e] do_path_lookup+0x21/0x8a\n       [\u003cc04c66cc\u003e] do_filp_open+0xf0/0x978\n       [\u003cc04c0c7e\u003e] open_exec+0x1b/0xb7\n       [\u003cc04c1436\u003e] do_execve+0xbb/0x266\n       [\u003cc04081a9\u003e] sys_execve+0x24/0x4a\n       [\u003cc04028a2\u003e] ptregs_execve+0x12/0x18\n\n-\u003e #1 (\u0026(\u0026q-\u003e__queue_lock)-\u003erlock){..-.-.}:\n       [\u003cc04583b7\u003e] validate_chain+0x8bc/0xb9c\n       [\u003cc0458dba\u003e] __lock_acquire+0x723/0x789\n       [\u003cc0458eb0\u003e] lock_acquire+0x90/0xa7\n       [\u003cc0692b0a\u003e] _raw_spin_lock_irqsave+0x27/0x5a\n       [\u003cc053dd2a\u003e] cfq_unlink_blkio_group+0x17/0x41\n       [\u003cc053a6eb\u003e] blkiocg_destroy+0x72/0xc7\n       [\u003cc0467df0\u003e] cgroup_diput+0x4a/0xb2\n       [\u003cc04ca473\u003e] dentry_iput+0x93/0xb7\n       [\u003cc04ca4b3\u003e] d_kill+0x1c/0x36\n       [\u003cc04cb5c5\u003e] dput+0xf5/0xfe\n       [\u003cc04c6084\u003e] do_rmdir+0x95/0xbe\n       [\u003cc04c60ec\u003e] sys_rmdir+0x10/0x12\n       [\u003cc04027cc\u003e] sysenter_do_call+0x12/0x32\n\n-\u003e #0 (blkio_list_lock){+.+...}:\n       [\u003cc0458117\u003e] validate_chain+0x61c/0xb9c\n       [\u003cc0458dba\u003e] __lock_acquire+0x723/0x789\n       [\u003cc0458eb0\u003e] lock_acquire+0x90/0xa7\n       [\u003cc06929fd\u003e] _raw_spin_lock+0x1e/0x4e\n       [\u003cc053a990\u003e] blkiocg_weight_write+0x82/0x9e\n       [\u003cc0467f1e\u003e] cgroup_file_write+0xc6/0x1c0\n       [\u003cc04bd2f3\u003e] vfs_write+0x8c/0x116\n       [\u003cc04bd7c6\u003e] sys_write+0x3b/0x60\n       [\u003cc04027cc\u003e] sysenter_do_call+0x12/0x32\n\nother info that might help us debug this:\n\n1 lock held by test_io_control/7357:\n #0:  (\u0026(\u0026blkcg-\u003elock)-\u003erlock){......}, at: [\u003cc053a949\u003e] blkiocg_weight_write+0x3b/0x9e\nstack backtrace:\nPid: 7357, comm: test_io_control Not tainted 2.6.33-rc2 #1\nCall Trace:\n [\u003cc045754f\u003e] print_circular_bug+0x91/0x9d\n [\u003cc0458117\u003e] validate_chain+0x61c/0xb9c\n [\u003cc0458dba\u003e] __lock_acquire+0x723/0x789\n [\u003cc0458eb0\u003e] lock_acquire+0x90/0xa7\n [\u003cc053a990\u003e] ? blkiocg_weight_write+0x82/0x9e\n [\u003cc06929fd\u003e] _raw_spin_lock+0x1e/0x4e\n [\u003cc053a990\u003e] ? blkiocg_weight_write+0x82/0x9e\n [\u003cc053a990\u003e] blkiocg_weight_write+0x82/0x9e\n [\u003cc0467f1e\u003e] cgroup_file_write+0xc6/0x1c0\n [\u003cc0454df5\u003e] ? trace_hardirqs_off+0xb/0xd\n [\u003cc044d93a\u003e] ? cpu_clock+0x2e/0x44\n [\u003cc050e6ec\u003e] ? security_file_permission+0xf/0x11\n [\u003cc04bcdda\u003e] ? rw_verify_area+0x8a/0xad\n [\u003cc0467e58\u003e] ? cgroup_file_write+0x0/0x1c0\n [\u003cc04bd2f3\u003e] vfs_write+0x8c/0x116\n [\u003cc04bd7c6\u003e] sys_write+0x3b/0x60\n [\u003cc04027cc\u003e] sysenter_do_call+0x12/0x32\n\nTo prevent deadlock, we should take locks as following sequence:\n\nblkio_list_lock -\u003e queue_lock -\u003e  blkcg_lock.\n\nThe following patch should fix this bug.\n\nSigned-off-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "accee7854b378a8ab5995d8f5dc5d8abc3b3d23a",
      "tree": "431c8bc6fbe4afca06eb1ac16c06f1ce388d7a5c",
      "parents": [
        "bb729bc98c0f3e6a898d8730df3e2830bf68751a"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Mon Dec 07 19:29:39 2009 +1100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 07 09:47:07 2009 +0100"
      },
      "message": "block: include linux/err.h to use ERR_PTR\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "3e2520668970aab5a764044a298e987aafc1f63d",
      "tree": "088ebf7c4576d597774c8c332bab590dc3a472d6",
      "parents": [
        "9d6a986c0b276085f7944cd8ad65f4f82aff7536"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Dec 04 10:36:42 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 04 16:38:14 2009 +0100"
      },
      "message": "blkio: Implement dynamic io controlling policy registration\n\no One of the goals of block IO controller is that it should be able to\n  support mulitple io control policies, some of which be operational at\n  higher level in storage hierarchy.\n\no To begin with, we had one io controlling policy implemented by CFQ, and\n  I hard coded the CFQ functions called by blkio. This created issues when\n  CFQ is compiled as module.\n\no This patch implements a basic dynamic io controlling policy registration\n  functionality in blkio. This is similar to elevator functionality where\n  ioschedulers register the functions dynamically.\n\no Now in future, when more IO controlling policies are implemented, these\n  can dynakically register with block IO controller.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9d6a986c0b276085f7944cd8ad65f4f82aff7536",
      "tree": "1e72c813f4346ee329d5d427e214d183af78934f",
      "parents": [
        "b69f2292063d2caf37ca9aec7d63ded203701bf3"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Dec 04 10:36:41 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 04 16:38:14 2009 +0100"
      },
      "message": "blkio: Export some symbols from blkio as its user CFQ can be a module\n\no blkio controller is inside the kernel and cfq makes use of interfaces\n  exported by blkio. CFQ can be a module too, hence export symbols used\n  by CFQ.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f2eecb91522686edf8199947b77f435a4031d92f",
      "tree": "e584c9d81971fb741508c176d74ef51ff45a4bcc",
      "parents": [
        "2f5ea47712489a9d2d3cb832eb06062e4e64e0ec"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 04 10:06:35 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 04 10:06:35 2009 +0100"
      },
      "message": "cfq-iosched: move IO controller declerations to a header file\n\nThey should not be declared inside some other file that\u0027s not related\nto CFQ.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f8d461d692c341add957fb973fb5ee1f62039dc7",
      "tree": "42c6cf987aa4d38b271a60d2b62e92c6c748cd69",
      "parents": [
        "24610333d578478d354144ab4709a203684afc5f"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:52 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:53 2009 +0100"
      },
      "message": "blkio: Propagate cgroup weight updation to cfq groups\n\no Propagate blkio cgroup weight updation to associated cfq groups.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "220841906fccafaf4094e87bdb6d252e20cf8c7c",
      "tree": "f25b1f057887cf2a05bb8309e0b757149e052797",
      "parents": [
        "2868ef7b39490e6b41c2c61cd9a5cd891e778b54"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:49 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:52 2009 +0100"
      },
      "message": "blkio: Export disk time and sectors used by a group to user space\n\no Export disk time and sector used by a group to user space through cgroup\n  interface.\n\no Also export a \"dequeue\" interface to cgroup which keeps track of how many\n  a times a group was deleted from service tree. Helps in debugging.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2868ef7b39490e6b41c2c61cd9a5cd891e778b54",
      "tree": "e50e169e984d8bd201de2f73f98e31a65c028feb",
      "parents": [
        "b1c3576961847da26c91b1e97f226bb66be5fa3f"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:48 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:52 2009 +0100"
      },
      "message": "blkio: Some debugging aids for CFQ\n\no Some debugging aids for CFQ.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b1c3576961847da26c91b1e97f226bb66be5fa3f",
      "tree": "e228525220031232463f9cbbe017bad67807e6d4",
      "parents": [
        "25fb5169d4c9d4255107abbb7c08ab712434efc8"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:47 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:52 2009 +0100"
      },
      "message": "blkio: Take care of cgroup deletion and cfq group reference counting\n\no One can choose to change elevator or delete a cgroup. Implement group\n  reference counting so that both elevator exit and cgroup deletion can\n  take place gracefully.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Nauman Rafique \u003cnauman@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "31e4c28d95e64f2d5d3c497a3ecf37c62de635b4",
      "tree": "ffbb99b2565c4bdd4921fd7077164e7fc295b2bc",
      "parents": [
        "1fa8f6d68b5c8ca0a608fd8d296c5f07ac788cd6"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:42 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:51 2009 +0100"
      },
      "message": "blkio: Introduce blkio controller cgroup interface\n\no This is basic implementation of blkio controller cgroup interface. This is\n  the common interface visible to user space and should be used by different\n  IO control policies as we implement those.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    }
  ]
}
