)]}'
{
  "log": [
    {
      "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": "dcf097b247affd8b88ad410a92298590c5600f44",
      "tree": "d5394d82b06fa926c6e8d9b9f12c13249348e954",
      "parents": [
        "6a7cc883d6ad95bb89282fc04e917c16d2b5584f"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Apr 22 11:54:52 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu May 06 08:54:00 2010 +0200"
      },
      "message": "blk-cgroup: Fix RCU correctness warning in cfq_init_queue()\n\nIt is necessary to be in an RCU read-side critical section when invoking\ncss_id(), so this patch adds one to blkiocg_add_blkio_group().  This is\nactually a false positive, because this is called at initialization time\nand hence always refers to the root cgroup, which cannot go away.\n\n[  103.790505] \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[  103.790509] [ INFO: suspicious rcu_dereference_check() usage. ]\n[  103.790511] ---------------------------------------------------\n[  103.790514] kernel/cgroup.c:4432 invoked rcu_dereference_check() without protection!\n[  103.790517]\n[  103.790517] other info that might help us debug this:\n[  103.790519]\n[  103.790521]\n[  103.790521] rcu_scheduler_active \u003d 1, debug_locks \u003d 1\n[  103.790524] 4 locks held by bash/4422:\n[  103.790526]  #0:  (\u0026buffer-\u003emutex){+.+.+.}, at: [\u003cffffffff8114befa\u003e] sysfs_write_file+0x3c/0x144\n[  103.790537]  #1:  (s_active#102){.+.+.+}, at: [\u003cffffffff8114bfa5\u003e] sysfs_write_file+0xe7/0x144\n[  103.790544]  #2:  (\u0026q-\u003esysfs_lock){+.+.+.}, at: [\u003cffffffff812263b1\u003e] queue_attr_store+0x49/0x8f\n[  103.790552]  #3:  (\u0026(\u0026blkcg-\u003elock)-\u003erlock){......}, at: [\u003cffffffff8122e4db\u003e] blkiocg_add_blkio_group+0x2b/0xad\n[  103.790560]\n[  103.790561] stack backtrace:\n[  103.790564] Pid: 4422, comm: bash Not tainted 2.6.34-rc4-blkio-second-crash #81\n[  103.790567] Call Trace:\n[  103.790572]  [\u003cffffffff81068f57\u003e] lockdep_rcu_dereference+0x9d/0xa5\n[  103.790577]  [\u003cffffffff8107fac1\u003e] css_id+0x44/0x57\n[  103.790581]  [\u003cffffffff8122e503\u003e] blkiocg_add_blkio_group+0x53/0xad\n[  103.790586]  [\u003cffffffff81231936\u003e] cfq_init_queue+0x139/0x32c\n[  103.790591]  [\u003cffffffff8121f2d0\u003e] elv_iosched_store+0xbf/0x1bf\n[  103.790595]  [\u003cffffffff812263d8\u003e] queue_attr_store+0x70/0x8f\n[  103.790599]  [\u003cffffffff8114bfa5\u003e] ? sysfs_write_file+0xe7/0x144\n[  103.790603]  [\u003cffffffff8114bfc6\u003e] sysfs_write_file+0x108/0x144\n[  103.790609]  [\u003cffffffff810f527f\u003e] vfs_write+0xae/0x10b\n[  103.790612]  [\u003cffffffff81069863\u003e] ? trace_hardirqs_on_caller+0x10c/0x130\n[  103.790616]  [\u003cffffffff810f539c\u003e] sys_write+0x4a/0x6e\n[  103.790622]  [\u003cffffffff81002b5b\u003e] system_call_fastpath+0x16/0x1b\n[  103.790625]\n\nLocated-by: Miles Lane \u003cmiles.lane@gmail.com\u003e\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a534dbe96e9929c7245924d8252d89048c23d569",
      "tree": "394151a29dc2ea43e20cbf5b605732525ce09d9d",
      "parents": [
        "05ce7bfe547c9fa967d9cab6c37867a9cb6fb3fa"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Wed Apr 14 20:54:03 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 21 17:42:08 2010 +0200"
      },
      "message": "block: ensure jiffies wrap is handled correctly in blk_rq_timed_out_timer\n\nblk_rq_timed_out_timer() relied on blk_add_timer() never returning a\ntimer value of zero, but commit 7838c15b8dd18e78a523513749e5b54bda07b0cb\nremoved the code that bumped this value when it was zero.\nTherefore when jiffies is near wrap we could get unlucky \u0026 not set the\ntimeout value correctly.\n\nThis patch uses a flag to indicate that the timeout value was set and so\nhandles jiffies wrap correctly, and it keeps all the logic in one\nfunction so should be easier to maintain in the future.\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2f4084209adc77f9a1c9f38db3019a509e167882",
      "tree": "775657114c885505ecc46605e29ea1470e986f76",
      "parents": [
        "2f10ffcfb28beb35137d9e86992c771b4a6c5f2a",
        "3440c49f5c5ecb4f29b0544aa87da71888404f8f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 09 11:50:29 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 09 11:50:29 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block: (34 commits)\n  cfq-iosched: Fix the incorrect timeslice accounting with forced_dispatch\n  loop: Update mtime when writing using aops\n  block: expose the statistics in blkio.time and blkio.sectors for the root cgroup\n  backing-dev: Handle class_create() failure\n  Block: Fix block/elevator.c elevator_get() off-by-one error\n  drbd: lc_element_by_index() never returns NULL\n  cciss: unlock on error path\n  cfq-iosched: Do not merge queues of BE and IDLE classes\n  cfq-iosched: Add additional blktrace log messages in CFQ for easier debugging\n  i2o: Remove the dangerous kobj_to_i2o_device macro\n  block: remove 16 bytes of padding from struct request on 64bits\n  cfq-iosched: fix a kbuild regression\n  block: make CONFIG_BLK_CGROUP visible\n  Remove GENHD_FL_DRIVERFS\n  block: Export max number of segments and max segment size in sysfs\n  block: Finalize conversion of block limits functions\n  block: Fix overrun in lcm() and move it to lib\n  vfs: improve writeback_inodes_wb()\n  paride: fix off-by-one test\n  drbd: fix al-to-on-disk-bitmap for 4k logical_block_size\n  ...\n"
    },
    {
      "commit": "3440c49f5c5ecb4f29b0544aa87da71888404f8f",
      "tree": "62afdbc8eb90393e768d0770c20fc9b2c7e8e042",
      "parents": [
        "02246c41171097ceab3246f6dc251ac89de6004b"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Fri Apr 09 09:29:57 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 09 09:29:57 2010 +0200"
      },
      "message": "cfq-iosched: Fix the incorrect timeslice accounting with forced_dispatch\n\nWhen CFQ dispatches requests forcefully due to a barrier or changing iosched,\nit runs through all cfqq\u0027s dispatching requests and then expires each queue.\nHowever, it does not activate a cfqq before flushing its IOs resulting in\nusing stale values for computing slice_used.\nThis patch fixes it by calling activate queue before flushing reuqests from\neach queue.\n\nThis is useful mostly for barrier requests because when the iosched is changing\nit really doesnt matter if we have incorrect accounting since we\u0027re going to\nbreak down all structures anyway.\n\nWe also now expire the current timeslice before moving on with the dispatch\nto accurately account slice used for that cfqq.\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a74b2adae06265b8cfa335d7d40d4a5abd11e977",
      "tree": "13f3204faa4fc4bef6270bfaa269ea45474c39f1",
      "parents": [
        "144214537370b4f133a735446ebe86e90cfb2501"
      ],
      "author": {
        "name": "Ricky Benitez",
        "email": "rickyb@google.com",
        "time": "Mon Apr 05 18:22:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 05 18:22:17 2010 +0200"
      },
      "message": "block: expose the statistics in blkio.time and blkio.sectors for the root cgroup\n\nCurrently, the io statistics for the root cgroup are maintained, but\nthey are not shown because the device information is not available at\nthe point that the root blkio cgroup is created. This patch updates\nthe device information when the statistics are updated so that the\nstatistics become visible.\n\nSigned-off-by: Ricky Benitez \u003crickyb@google.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a506aedc51093544ff0f9610af6066d18cb6abbe",
      "tree": "3a23d5987c02a94eb46746ae29d50d2d9e38a150",
      "parents": [
        "b2b163dd47024e445410b72d0c5df6d819c14dfd"
      ],
      "author": {
        "name": "wzt.wzt@gmail.com",
        "email": "wzt.wzt@gmail.com",
        "time": "Fri Apr 02 08:41:14 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 02 08:41:14 2010 +0200"
      },
      "message": "Block: Fix block/elevator.c elevator_get() off-by-one error\n\nelevator_get() not check the name length, if the name length \u003e sizeof(elv),\nelv will miss the \u0027\\0\u0027. And elv buffer will be replace \"-iosched\" as something\nlike aaaaaaaaa, then call request_module() can load an not trust module.\n\nSigned-off-by: Zhitong Wang \u003czhitong.wangzt@alibaba-inc.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": "39c01b219fd30c74869b6fc8749f7900f04e9ef6",
      "tree": "7ce59210c28e2b53daf2957174d3ae164701b181",
      "parents": [
        "b1ffe737f5b743115ee46ffb59e338e580c54902"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Thu Mar 25 15:45:57 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Mar 25 15:46:38 2010 +0100"
      },
      "message": "cfq-iosched: Do not merge queues of BE and IDLE classes\n\nEven if they are found to be co-operating.\n\nThe prio_trees do not have any IDLE cfqqs on them. cfq_close_cooperator()\nis called from cfq_select_queue() and cfq_completed_request(). The latter\nensures that the close cooperator code does not get invoked if the current\ncfqq is of class IDLE but the former doesn\u0027t seem to have any such checks.\nSo an IDLE cfqq may get merged with a BE cfqq from the same group which\nshould be avoided.\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": "b1ffe737f5b743115ee46ffb59e338e580c54902",
      "tree": "fb069889c4832ff90adc63bfe422e607c9b0ebc8",
      "parents": [
        "8a6d9b149f105f8bdfa8e42dd9753e45a1887a16"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Thu Mar 25 15:45:03 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Mar 25 15:45:03 2010 +0100"
      },
      "message": "cfq-iosched: Add additional blktrace log messages in CFQ for easier debugging\n\nThese have helped us debug some issues we\u0027ve noticed in earlier IO\ncontroller versions and should be useful now as well. The extra logging\ncovers:\n- idling behavior. Since there are so many conditions based on which we decide\nto idle or not, this patch adds a log message for some conditions that we\u0027ve\nfound useful.\n- workload slices and current prio and workload type\n\nChangelog from v1:\no moved log message from cfq_set_active_queue() to __cfq_set_active_queue()\no changed queue_count to st-\u003ecount\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b4b7a4ef097f288f724420b473dbf92a89c0ab7e",
      "tree": "23ad8101e3e77c32a8d1e1b95a9c1cd7f7a475b7",
      "parents": [
        "e9ce335df51ff782035a15c261a3c0c9892a1767",
        "a3d3203e4bb40f253b1541e310dc0f9305be7c84"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Mar 19 08:05:10 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Mar 19 08:05:10 2010 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-linus\n\nConflicts:\n\tblock/Kconfig\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e9ce335df51ff782035a15c261a3c0c9892a1767",
      "tree": "9ecb3c0eab9dbb0117ad9d726456850ff2f49b78",
      "parents": [
        "910ac735bad53ce54741a72a5b19ab69794ae069"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Mar 19 08:03:04 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Mar 19 08:03:04 2010 +0100"
      },
      "message": "cfq-iosched: fix a kbuild regression\n\nAlex Shi reported a kbuild regression which is about 10% performance lost.\nHe bisected to this commit: 3dde36ddea3e07dd025c4c1ba47edec91606fec0.\nThe reason is cfqq_close() can\u0027t find close cooperator. Restoring\ncfq_rq_close()\u0027s threshold to original value makes the regression go away.\n\nSince for_preempt parameter isn\u0027t used anymore, this patch deletes it.\n\nReported-by: Alex Shi \u003calex.shi@intel.com\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Corrado Zoccolo \u003cczoccolo@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "910ac735bad53ce54741a72a5b19ab69794ae069",
      "tree": "ec5ae540280af53066142963695666a22a7e605f",
      "parents": [
        "97fedbbe1046b3118f49df249840ca21041eefe4"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Mar 16 08:57:15 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Mar 16 08:57:15 2010 +0100"
      },
      "message": "block: make CONFIG_BLK_CGROUP visible\n\nMake the config visible, so we can choose from CONFIG_BLK_CGROUP\u003dy\nand CONFIG_BLK_CGROUP\u003dm when CONFIG_IOSCHED_CFQ\u003dm.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c77a5710b7e23847bfdb81fcaa10b585f65c960a",
      "tree": "52a09887c6396d71545e321f508a511cfb9cdb0f",
      "parents": [
        "ee714f2dd33e726346e34f5cda12543162f4753e"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Mar 10 00:48:33 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Mar 15 12:48:00 2010 +0100"
      },
      "message": "block: Export max number of segments and max segment size in sysfs\n\nThese two values are useful when debugging issues surrounding maximum\nI/O size.  Put them in sysfs with the rest of the queue limits.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2cda2728aa1c8c006418a24f867b25e5eb7a32e2",
      "tree": "c23ec7c38d74237646c5453d96bfbbea4cadfee7",
      "parents": [
        "f11c9c5c259cb2c3d698548dc3936f773ab1f5b9"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Mar 15 12:46:51 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Mar 15 12:47:59 2010 +0100"
      },
      "message": "block: Fix overrun in lcm() and move it to lib\n\nlcm() was defined to take integer-sized arguments.  The supplied\narguments are multiplied, however, causing us to overflow given\nsufficiently large input.  That in turn led to incorrect optimal I/O\nsize reporting in some cases (RAID over RAID).\n\nSwitch lcm() over to unsigned long similar to gcd() and move the\nfunction from blk-settings.c to lib.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c32da02342b7521df25fefc2ef20aee0e61cf887",
      "tree": "7e38f664fa3e13602c357d37f77d8adcf82fccc2",
      "parents": [
        "dca1d9f6d7ae428c193f32bd3e9a4ca13176648b",
        "318ae2edc3b29216abd8a2510f3f80b764f06858"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 12 16:04:50 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 12 16:04:50 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (56 commits)\n  doc: fix typo in comment explaining rb_tree usage\n  Remove fs/ntfs/ChangeLog\n  doc: fix console doc typo\n  doc: cpuset: Update the cpuset flag file\n  Fix of spelling in arch/sparc/kernel/leon_kernel.c no longer needed\n  Remove drivers/parport/ChangeLog\n  Remove drivers/char/ChangeLog\n  doc: typo - Table 1-2 should refer to \"status\", not \"statm\"\n  tree-wide: fix typos \"ass?o[sc]iac?te\" -\u003e \"associate\" in comments\n  No need to patch AMD-provided drivers/gpu/drm/radeon/atombios.h\n  devres/irq: Fix devm_irq_match comment\n  Remove reference to kthread_create_on_cpu\n  tree-wide: Assorted spelling fixes\n  tree-wide: fix \u0027lenght\u0027 typo in comments and code\n  drm/kms: fix spelling in error message\n  doc: capitalization and other minor fixes in pnp doc\n  devres: typo fix s/dev/devm/\n  Remove redundant trailing semicolons from macros\n  fix typo \"definetly\" -\u003e \"definitely\" in comment\n  tree-wide: s/widht/width/g typo in comments\n  ...\n\nFix trivial conflict in Documentation/laptops/00-INDEX\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": "318ae2edc3b29216abd8a2510f3f80b764f06858",
      "tree": "ce595adde342f57f379d277b25e4dd206988a052",
      "parents": [
        "25cf84cf377c0aae5dbcf937ea89bc7893db5176",
        "3e58974027b04e84f68b964ef368a6cd758e2f84"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 08 16:55:37 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 08 16:55:37 2010 +0100"
      },
      "message": "Merge branch \u0027for-next\u0027 into for-linus\n\nConflicts:\n\tDocumentation/filesystems/proc.txt\n\tarch/arm/mach-u300/include/mach/debug-macro.S\n\tdrivers/net/qlge/qlge_ethtool.c\n\tdrivers/net/qlge/qlge_main.c\n\tdrivers/net/typhoon.c\n"
    },
    {
      "commit": "52cf25d0ab7f78eeecc59ac652ed5090f69b619e",
      "tree": "031d1ffb3890bd69c0260c864c512e0be62ac05c",
      "parents": [
        "6c1733aca0b48db4d0e660d54976a1cca25b5eaf"
      ],
      "author": {
        "name": "Emese Revfy",
        "email": "re.emese@gmail.com",
        "time": "Tue Jan 19 02:58:23 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Sun Mar 07 17:04:49 2010 -0800"
      },
      "message": "Driver core: Constify struct sysfs_ops in struct kobj_type\n\nConstify struct sysfs_ops.\n\nThis is part of the ops structure constification\neffort started by Arjan van de Ven et al.\n\nBenefits of this constification:\n\n * prevents modification of data that is shared\n   (referenced) by many other structure instances\n   at runtime\n\n * detects/prevents accidental (but not intentional)\n   modification attempts on archs that enforce\n   read-only kernel data at runtime\n\n * potentially better optimized code as the compiler\n   can assume that the const data cannot be changed\n\n * the compiler/linker move const data into .rodata\n   and therefore exclude them from false sharing\n\nSigned-off-by: Emese Revfy \u003cre.emese@gmail.com\u003e\nAcked-by: David Teigland \u003cteigland@redhat.com\u003e\nAcked-by: Matt Domsch \u003cMatt_Domsch@dell.com\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nAcked-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nAcked-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "4671a1322052425afa38fcb7980d2fd2bb0fc99b",
      "tree": "d31e221682a11e7af2771b426773dff249ed115c",
      "parents": [
        "73e9ffdd0cc8159f876d5e29ecf2d9c1bfca544f"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Mon Mar 01 10:57:22 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Mar 01 10:57:22 2010 +0100"
      },
      "message": "block: don\u0027t access jiffies when initialising io_context\n\nAs the comment says the initial value of last_waited is never used, so\nthere is no need to initialise it with the current jiffies. Jiffies is\nhot enough without accessing it for no reason.\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "73e9ffdd0cc8159f876d5e29ecf2d9c1bfca544f",
      "tree": "3c7382e98d82234ab4b6eddebcc939071c963c5e",
      "parents": [
        "91f63d0efa1b2ff3f8773aad61c2970f097232aa"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Mon Mar 01 10:50:20 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Mar 01 10:50:20 2010 +0100"
      },
      "message": "cfq: remove 8 bytes of padding from cfq_rb_root on 64 bit builds\n\nReorder cfq_rb_root to remove 8 bytes of padding on 64 bit builds.\n\nConsequently removing 56 bytes from cfq_group and 64 bytes from\ncfq_data.\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "abc3c744d0d7f4ad710a948ae73852ffea5fbc3b",
      "tree": "f3aebe4f1ee8138db560b049f84d30a4b7348e8a",
      "parents": [
        "9a8c28c8311e30ba97499447d5a11662f5aea094"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Mar 01 09:20:54 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Mar 01 09:20:54 2010 +0100"
      },
      "message": "cfq-iosched: quantum check tweak\n\nCurrently a queue can only dispatch up to 4 requests if there are other queues.\nThis isn\u0027t optimal, device can handle more requests, for example, AHCI can\nhandle 31 requests. I can understand the limit is for fairness, but we could\ndo a tweak: if the queue still has a lot of slice left, sounds we could\nignore the limit. Test shows this boost my workload (two thread randread of\na SSD) from 78m/s to 100m/s.\nThanks for suggestions from Corrado and Vivek for the patch.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "53c583d2269851de9df1c2e992cb2f7f124a5f55",
      "tree": "993a4f67663b4457771b7069513ad6e0471223b3",
      "parents": [
        "87c3a922a7ee8cfb9ab837f4ae38c993e9b30711"
      ],
      "author": {
        "name": "Corrado Zoccolo",
        "email": "czoccolo@gmail.com",
        "time": "Sun Feb 28 19:45:05 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Feb 28 19:45:05 2010 +0100"
      },
      "message": "cfq-iosched: requests \"in flight\" vs \"in driver\" clarification\n\nCounters for requests \"in flight\" and \"in driver\" are used asymmetrically\nin cfq_may_dispatch, and have slightly different meaning.\nWe split the rq_in_flight counter (was sync_flight) to count both sync\nand async requests, in order to use this one, which is more accurate in\nsome corner cases.\nThe rq_in_driver counter is coalesced, since individual sync/async counts\nare not used any more.\n\nSigned-off-by: Corrado Zoccolo \u003cczoccolo@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "41647e7a91338dba21773a16af7474ef95e0929e",
      "tree": "9520ffbb853af141af5b802fa00f5a2e4ed783bd",
      "parents": [
        "3dde36ddea3e07dd025c4c1ba47edec91606fec0"
      ],
      "author": {
        "name": "Corrado Zoccolo",
        "email": "czoccolo@gmail.com",
        "time": "Sat Feb 27 19:45:40 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Feb 28 19:41:25 2010 +0100"
      },
      "message": "cfq-iosched: rethink seeky detection for SSDs\n\nCFQ currently applies the same logic of detecting seeky queues and\ngrouping them together for rotational disks as well as SSDs.\nFor SSDs, the time to complete a request doesn\u0027t depend on the\nrequest location, but only on the size.\nThis patch therefore changes the criterion to group queues by\nrequest size in case of SSDs, in order to achieve better fairness.\n\nSigned-off-by: Corrado Zoccolo \u003cczoccolo@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "3dde36ddea3e07dd025c4c1ba47edec91606fec0",
      "tree": "0b8bbdb3fa9a08a3e4c6b0181a7b3325d578b111",
      "parents": [
        "6fc2de06ef1e691d032aa572478c905b7495a274"
      ],
      "author": {
        "name": "Corrado Zoccolo",
        "email": "czoccolo@gmail.com",
        "time": "Sat Feb 27 19:45:39 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Feb 28 19:41:25 2010 +0100"
      },
      "message": "cfq-iosched: rework seeky detection\n\nCurrent seeky detection is based on average seek lenght.\nThis is suboptimal, since the average will not distinguish between:\n* a process doing medium sized seeks\n* a process doing some sequential requests interleaved with larger seeks\nand even a medium seek can take lot of time, if the requested sector\nhappens to be behind the disk head in the rotation (50% probability).\n\nTherefore, we change the seeky queue detection to work as follows:\n* each request can be classified as sequential if it is very close to\n  the current head position, i.e. it is likely in the disk cache (disks\n  usually read more data than requested, and put it in cache for\n  subsequent reads). Otherwise, the request is classified as seeky.\n* an history window of the last 32 requests is kept, storing the\n  classification result.\n* A queue is marked as seeky if more than 1/8 of the last 32 requests\n  were seeky.\n\nThis patch fixes a regression reported by Yanmin, on mmap 64k random\nreads.\n\nReported-by: Yanmin Zhang \u003cyanmin_zhang@linux.intel.com\u003e\nSigned-off-by: Corrado Zoccolo \u003cczoccolo@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8a78362c4eefc1deddbefe2c7f38aabbc2429d6b",
      "tree": "c095d95af1aec0f9cee5975b1dcdc6bc1d17d401",
      "parents": [
        "086fa5ff0854c676ec333760f4c0154b3b242616"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:39 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:08 2010 +0100"
      },
      "message": "block: Consolidate phys_segment and hw_segment limits\n\nExcept for SCSI no device drivers distinguish between physical and\nhardware segment limits.  Consolidate the two into a single segment\nlimit.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "086fa5ff0854c676ec333760f4c0154b3b242616",
      "tree": "ee63fb3c7c7d964bd799355b7cde18ba95f91f07",
      "parents": [
        "eb28d31bc97e6374d81f404da309401ffaed467b"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:38 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:08 2010 +0100"
      },
      "message": "block: Rename blk_queue_max_sectors to blk_queue_max_hw_sectors\n\nThe block layer calling convention is blk_queue_\u003climit name\u003e.\nblk_queue_max_sectors predates this practice, leading to some confusion.\nRename the function to appropriately reflect that its intended use is to\nset max_hw_sectors.\n\nAlso introduce a temporary wrapper for backwards compability.  This can\nbe removed after the merge window is closed.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "eb28d31bc97e6374d81f404da309401ffaed467b",
      "tree": "580d750832dd1da39a5c93b91b8e069db3395b1c",
      "parents": [
        "e751e76a5f7adeee7438e68b0965559ad2864d0d"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:37 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:08 2010 +0100"
      },
      "message": "block: Add BLK_ prefix to definitions\n\nAdd a BLK_ prefix to block layer constants.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e751e76a5f7adeee7438e68b0965559ad2864d0d",
      "tree": "06b1863a484203d7a217fa33964ef2d80a2ad712",
      "parents": [
        "2800aac1114548a9b47b6e0d398117cc01b89685"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:36 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:07 2010 +0100"
      },
      "message": "block: Remove unused accessor function\n\nblk_queue_max_hw_sectors is no longer called by any subsystem and can be\nremoved.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2800aac1114548a9b47b6e0d398117cc01b89685",
      "tree": "ea85c83636e664ac955d721c440d99f8b06ca660",
      "parents": [
        "024f9066165ffe9c8284431c78adcbcddd309831"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:35 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:07 2010 +0100"
      },
      "message": "block: Update blk_queue_max_sectors and documentation\n\nClarify blk_queue_max_sectors and update documentation.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\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": "7f03292ee16e68be96aa88904afc6152f8d37736",
      "tree": "5c32738f0348449c2fa9688d52e6ecf4445d76f0",
      "parents": [
        "c5ecc484c528ff50bdbb16fbfbac758ee368b329",
        "baac35c4155a8aa826c70acee6553368ca5243a2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Feb 25 08:48:05 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Feb 25 08:48:05 2010 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.34\n\nConflicts:\n\tinclude/linux/blkdev.h\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "bddd87c7e622ea681c665049027ed84cdcafcb09",
      "tree": "152e6cd922e629c38398d3acefa929c2e33a7dda",
      "parents": [
        "d02f0cff1da4a1bd609e8d3eae3a2e85459cd8a1"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Tue Feb 23 08:55:42 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Feb 23 08:55:42 2010 +0100"
      },
      "message": "blk-core: use BIO list management functions\n\nNow that the bio list management stuff is generic, convert\ngeneric_make_request to use bio lists instead of its own private bio\nlist implementation.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "79da0644a8e0838522828f106e4049639eea6baf",
      "tree": "4dbb8e1a3a4be78a79f14e8ebac5d6fe817a2fb4",
      "parents": [
        "9f3a6284880ceea452903e2043c88d7226736318"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Feb 23 08:40:43 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Feb 23 08:40:43 2010 +0100"
      },
      "message": "Revert \"block: improve queue_should_plug() by looking at IO depths\"\n\nThis reverts commit fb1e75389bd06fd5987e9cda1b4e0305c782f854.\n\n\"Benjamin S.\" \u003csbenni@gmx.de\u003e reports that the patch in question\ncauses a big drop in sequential throughput for him, dropping from\n200MB/sec down to only 70MB/sec.\n\nNeeds to be investigated more fully, for now lets just revert the\noffending commit.\n\nConflicts:\n\n\tinclude/linux/blkdev.h\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c4081ba5c9f6f7bdffe49e501a8604a2c0797ef9",
      "tree": "2c2f59a61dc7a68088ff36262de3834b46334477",
      "parents": [
        "f11cbd74c5ff3614f6390b4de67a6ffdc614c378"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Mon Feb 22 13:49:24 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 22 13:49:24 2010 +0100"
      },
      "message": "cfq: reorder cfq_queue removing padding on 64bit\n\nThis removes 8 bytes of padding from struct cfq_queue on 64 bit builds,\nshrinking it\u0027s size to 256 bytes, so fitting into 1 fewer cachelines and\nallowing 1 more object/slab in it\u0027s kmem_cache.\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\n----\npatch against 2.6.33-rc8\ntested on x86_64 AMDX2\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f11cbd74c5ff3614f6390b4de67a6ffdc614c378",
      "tree": "6a30920ade9eeaac5bf6d6263b5d09712e882eb0",
      "parents": [
        "429c42c9d246f5bda868495c09974312a0177328",
        "aea187c46f7d03ce985e55eb1398d0776a15b928"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 22 13:48:51 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 22 13:48:51 2010 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.34\n"
    },
    {
      "commit": "3ad2f3fbb961429d2aa627465ae4829758bc7e07",
      "tree": "f365c513e8f5b477a61336a600ff54f32b7ad6e1",
      "parents": [
        "1537a3638cbf741d3826c1002026cce487a6bee0"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Wed Feb 03 08:01:28 2010 +0800"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Feb 09 11:13:56 2010 +0100"
      },
      "message": "tree-wide: Assorted spelling fixes\n\nIn particular, several occurances of funny versions of \u0027success\u0027,\n\u0027unknown\u0027, \u0027therefore\u0027, \u0027acknowledge\u0027, \u0027argument\u0027, \u0027achieve\u0027, \u0027address\u0027,\n\u0027beginning\u0027, \u0027desirable\u0027, \u0027separate\u0027 and \u0027necessary\u0027 are fixed.\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nCc: Junio C Hamano \u003cgitster@pobox.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "ae54abed636d18f7939c965f21ad126001dbe34c",
      "tree": "6eecccf1cb910073273699d58e620b99bf32d1a6",
      "parents": [
        "fc76be434d90bcd57a0ea6b93a2e66a3fec4b664"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Feb 05 13:11:45 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 05 13:11:45 2010 +0100"
      },
      "message": "cfq-iosched: split seeky coop queues after one slice\n\nCurrently we split seeky coop queues after 1s, which is too big. Below patch\nmarks seeky coop queue split_coop flag after one slice. After that, if new\nrequests come in, the queues will be splitted. Patch is suggested by Corrado.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nReviewed-by: Corrado Zoccolo \u003cczoccolo@gmail.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1efe8fe1c2240acc476bed77740883df63373862",
      "tree": "9aab2376b46432d721cdb7cf6f3be992a8951c0c",
      "parents": [
        "bcf4dd43424cdfd8195f3955300a579fe58e9911"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Tue Feb 02 20:45:46 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Feb 02 20:46:10 2010 +0100"
      },
      "message": "cfq-iosched: Do not idle on async queues\n\nFew weeks back, Shaohua Li had posted similar patch. I am reposting it\nwith more test results.\n\nThis patch does two things.\n\n- Do not idle on async queues.\n\n- It also changes the write queue depth CFQ drives (cfq_may_dispatch()).\n  Currently, we seem to driving queue depth of 1 always for WRITES. This is\n  true even if there is only one write queue in the system and all the logic\n  of infinite queue depth in case of single busy queue as well as slowly\n  increasing queue depth based on last delayed sync request does not seem to\n  be kicking in at all.\n\nThis patch will allow deeper WRITE queue depths (subjected to the other\nWRITE queue depth contstraints like cfq_quantum and last delayed sync\nrequest).\n\nShaohua Li had reported getting more out of his SSD. For me, I have got\none Lun exported from an HP EVA and when pure buffered writes are on, I\ncan get more out of the system. Following are test results of pure\nbuffered writes (with end_fsync\u003d1) with vanilla and patched kernel. These\nresults are average of 3 sets of run with increasing number of threads.\n\nAVERAGE[bufwfs][vanilla]\n-------\njob       Set NR  ReadBW(KB/s)   MaxClat(us)    WriteBW(KB/s)  MaxClat(us)\n---       --- --  ------------   -----------    -------------  -----------\nbufwfs    3   1   0              0              95349          474141\nbufwfs    3   2   0              0              100282         806926\nbufwfs    3   4   0              0              109989         2.7301e+06\nbufwfs    3   8   0              0              116642         3762231\nbufwfs    3   16  0              0              118230         6902970\n\nAVERAGE[bufwfs] [patched kernel]\n-------\nbufwfs    3   1   0              0              270722         404352\nbufwfs    3   2   0              0              206770         1.06552e+06\nbufwfs    3   4   0              0              195277         1.62283e+06\nbufwfs    3   8   0              0              260960         2.62979e+06\nbufwfs    3   16  0              0              299260         1.70731e+06\n\nI also ran buffered writes along with some sequential reads and some\nbuffered reads going on in the system on a SATA disk because the potential\nrisk could be that we should not be driving queue depth higher in presence\nof sync IO going to keep the max clat low.\n\nWith some random and sequential reads going on in the system on one SATA\ndisk I did not see any significant increase in max clat. So it looks like\nother WRITE queue depth control logic is doing its job. Here are the\nresults.\n\nAVERAGE[brr, bsr, bufw together] [vanilla]\n-------\njob       Set NR  ReadBW(KB/s)   MaxClat(us)    WriteBW(KB/s)  MaxClat(us)\n---       --- --  ------------   -----------    -------------  -----------\nbrr       3   1   850            546345         0              0\nbsr       3   1   14650          729543         0              0\nbufw      3   1   0              0              23908          8274517\n\nbrr       3   2   981.333        579395         0              0\nbsr       3   2   14149.7        1175689        0              0\nbufw      3   2   0              0              21921          1.28108e+07\n\nbrr       3   4   898.333        1.75527e+06    0              0\nbsr       3   4   12230.7        1.40072e+06    0              0\nbufw      3   4   0              0              19722.3        2.4901e+07\n\nbrr       3   8   900            3160594        0              0\nbsr       3   8   9282.33        1.91314e+06    0              0\nbufw      3   8   0              0              18789.3        23890622\n\nAVERAGE[brr, bsr, bufw mixed] [patched kernel]\n-------\njob       Set NR  ReadBW(KB/s)   MaxClat(us)    WriteBW(KB/s)  MaxClat(us)\n---       --- --  ------------   -----------    -------------  -----------\nbrr       3   1   837            417973         0              0\nbsr       3   1   14357.7        591275         0              0\nbufw      3   1   0              0              24869.7        8910662\n\nbrr       3   2   1038.33        543434         0              0\nbsr       3   2   13351.3        1205858        0              0\nbufw      3   2   0              0              18626.3        13280370\n\nbrr       3   4   913            1.86861e+06    0              0\nbsr       3   4   12652.3        1430974        0              0\nbufw      3   4   0              0              15343.3        2.81305e+07\n\nbrr       3   8   890            2.92695e+06    0              0\nbsr       3   8   9635.33        1.90244e+06    0              0\nbufw      3   8   0              0              17200.3        24424392\n\nSo looks like it might make sense to include this patch.\n\nThanks\nVivek\n\nSigned-off-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": "488991e28e55b4fbca8067edf0259f69d1a6f92c",
      "tree": "fea5e0aca42e338137cc050e66aaeb5f539e3d21",
      "parents": [
        "47483e25205f1f8d79784f0f7c733941bc080ec0"
      ],
      "author": {
        "name": "Alan D. Brunelle",
        "email": "Alan.Brunelle@hp.com",
        "time": "Fri Jan 29 09:04:08 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 29 09:04:08 2010 +0100"
      },
      "message": "block: Added in stricter no merge semantics for block I/O\n\nUpdated \u0027nomerges\u0027 tunable to accept a value of \u00272\u0027 - indicating that _no_\nmerges at all are to be attempted (not even the simple one-hit cache).\n\nThe following table illustrates the additional benefit - 5 minute runs of\na random I/O load were applied to a dozen devices on a 16-way x86_64 system.\n\nnomerges        Throughput      %System         Improvement (tput / %sys)\n--------        ------------    -----------     -------------------------\n0               12.45 MB/sec    0.669365609\n1               12.50 MB/sec    0.641519199     0.40% / 2.71%\n2               12.52 MB/sec    0.639849750     0.56% / 2.96%\n\nSigned-off-by: Alan D. Brunelle \u003calan.brunelle@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "875feb63b9567442be73efbcc9a8470e376d6423",
      "tree": "554331e9634a5327daa755bb1b3338697866018b",
      "parents": [
        "7af92f8754b87bc78cbfd447d5f4096b25c46682"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Wed Jan 06 18:58:20 2010 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 11 16:16:18 2010 +0100"
      },
      "message": "cfq-iosched: Respect ioprio_class when preempting\n\nIn cfq_should_preempt(), we currently allow some cases where a non-RT request\ncan preempt an ongoing RT cfqq timeslice. This should not happen.\nExamples include:\n\no A sync_noidle wl type non-RT request pre-empting a sync_noidle wl type cfqq\n  on which we are idling.\no Once we have per-cgroup async queues, a non-RT sync request pre-empting a RT\n  async cfqq.\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e03a72e13648ac6277bf2bab6b8324d51f89c0fa",
      "tree": "a01a2e072a5b225f22bd8bfa75f5270a527a4e4b",
      "parents": [
        "ce289321b7dc1eb108e3df0dec872b7429ef49f7"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Jan 11 03:21:51 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 11 14:30:09 2010 +0100"
      },
      "message": "block: Stop using byte offsets\n\nAll callers of the stacking functions use 512-byte sector units rather\nthan byte offsets.  Simplify the code so the stacking functions take\nsectors when specifying data offsets.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ce289321b7dc1eb108e3df0dec872b7429ef49f7",
      "tree": "9153bc19d805d796b7a9ddac04d2d060a9d3261e",
      "parents": [
        "b27d7f16d3c6c27345d4280a739809c1c2c4c0b5"
      ],
      "author": {
        "name": "Kirill Afonshin",
        "email": "kirill_nnov@mail.ru",
        "time": "Fri Jan 08 22:09:59 2010 +0300"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 11 14:29:20 2010 +0100"
      },
      "message": "block: removed unused as_io_context\n\nIt isn\u0027t used anymore, since AS was deleted.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "17be8c245054b9c7786545af3ba3ca4e54cd4ad9",
      "tree": "563687812bbb1b08643dfcc25997e34eb22a71b5",
      "parents": [
        "dd3d145d49c5816b79acc6761ebbd842bc50b0ee"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Jan 11 03:21:49 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 11 14:29:20 2010 +0100"
      },
      "message": "block: bdev_stack_limits wrapper\n\nDM does not want to know about partition offsets.  Add a partition-aware\nwrapper that DM can use when stacking block devices.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nReviewed-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "dd3d145d49c5816b79acc6761ebbd842bc50b0ee",
      "tree": "107bdb2f46c6aa6bc482909d7ebdbb1da40b7b4f",
      "parents": [
        "fe0b393f2c0a0d23a9bc9ed7dc51a1ee511098bd"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Jan 11 03:21:48 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 11 14:29:19 2010 +0100"
      },
      "message": "block: Fix discard alignment calculation and printing\n\nDiscard alignment reporting for partitions was incorrect.  Update to\nmatch the algorithm used elsewhere.\n\nThe alignment can be negative (misaligned).  Fix format string\naccordingly.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fe0b393f2c0a0d23a9bc9ed7dc51a1ee511098bd",
      "tree": "557e3d8583bf9cebb127066f0c5487691c3f786b",
      "parents": [
        "c1152949bbdfddf8fc857a883294461d757d5332"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Jan 11 03:21:47 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 11 14:29:19 2010 +0100"
      },
      "message": "block: Correct handling of bottom device misaligment\n\nThe top device misalignment flag would not be set if the added bottom\ndevice was already misaligned as opposed to causing a stacking failure.\n\nAlso massage the reporting so that an error is only returned if adding\nthe bottom device caused the misalignment.  I.e. don\u0027t return an error\nif the top is already flagged as misaligned.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e79e95db5cffb2e01170d510686489c40937faa1",
      "tree": "b21b0f4be2edf79f3e68c628c3022cda6a72e949",
      "parents": [
        "81744ee44ab2845c16ffd7d6f762f7b4a49a4750"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Tue Dec 29 08:53:54 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Dec 29 08:53:54 2009 +0100"
      },
      "message": "block: Honor the gfp_mask for alloc_page() in blkdev_issue_discard()\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "81744ee44ab2845c16ffd7d6f762f7b4a49a4750",
      "tree": "c3d0cca0e71080ecd8423cef8af1c632fc444764",
      "parents": [
        "2f7a2d89a8b5915d89ad9ebeb0065db7d5831cea"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Dec 29 08:35:35 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Dec 29 08:35:35 2009 +0100"
      },
      "message": "block: Fix incorrect alignment offset reporting and update documentation\n\nqueue_sector_alignment_offset returned the wrong value which caused\npartitions to report an incorrect alignment_offset.  Since offset\nalignment calculation is needed several places it has been split into a\nseparate helper function.  The topology stacking function has been\nupdated accordingly.\n\nFurthermore, comments have been added to clarify how the stacking\nfunction works.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nTested-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2f7a2d89a8b5915d89ad9ebeb0065db7d5831cea",
      "tree": "776c4a7e47b07437c30411d7324b5a1c7de01696",
      "parents": [
        "6ec1480d8539c8e2e6ba7fbbeffe5adc640bfe98"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Dec 28 13:18:44 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 28 13:18:44 2009 +0100"
      },
      "message": "cfq-iosched: don\u0027t regard requests with long distance as close\n\nseek_mean could be very big sometimes, using it as close criteria is meaningless\nas this doen\u0027t improve any performance. So if it\u0027s big, let\u0027s fallback to\ndefault value.\n\nReviewed-by: Corrado Zoccolo \u003cczoccolo@gmail.com\u003e\nSigned-off-by: Shaohua Li\u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9504e0864b58b4a304820dcf3755f1da80d5e72f",
      "tree": "1e5bc5e7b2c57b343fab13709178be3aff6f477e",
      "parents": [
        "65b32a573eefa1cdd3cbe5ea59326308e6c3b9ad"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Dec 21 15:55:51 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 21 15:55:51 2009 +0100"
      },
      "message": "block: Fix topology stacking for data and discard alignment\n\nThe stacking code incorrectly scaled up the data offset in some cases\ncausing misaligned devices to report alignment.  Rewrite the stacking\nalgorithm to remedy this and apply the same alignment principles to the\ndiscard handling.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "65b32a573eefa1cdd3cbe5ea59326308e6c3b9ad",
      "tree": "bdcca029d184056ffc9eab0a9c0b95cdf123c9fb",
      "parents": [
        "fb104db41e6e006c85ce1097f372cd1e10c1755c"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Dec 16 17:52:59 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 18 12:40:21 2009 +0100"
      },
      "message": "cfq-iosched: Remove prio_change logic for workload selection\n\no CFQ now internally divides cfq queues in therr workload categories. sync-idle,\n  sync-noidle and async. Which workload to run depends primarily on rb_key\n  offset across three service trees. Which is a combination of mulitiple things\n  including what time queue got queued on the service tree.\n\n  There is one exception though. That is if we switched the prio class, say\n  we served some RT tasks and again started serving BE class, then with-in\n  BE class we always started with sync-noidle workload irrespective of rb_key\n  offset in service trees.\n\n  This can provide better latencies for sync-noidle workload in the presence\n  of RT tasks.\n\no This patch gets rid of that exception and which workload to run with-in\n  class always depends on lowest rb_key across service trees. The reason\n  being that now we have multiple BE class groups and if we always switch\n  to sync-noidle workload with-in group, we can potentially starve a sync-idle\n  workload with-in group. Same is true for async workload which will be in\n  root group. Also the workload-switching with-in group will become very\n  unpredictable as it now depends whether some RT workload was running in\n  the system or not.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nReviewed-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nAcked-by: Corrado Zoccolo \u003cczoccolo@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fb104db41e6e006c85ce1097f372cd1e10c1755c",
      "tree": "b769fd161d325f959e3c2c36116c5eb2f0e29f00",
      "parents": [
        "1db32c40600437c5e049796bd32f49f61244c6ef"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Dec 16 17:52:58 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 18 12:40:21 2009 +0100"
      },
      "message": "cfq-iosched: Get rid of nr_groups\n\no Currently code does not seem to be using cfqd-\u003enr_groups. Get rid of it.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nReviewed-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1db32c40600437c5e049796bd32f49f61244c6ef",
      "tree": "09f72cf149d7d9034bc3cbcf9597e413c081c5d3",
      "parents": [
        "4a63b030d75a063b910b2bab014d84837cb33eb7"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Dec 16 17:52:57 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 18 12:40:21 2009 +0100"
      },
      "message": "cfq-iosched: Remove the check for same cfq group from allow_merge\n\no allow_merge() already checks if submitting task is pointing to same cfqq\n  as rq has been queued in. If everything is fine, we should not be having\n  a task in one cgroup and having a pointer to cfqq in other cgroup.\n\n  Well I guess in some situations it can happen and that is, when a random\n  IO queue has been moved into root cgroup for group_isolation\u003d0. In\n  this case, tasks\u0027s cgroup/group is different from where actually cfqq is,\n  but this is intentional and in this case merging should be allowed.\n\n  The second situation is where due to close cooperator patches, multiple\n  processes can be sharing a cfqq. If everything implemented right, we should\n  not end up in a situation where tasks from different processes in different\n  groups are sharing the same cfqq as we allow merging of cooperating queues\n  only if they are in same group.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nReviewed-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b568be627a7270eba575bc4406a606e1545f91bb",
      "tree": "1afa91fcd56f9ec77ccf1063d79aa2664675c193",
      "parents": [
        "8bea8672edfca7ec5f661cafb218f1205863b343"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 16 09:16:41 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 16 09:16:41 2009 +0100"
      },
      "message": "block: temporarily disable discard granularity\n\nCommit 86b37281411cf1e9bc0a6b5406c45edb7bd9ea5d adds a check for\nmisaligned stacking offsets, but it\u0027s buggy since the defaults are 0.\nHence all dm devices that pass in a non-zero starting offset will\nbe marked as misaligned amd dm will complain.\n\nA real fix is coming, in the mean time disable the discard granularity\ncheck so that users don\u0027t worry about dm reporting about misaligned\ndevices.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "51b736b85155a56543fda8aeca5f8592795d7983",
      "tree": "937c8be978bf66084128cd62fca3e94fa50c3f36",
      "parents": [
        "a8aa1ebdf880ebe7b5738ccebf67e18d62cbdc0b",
        "66ae291978177d5c012015f12b8fbc76dc7d0965"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 09:11:28 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 09:11:28 2009 -0800"
      },
      "message": "Merge branch \u0027for-2.6.33\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.33\u0027 of git://git.kernel.dk/linux-2.6-block:\n  cfq: set workload as expired if it doesn\u0027t have any slice left\n  Fix a CFQ crash in \"for-2.6.33\" branch of block tree\n  cfq: Remove wait_request flag when idle time is being deleted\n  cfq-iosched: commenting non-obvious initialization\n  cfq-iosched: Take care of corner cases of group losing share due to deletion\n  cfq-iosched: Get rid of cfqq wait_busy_done flag\n  cfq: Optimization for close cooperating queue searching\n  block,xd: Delay allocation of DMA buffers until device is known\n  drbd: Following the hmac change to SHASH (see linux commit 8bd1209cfff)\n  cfq-iosched: reduce write depth only if sync was delayed\n"
    },
    {
      "commit": "66ae291978177d5c012015f12b8fbc76dc7d0965",
      "tree": "1351d66beea2b0b2300a7491ca8d9ffb83578e34",
      "parents": [
        "82bbbf28db4beefcd8b897800153e21378270cd1"
      ],
      "author": {
        "name": "Gui Jianfeng",
        "email": "guijianfeng@cn.fujitsu.com",
        "time": "Tue Dec 15 10:08:45 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Dec 15 10:08:45 2009 +0100"
      },
      "message": "cfq: set workload as expired if it doesn\u0027t have any slice left\n\nWhen a group is resumed, if it doesn\u0027t have workload slice left,\nwe should set workload_expires as expired. Otherwise, we might\nstart from where we left in previous group by error.\nThanks the idea from Corrado.\n\nSigned-off-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "82bbbf28db4beefcd8b897800153e21378270cd1",
      "tree": "3e8a437711010c14d2e9e88dcf29afcfecf7ba9a",
      "parents": [
        "554554f60ad619e1efab01897208bc320b81d9da"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 10 19:25:41 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 10 19:25:41 2009 +0100"
      },
      "message": "Fix a CFQ crash in \"for-2.6.33\" branch of block tree\n\nI think my previous patch introduced a bug which can lead to CFQ hitting\nBUG_ON().\n\nThe offending commit in for-2.6.33 branch is.\n\ncommit 7667aa0630407bc07dc38dcc79d29cc0a65553c1\nAuthor: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nDate:   Tue Dec 8 17:52:58 2009 -0500\n\n    cfq-iosched: Take care of corner cases of group losing share due to deletion\n\nWhile doing some stress testing on my box, I enountered following.\n\nlogin: [ 3165.148841] BUG: scheduling while\natomic: swapper/0/0x10000100\n[ 3165.149821] Modules linked in: cfq_iosched dm_multipath qla2xxx igb\nscsi_transport_fc dm_snapshot [last unloaded: scsi_wait_scan]\n[ 3165.149821] Pid: 0, comm: swapper Not tainted\n2.6.32-block-for-33-merged-new #3\n[ 3165.149821] Call Trace:\n[ 3165.149821]  \u003cIRQ\u003e  [\u003cffffffff8103fab8\u003e] __schedule_bug+0x5c/0x60\n[ 3165.149821]  [\u003cffffffff8103afd7\u003e] ? __wake_up+0x44/0x4d\n[ 3165.149821]  [\u003cffffffff8153a979\u003e] schedule+0xe3/0x7bc\n[ 3165.149821]  [\u003cffffffff8103a796\u003e] ? cpumask_next+0x1d/0x1f\n[ 3165.149821]  [\u003cffffffffa000b21d\u003e] ? cfq_dispatch_requests+0x6ba/0x93e\n[cfq_iosched]\n[ 3165.149821]  [\u003cffffffff810422d8\u003e] __cond_resched+0x2a/0x35\n[ 3165.149821]  [\u003cffffffffa000b21d\u003e] ? cfq_dispatch_requests+0x6ba/0x93e\n[cfq_iosched]\n[ 3165.149821]  [\u003cffffffff8153b1ee\u003e] _cond_resched+0x2c/0x37\n[ 3165.149821]  [\u003cffffffff8100e2db\u003e] is_valid_bugaddr+0x16/0x2f\n[ 3165.149821]  [\u003cffffffff811e4161\u003e] report_bug+0x18/0xac\n[ 3165.149821]  [\u003cffffffff8100f1fc\u003e] die+0x39/0x63\n[ 3165.149821]  [\u003cffffffff8153cde1\u003e] do_trap+0x11a/0x129\n[ 3165.149821]  [\u003cffffffff8100d470\u003e] do_invalid_op+0x96/0x9f\n[ 3165.149821]  [\u003cffffffffa000b21d\u003e] ? cfq_dispatch_requests+0x6ba/0x93e\n[cfq_iosched]\n[ 3165.149821]  [\u003cffffffff81034b4d\u003e] ? enqueue_task+0x5c/0x67\n[ 3165.149821]  [\u003cffffffff8103ae83\u003e] ? task_rq_unlock+0x11/0x13\n[ 3165.149821]  [\u003cffffffff81041aae\u003e] ? try_to_wake_up+0x292/0x2a4\n[ 3165.149821]  [\u003cffffffff8100c935\u003e] invalid_op+0x15/0x20\n[ 3165.149821]  [\u003cffffffffa000b21d\u003e] ? cfq_dispatch_requests+0x6ba/0x93e\n[cfq_iosched]\n[ 3165.149821]  [\u003cffffffff810df5a6\u003e] ? virt_to_head_page+0xe/0x2f\n[ 3165.149821]  [\u003cffffffff811d8c2a\u003e] blk_peek_request+0x191/0x1a7\n[ 3165.149821]  [\u003cffffffff811e5b8d\u003e] ? kobject_get+0x1a/0x21\n[ 3165.149821]  [\u003cffffffff812c8d4c\u003e] scsi_request_fn+0x82/0x3df\n[ 3165.149821]  [\u003cffffffff8110b2de\u003e] ? bio_fs_destructor+0x15/0x17\n[ 3165.149821]  [\u003cffffffff810df5a6\u003e] ? virt_to_head_page+0xe/0x2f\n[ 3165.149821]  [\u003cffffffff811d931f\u003e] __blk_run_queue+0x42/0x71\n[ 3165.149821]  [\u003cffffffff811d9403\u003e] blk_run_queue+0x26/0x3a\n[ 3165.149821]  [\u003cffffffff812c8761\u003e] scsi_run_queue+0x2de/0x375\n[ 3165.149821]  [\u003cffffffff812b60ac\u003e] ? put_device+0x17/0x19\n[ 3165.149821]  [\u003cffffffff812c92d7\u003e] scsi_next_command+0x3b/0x4b\n[ 3165.149821]  [\u003cffffffff812c9b9f\u003e] scsi_io_completion+0x1c9/0x3f5\n[ 3165.149821]  [\u003cffffffff812c3c36\u003e] scsi_finish_command+0xb5/0xbe\n\nI think I have hit following BUG_ON() in cfq_dispatch_request().\n\nBUG_ON(RB_EMPTY_ROOT(\u0026cfqq-\u003esort_list));\n\nPlease find attached the patch to fix it. I have done some stress testing\nwith it and have not seen it happening again.\n\no We should wait on a queue even after slice expiry only if it is empty. If\n  queue is not empty then continue to expire it.\n\no If we decide to keep the queue then make cfqq\u003dNULL. Otherwise select_queue()\n  will return a valid cfqq and cfq_dispatch_request() can hit following\n  BUG_ON().\n\n  BUG_ON(RB_EMPTY_ROOT(\u0026cfqq-\u003esort_list))\n\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "554554f60ad619e1efab01897208bc320b81d9da",
      "tree": "b240b0e65dc763c6c2f7b5661f59ad4bcb0385b3",
      "parents": [
        "edc71131c4dc6cc73e2a24aa0a7a79cfce738f12"
      ],
      "author": {
        "name": "Gui Jianfeng",
        "email": "guijianfeng@cn.fujitsu.com",
        "time": "Thu Dec 10 09:38:39 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 10 09:38:39 2009 +0100"
      },
      "message": "cfq: Remove wait_request flag when idle time is being deleted\n\nRemove wait_request flag when idle time is being deleted, otherwise\nit\u0027ll hit this path every time when a request is enqueued.\n\nSigned-off-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4ef58d4e2ad1fa2a3e5bbf41af2284671fca8cf8",
      "tree": "856ba96302a36014736747e8464f80eeb827bbdd",
      "parents": [
        "f6c4c8195b5e7878823caa1181be404d9e86d369",
        "d014d043869cdc591f3a33243d3481fa4479c2d0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 19:43:33 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 09 19:43:33 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (42 commits)\n  tree-wide: fix misspelling of \"definition\" in comments\n  reiserfs: fix misspelling of \"journaled\"\n  doc: Fix a typo in slub.txt.\n  inotify: remove superfluous return code check\n  hdlc: spelling fix in find_pvc() comment\n  doc: fix regulator docs cut-and-pasteism\n  mtd: Fix comment in Kconfig\n  doc: Fix IRQ chip docs\n  tree-wide: fix assorted typos all over the place\n  drivers/ata/libata-sff.c: comment spelling fixes\n  fix typos/grammos in Documentation/edac.txt\n  sysctl: add missing comments\n  fs/debugfs/inode.c: fix comment typos\n  sgivwfb: Make use of ARRAY_SIZE.\n  sky2: fix sky2_link_down copy/paste comment error\n  tree-wide: fix typos \"couter\" -\u003e \"counter\"\n  tree-wide: fix typos \"offest\" -\u003e \"offset\"\n  fix kerneldoc for set_irq_msi()\n  spidev: fix double \"of of\" in comment\n  comment typo fix: sybsystem -\u003e subsystem\n  ...\n"
    },
    {
      "commit": "edc71131c4dc6cc73e2a24aa0a7a79cfce738f12",
      "tree": "b568734b3f053be12f0dabcf2ceea1049537cea1",
      "parents": [
        "7667aa0630407bc07dc38dcc79d29cc0a65553c1"
      ],
      "author": {
        "name": "Corrado Zoccolo",
        "email": "czoccolo@gmail.com",
        "time": "Wed Dec 09 20:56:04 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 09 20:56:04 2009 +0100"
      },
      "message": "cfq-iosched: commenting non-obvious initialization\n\nAdded a comment to explain the initialization of last_delayed_sync.\n\nSigned-off-by: Corrado Zoccolo \u003cczoccolo@gmail.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7667aa0630407bc07dc38dcc79d29cc0a65553c1",
      "tree": "cd9007b2dfebec215d955952ea0f9914490bddaa",
      "parents": [
        "c244bb50a9baa2ec47a458bbafb36b5e559ed5fa"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Tue Dec 08 17:52:58 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 09 15:11:04 2009 +0100"
      },
      "message": "cfq-iosched: Take care of corner cases of group losing share due to deletion\n\nIf there is a sequential reader running in a group, we wait for next request\nto come in that group after slice expiry and once new request is in, we expire\nthe queue. Otherwise we delete the group from service tree and group looses\nits fair share.\n\nSo far I was marking a queue as wait_busy if it had consumed its slice and\nit was last queue in the group. But this condition did not cover following\ntwo cases.\n\n1.If a request completed and slice has not expired yet. Next request comes\n  in and is dispatched to disk. Now select_queue() hits and slice has expired.\n  This group will be deleted. Because request is still in the disk, this queue\n  will never get a chance to wait_busy.\n\n2.If request completed and slice has not expired yet. Before next request\n  comes in (delay due to think time), select_queue() hits and expires the\n  queue hence group. This queue never got a chance to wait busy.\n\nGui was hitting the boundary condition 1 and not getting fairness numbers\nproportional to weight.\n\nThis patch puts the checks for above two conditions and improves the fairness\nnumbers for sequential workload on rotational media. Check in select_queue()\ntakes care of case 1 and additional check in should_wait_busy() takes care\nof case 2.\n\nReported-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c244bb50a9baa2ec47a458bbafb36b5e559ed5fa",
      "tree": "946c9c87e21055ff371a05710c7a0bcf71bdcc18",
      "parents": [
        "b9d8f4c73b1af4cfd53f819bf84c2bce31232275"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Tue Dec 08 17:52:57 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 09 15:11:03 2009 +0100"
      },
      "message": "cfq-iosched: Get rid of cfqq wait_busy_done flag\n\no Get rid of wait_busy_done flag. This flag only tells we were doing wait\n  busy on a queue and that queue got request so expire it. That information\n  can easily be obtained by (cfq_cfqq_wait_busy() \u0026\u0026 queue_is_not_empty). So\n  remove this flag and keep code simple.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b9d8f4c73b1af4cfd53f819bf84c2bce31232275",
      "tree": "2ae92bc6cabfd9d2308902c3ac92f04fe6fbf1fb",
      "parents": [
        "a3b8d92d25212c5b6534ae9b347ed2858de78336"
      ],
      "author": {
        "name": "Gui Jianfeng",
        "email": "guijianfeng@cn.fujitsu.com",
        "time": "Tue Dec 08 08:54:17 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 09 15:11:03 2009 +0100"
      },
      "message": "cfq: Optimization for close cooperating queue searching\n\nIt doesn\u0027t make any sense to try to find out a close cooperating\nqueue if current cfqq is the only one in the group.\n\nSigned-off-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "573412b29586e58477adb70e022193a337763319",
      "tree": "757ebcc4da3ba7b8d8beb8e8e0ff6a4fe4428f52",
      "parents": [
        "2b876f95d03e226394b5d360c86127cbefaf614b"
      ],
      "author": {
        "name": "Corrado Zoccolo",
        "email": "czoccolo@gmail.com",
        "time": "Sun Dec 06 11:48:52 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.(none)",
        "time": "Wed Dec 09 12:32:55 2009 +0100"
      },
      "message": "cfq-iosched: reduce write depth only if sync was delayed\n\nThe introduction of ramp-up formula for async queue depths has\nslowed down dirty page reclaim, by reducing async write performance.\nThis patch makes sure the formula kicks in only when sync request\nwas recently delayed.\n\nSigned-off-by: Corrado Zoccolo \u003cczoccolo@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "878eaddd05d251cefa9632c2b8046833c5eead66",
      "tree": "a5bf9b6c1856969ff7a7cd0d676ea2b419072103",
      "parents": [
        "accee7854b378a8ab5995d8f5dc5d8abc3b3d23a"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon Dec 07 19:37:15 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.(none)",
        "time": "Mon Dec 07 19:37:15 2009 +0100"
      },
      "message": "cfq-iosched: Do not access cfqq after freeing it\n\nFix a crash during boot reported by Jeff Moyer. Fix the issue of accessing\ncfqq after freeing it.\n\nReported-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@carl.(none)\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": "bb729bc98c0f3e6a898d8730df3e2830bf68751a",
      "tree": "f2170f8f688a7c7f813168a6c8c757087934c094",
      "parents": [
        "846954b0a32f4ae953e082eabd178e7a98dd2efd"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Dec 06 09:54:19 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Dec 06 09:54:19 2009 +0100"
      },
      "message": "cfq-iosched: use call_rcu() instead of doing grace period stall on queue exit\n\nAfter the merge of the IO controller patches, booting on my megaraid\nbox ran much slower. Vivek Goyal traced it down to megaraid discovery\ncreating tons of devices, each suffering a grace period when they later\nkill that queue (if no device is found).\n\nSo lets use call_rcu() to batch these deferred frees, instead of taking\nthe grace period hit for each one.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "846954b0a32f4ae953e082eabd178e7a98dd2efd",
      "tree": "a1a82fab930341d275a469d4368cf89e596aa112",
      "parents": [
        "3e2520668970aab5a764044a298e987aafc1f63d"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Dec 04 10:36:43 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 04 16:38:14 2009 +0100"
      },
      "message": "blkio: Allow CFQ group IO scheduling even when CFQ is a module\n\no Now issues of blkio controller and CFQ in module mode should be fixed.\n  Enable the cfq group scheduling support in module mode.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\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": "b69f2292063d2caf37ca9aec7d63ded203701bf3",
      "tree": "be4acb81ea4ab7014047808ec2b2c908e8334f55",
      "parents": [
        "61cc74fbb87af6aa551a06a370590c9bc07e29d9"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "louis.rilling@kerlabs.com",
        "time": "Fri Dec 04 14:52:42 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 04 16:36:18 2009 +0100"
      },
      "message": "block: Fix io_context leak after failure of clone with CLONE_IO\n\nWith CLONE_IO, parent\u0027s io_context-\u003enr_tasks is incremented, but never\ndecremented whenever copy_process() fails afterwards, which prevents\nexit_io_context() from calling IO schedulers exit functions.\n\nGive a task_struct to exit_io_context(), and call exit_io_context() instead of\nput_io_context() in copy_process() cleanup path.\n\nSigned-off-by: Louis Rilling \u003clouis.rilling@kerlabs.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "61cc74fbb87af6aa551a06a370590c9bc07e29d9",
      "tree": "351116a74bba13b016c730f777eca86b3b197e5e",
      "parents": [
        "3c764b7a654668dd04905841d6024f7b6aa843a5"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "louis.rilling@kerlabs.com",
        "time": "Fri Dec 04 14:52:41 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 04 16:36:18 2009 +0100"
      },
      "message": "block: Fix io_context leak after clone with CLONE_IO\n\nWith CLONE_IO, copy_io() increments both ioc-\u003erefcount and ioc-\u003enr_tasks.\nHowever exit_io_context() only decrements ioc-\u003erefcount if ioc-\u003enr_tasks\nreaches 0.\n\nAlways call put_io_context() in exit_io_context().\n\nSigned-off-by: Louis Rilling \u003clouis.rilling@kerlabs.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "af901ca181d92aac3a7dc265144a9081a86d8f39",
      "tree": "380054af22521144fbe1364c3bcd55ad24c9bde4",
      "parents": [
        "972b94ffb90ea6d20c589d9a47215df103388ddd"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Nov 14 13:09:05 2009 -0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 15:39:55 2009 +0100"
      },
      "message": "tree-wide: fix assorted typos all over the place\n\nThat is \"success\", \"unknown\", \"through\", \"performance\", \"[re|un]mapping\"\n, \"access\", \"default\", \"reasonable\", \"[con]currently\", \"temperature\"\n, \"channel\", \"[un]used\", \"application\", \"example\",\"hierarchy\", \"therefore\"\n, \"[over|under]flow\", \"contiguous\", \"threshold\", \"enough\" and others.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "3c764b7a654668dd04905841d6024f7b6aa843a5",
      "tree": "68b7c611f5e98bab3c781ecc775a0ecf46c43b61",
      "parents": [
        "237e5bc4e51813e9d8ba9da0f63e7acc608882d7"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Dec 04 13:12:06 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 04 13:12:06 2009 +0100"
      },
      "message": "cfq-iosched: make nonrot check logic consistent\n\ncfq_arm_slice_timer() has logic to disable idle window for SSD device. The same\nthing should be done at cfq_select_queue() too, otherwise we will still see\nidle window. This makes the nonrot check logic consistent in cfq.\nTests in a intel SSD with low_latency knob close, below patch can triple disk\nthoughput for muti-thread sequential read.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "237e5bc4e51813e9d8ba9da0f63e7acc608882d7",
      "tree": "7528d2c306c9fe4117a7969e801f182f5245a232",
      "parents": [
        "f2eecb91522686edf8199947b77f435a4031d92f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 04 10:07:38 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 04 10:07:38 2009 +0100"
      },
      "message": "io controller: quick fix for blk-cgroup and modular CFQ\n\nIt\u0027s currently not an allowed configuration, so express that in Kconfig.\n\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": "2f5ea47712489a9d2d3cb832eb06062e4e64e0ec",
      "tree": "49c943cf46b83b4fc7da1a38d65cc7914e8ddbfb",
      "parents": [
        "72f924f62a6eb375c7c237ecc911f95be0531d1a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 21:06:43 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 21:07:17 2009 +0100"
      },
      "message": "cfq-iosched: fix compile problem with !CONFIG_CGROUP\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c04645e592d4dd60c58def40c913699d4c806727",
      "tree": "61e2b6fac3c9dd0f211c07f024fe5cb17ff5d3cf",
      "parents": [
        "ae30c286553c91c49af5cbc0265a05a6543d0c52"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:56 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:53 2009 +0100"
      },
      "message": "blkio: Wait on sync-noidle queue even if rq_noidle \u003d 1\n\no rq_noidle() is supposed to tell cfq that do not expect a request after this\n  one, hence don\u0027t idle. But this does not seem to work very well. For example\n  for direct random readers, rq_noidle \u003d 1 but there is next request coming\n  after this. Not idling, leads to a group not getting its share even if\n  group_isolation\u003d1.\n\no The right solution for this issue is to scan the higher layers and set\n  right flag (WRITE_SYNC or WRITE_ODIRECT). For the time being, this single\n  line fix helps. This should not have any significant impact when we are\n  not using cgroups. I will later figure out IO paths in higher layer and\n  fix it.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ae30c286553c91c49af5cbc0265a05a6543d0c52",
      "tree": "1dcb055e156ca9190d0da5bccf32a3a166e12d52",
      "parents": [
        "f26bd1f0a3a31bc5e16d285f5e1b00a56abf6238"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:55 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:53 2009 +0100"
      },
      "message": "blkio: Implement group_isolation tunable\n\no If a group is running only a random reader, then it will not have enough\n  traffic to keep disk busy and we will reduce overall throughput. This\n  should result in better latencies for random reader though. If we don\u0027t\n  idle on random reader service tree, then this random reader will experience\n  large latencies if there are other groups present in system with sequential\n  readers running in these.\n\no One solution suggested by corrado is that by default keep the random readers\n  or sync-noidle workload in root group so that during one dispatch round\n  we idle only once on sync-noidle tree. This means that all the sync-idle\n  workload queues will be in their respective group and we will see service\n  differentiation in those but not on sync-noidle workload.\n\no Provide a tunable group_isolation. If set, this will make sure that even\n  sync-noidle queues go in their respective group and we wait on these. This\n  provides stronger isolation between groups but at the expense of throughput\n  if group does not have enough traffic to keep the disk busy.\n\no By default group_isolation \u003d 0\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f26bd1f0a3a31bc5e16d285f5e1b00a56abf6238",
      "tree": "8e49302c146eacdd1cfbe78a6bd3aad2b81c3050",
      "parents": [
        "f75edf2dc828802d358393be80a6c89e919f8273"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:54 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:53 2009 +0100"
      },
      "message": "blkio: Determine async workload length based on total number of queues\n\no Async queues are not per group. Instead these are system wide and maintained\n  in root group. Hence their workload slice length should be calculated\n  based on total number of queues in the system and not just queues in the\n  root group.\n\no As root group\u0027s default weight is 1000, make sure to charge async queue\n  more in terms of vtime so that it does not get more time on disk because\n  root group has higher weight.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f75edf2dc828802d358393be80a6c89e919f8273",
      "tree": "a3b2fb05298ea41ecc0fd7ad56e1218369f7f9fd",
      "parents": [
        "f8d461d692c341add957fb973fb5ee1f62039dc7"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:53 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:53 2009 +0100"
      },
      "message": "blkio: Wait for cfq queue to get backlogged if group is empty\n\no If a queue consumes its slice and then gets deleted from service tree, its\n  associated group will also get deleted from service tree if this was the\n  only queue in the group. That will make group loose its share.\n\no For the queues on which we have idling on and if these have used their\n  slice, wait a bit for these queues to get backlogged again and then\n  expire these queues so that group does not loose its share.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\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": "24610333d578478d354144ab4709a203684afc5f",
      "tree": "d258c695cfa320845212f71e8900af4d90538d6b",
      "parents": [
        "8682e1f15f26dae9a9e8af794d179055fbd81166"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:51 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:52 2009 +0100"
      },
      "message": "blkio: Drop the reference to queue once the task changes cgroup\n\no If a task changes cgroup, drop reference to the cfqq associated with io\n  context and set cfqq pointer stored in ioc to NULL so that upon next request\n  arrival we will allocate a  new queue in new group.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8682e1f15f26dae9a9e8af794d179055fbd81166",
      "tree": "d6e87631f91527656490df9b28be107fb5e974b0",
      "parents": [
        "220841906fccafaf4094e87bdb6d252e20cf8c7c"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:50 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:52 2009 +0100"
      },
      "message": "blkio: Provide some isolation between groups\n\no Do not allow following three operations across groups for isolation.\n\t- selection of co-operating queues\n\t- preemtpions across groups\n\t- request merging across groups.\n\no Async queues are currently global and not per group. Allow preemption of\n  an async queue if a sync queue in other group gets backlogged.\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": "25fb5169d4c9d4255107abbb7c08ab712434efc8",
      "tree": "8939bd6f73f9888d954672dfaac1cc25e313cb2f",
      "parents": [
        "dae739ebc4c590630039533a5bbd05865966094f"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:46 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:52 2009 +0100"
      },
      "message": "blkio: Dynamic cfq group creation based on cgroup tasks belongs to\n\no Determine the cgroup IO submitting task belongs to and create the cfq\n  group if it does not exist already.\n\no Also link cfqq and associated cfq group.\n\no Currently all async IO is mapped to root group.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "dae739ebc4c590630039533a5bbd05865966094f",
      "tree": "005f98ed4c4302ea71b48ad6a074fa6ff714df4a",
      "parents": [
        "58ff82f34cded3812af5b6c69b6aa626b6be2490"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:45 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:52 2009 +0100"
      },
      "message": "blkio: Group time used accounting and workload context save restore\n\no This patch introduces the functionality to do the accounting of group time\n  when a queue expires. This time used decides which is the group to go\n  next.\n\no Also introduce the functionlity to save and restore the workload type\n  context with-in group. It might happen that once we expire the cfq queue\n  and group, a different group will schedule in and we will lose the context\n  of the workload type. Hence save and restore it upon queue expiry.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "58ff82f34cded3812af5b6c69b6aa626b6be2490",
      "tree": "06098474c5763f20d1c9715faf67c83c56b9a787",
      "parents": [
        "25bc6b07767fe77422312eda2af99c9477f76191"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:44 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:52 2009 +0100"
      },
      "message": "blkio: Implement per cfq group latency target and busy queue avg\n\no So far we had 300ms soft target latency system wide. Now with the\n  introduction of cfq groups, divide that latency by number of groups so\n  that one can come up with group target latency which will be helpful\n  in determining the workload slice with-in group and also the dynamic\n  slice length of the cfq queue.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "25bc6b07767fe77422312eda2af99c9477f76191",
      "tree": "1e0f2d5a18efb63c651df8773a6d5ad2b87d7687",
      "parents": [
        "31e4c28d95e64f2d5d3c497a3ecf37c62de635b4"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:43 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:52 2009 +0100"
      },
      "message": "blkio: Introduce per cfq group weights and vdisktime calculations\n\no Bring in the per cfq group weight and how vdisktime is calculated for the\n  group. Also bring in the functionality of updating the min_vdisktime of\n  the group service tree.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.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"
    },
    {
      "commit": "1fa8f6d68b5c8ca0a608fd8d296c5f07ac788cd6",
      "tree": "1e6d9e0ed1bd61f7f8f71a7191815be2ab65aac3",
      "parents": [
        "f04a64246344ad50e4b4b4186174a0912d07f30b"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:41 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:51 2009 +0100"
      },
      "message": "blkio: Introduce the root service tree for cfq groups\n\no So far we just had one cfq_group in cfq_data. To create space for more than\n  one cfq_group, we need to have a service tree of groups where all the groups\n  can be queued if they have active cfq queues backlogged in these.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f04a64246344ad50e4b4b4186174a0912d07f30b",
      "tree": "03d2d39d2811350af39dd635297b90ca52b9b6fe",
      "parents": [
        "615f0259e6940293359a189f4881bb28c2fea40b"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:40 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:51 2009 +0100"
      },
      "message": "blkio: Keep queue on service tree until we expire it\n\no Currently cfqq deletes a queue from service tree if it is empty (even if\n  we might idle on the queue). This patch keeps the queue on service tree\n  hence associated group remains on the service tree until we decide that\n  we are not going to idle on the queue and expire it.\n\no This just helps in time accounting for queue/group and in implementation\n  of rest of the patches.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "615f0259e6940293359a189f4881bb28c2fea40b",
      "tree": "36ae080bc809a8d998801c0bcfc0d63b7b892745",
      "parents": [
        "cdb16e8f739985b8a5c9f4569b026583bbcd01a5"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:39 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:51 2009 +0100"
      },
      "message": "blkio: Implement macro to traverse each service tree in group\n\no Implement a macro to traverse each service tree in the group. This avoids\n  usage of double for loop and special condition for idle tree 4 times.\n\no Macro is little twisted because of special handling of idle class service\n  tree.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cdb16e8f739985b8a5c9f4569b026583bbcd01a5",
      "tree": "860b74f8134cfbd516cc73b8b9a9edfe4e3d2db6",
      "parents": [
        "bf7919371025412978268efca4b09dd847acb395"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:38 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:51 2009 +0100"
      },
      "message": "blkio: Introduce the notion of cfq groups\n\no This patch introduce the notion of cfq groups. Soon we will can have multiple\n  groups of different weights in the system.\n\no Various service trees (prioclass and workload type trees), will become per\n  cfq group. So hierarchy looks as follows.\n\n\t\t\tcfq_groups\n\t\t\t   |\n\t\t\tworkload type\n\t\t\t   |\n\t\t        cfq queue\n\no When an scheduling decision has to be taken, first we select the cfq group\n  then workload with-in the group and then cfq queue with-in the workload\n  type.\n\no This patch just makes various workload service tree per cfq group and\n  introduce the function to be able to choose a group for scheduling.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "bf7919371025412978268efca4b09dd847acb395",
      "tree": "f6144bf301f00f53f150f4213928f063232faaa1",
      "parents": [
        "753c89130c52b96e66e5ceff19bd1336de9a5ce8"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Dec 03 12:59:37 2009 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 19:28:51 2009 +0100"
      },
      "message": "blkio: Set must_dispatch only if we decided to not dispatch the request\n\no must_dispatch flag should be set only if we decided not to run the queue\n  and dispatch the request.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "474b18ccc264c472abeec50f48469b6477202699",
      "tree": "77c9f33d65b78266560b3aa0bea1c7d16fb45b2e",
      "parents": [
        "98262f2762f0067375f83824d81ea929e37e6bfe"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Dec 03 12:58:05 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 12:58:05 2009 +0100"
      },
      "message": "cfq-iosched: no dispatch limit for single queue\n\nSince commit 2f5cb7381b737e24c8046fd4aeab571fb71315f5, each queue can send\nup to 4 * 4 requests if only one queue exists. I wonder why we have such limit.\nDevice supports tag can send more requests. For example, AHCI can send 31\nrequests. Test (direct aio randread) shows the limits reduce about 4% disk\nthoughput.\nOn the other hand, since we send one request one time, if other queue\npop when current is sending more than cfq_quantum requests, current queue will\nstop send requests soon after one request, so sounds there is no big latency.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "98262f2762f0067375f83824d81ea929e37e6bfe",
      "tree": "a26618d5c305eed975501c80cb02bc0f1b6e4524",
      "parents": [
        "464191c65b85a8ec68a6e1a6293af625287c807e"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Thu Dec 03 09:24:48 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 09:24:48 2009 +0100"
      },
      "message": "block: Allow devices to indicate whether discarded blocks are zeroed\n\nThe discard ioctl is used by mkfs utilities to clear a block device\nprior to putting metadata down.  However, not all devices return zeroed\nblocks after a discard.  Some drives return stale data, potentially\ncontaining old superblocks.  It is therefore important to know whether\ndiscarded blocks are properly zeroed.\n\nBoth ATA and SCSI drives have configuration bits that indicate whether\nzeroes are returned after a discard operation.  Implement a block level\ninterface that allows this information to be bubbled up the stack and\nqueried via a new block device ioctl.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    }
  ],
  "next": "464191c65b85a8ec68a6e1a6293af625287c807e"
}
