)]}'
{
  "log": [
    {
      "commit": "dd48c085c1cdf9446f92826f1fd451167fb6c2fd",
      "tree": "d62870378cc08af36ea7a41531436bdebddec232",
      "parents": [
        "f48d1915b86f06a943087e5f9b29542a1ef4cd4d"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Aug 03 16:21:01 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 03 14:25:20 2011 -1000"
      },
      "message": "fault-injection: add ability to export fault_attr in arbitrary directory\n\ninit_fault_attr_dentries() is used to export fault_attr via debugfs.\nBut it can only export it in debugfs root directory.\n\nPer Forlin is working on mmc_fail_request which adds support to inject\ndata errors after a completed host transfer in MMC subsystem.\n\nThe fault_attr for mmc_fail_request should be defined per mmc host and\nexport it in debugfs directory per mmc host like\n/sys/kernel/debug/mmc0/mmc_fail_request.\n\ninit_fault_attr_dentries() doesn\u0027t help for mmc_fail_request.  So this\nintroduces fault_create_debugfs_attr() which is able to create a\ndirectory in the arbitrary directory and replace\ninit_fault_attr_dentries().\n\n[akpm@linux-foundation.org: extraneous semicolon, per Randy]\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nTested-by: Per Forlin \u003cper.forlin@linaro.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b2c9cd3793e5878e301ec2219785a7b8ca402ef1",
      "tree": "e0a8a447ea8c6d59c20a1e190e2c397bfcd46a49",
      "parents": [
        "b2588c4b4c3c075e9b45d61065d86c60de2b6441"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Tue Jul 26 16:09:03 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:46 2011 -0700"
      },
      "message": "fail_make_request: cleanup should_fail_request\n\nThis changes should_fail_request() to more usable wrapper function of\nshould_fail().  It can avoid putting #ifdef CONFIG_FAIL_MAKE_REQUEST in\nthe middle of a function.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "11ccf116d0d756d06989775288e41f737d98e0c5",
      "tree": "457ceb665282ed1c8ec2aa6faaba9cd4e4652e8c",
      "parents": [
        "45b583b10a8b438b970e95a7d1d4db22c9e35004"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 26 15:01:15 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 26 15:01:15 2011 +0200"
      },
      "message": "block: fix warning with calling smp_processor_id() in preemptible section\n\nAfter commit 5757a6d7 introduced an unsafe calling of\nsmp_processor_id(), with preempt debuggin turned on we spew a lot of:\n\nBUG: using smp_processor_id() in preemptible [00000000] code: kjournald/514\ncaller is __make_request+0x1b8/0x308\n[\u003cc0019f44\u003e] (unwind_backtrace+0x0/0xe8) from [\u003cc024b4cc\u003e] (debug_smp_processor_id+0xbc/0xf0)\n[\u003cc024b4cc\u003e] (debug_smp_processor_id+0xbc/0xf0) from [\u003cc0223d14\u003e] (__make_request+0x1b8/0x308)\n[\u003cc0223d14\u003e] (__make_request+0x1b8/0x308) from [\u003cc02215ac\u003e] (generic_make_request+0x4dc/0x558)\n[\u003cc02215ac\u003e] (generic_make_request+0x4dc/0x558) from [\u003cc022173c\u003e] (submit_bio+0x114/0x138)\n[\u003cc022173c\u003e] (submit_bio+0x114/0x138) from [\u003cc011f504\u003e] (submit_bh+0x148/0x16c)\n[\u003cc011f504\u003e] (submit_bh+0x148/0x16c) from [\u003cc0121ed8\u003e] (__sync_dirty_buffer+0x88/0xd8)\n[\u003cc0121ed8\u003e] (__sync_dirty_buffer+0x88/0xd8) from [\u003cc01aff78\u003e] (journal_commit_transaction+0x1198/0x1688)\n[\u003cc01aff78\u003e] (journal_commit_transaction+0x1198/0x1688) from [\u003cc01b4034\u003e] (kjournald+0xb4/0x224)\n[\u003cc01b4034\u003e] (kjournald+0xb4/0x224) from [\u003cc0069ea0\u003e] (kthread+0x8c/0x94)\n[\u003cc0069ea0\u003e] (kthread+0x8c/0x94) from [\u003cc00137f8\u003e] (kernel_thread_exit+0x0/0x8)\n\nFix this by just using raw_smp_processor_id(), it\u0027s just a hint\nafter all. There\u0027s no pinning of the CPU or accessing per-cpu\nstructures involved.\n\nReported-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8ded371f81fba8b38a049f8c5f30ce6438fc7b75",
      "tree": "0684d176cb6f35c92c4bf0185b1af9f5380077eb",
      "parents": [
        "096a705bbc080a4041636d07514560da8d78acbe",
        "07d0c38e7d84f911c72058a124c7f17b3c779a65"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 10:38:18 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 10:38:18 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.1/drivers\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.1/drivers\u0027 of git://git.kernel.dk/linux-block:\n  cciss: do not attempt to read from a write-only register\n  xen/blkback: Add module alias for autoloading\n  xen/blkback: Don\u0027t let in-flight requests defer pending ones.\n  bsg: fix address space warning from sparse\n  bsg: remove unnecessary conditional expressions\n  bsg: fix bsg_poll() to return POLLOUT properly\n"
    },
    {
      "commit": "096a705bbc080a4041636d07514560da8d78acbe",
      "tree": "38c3c01225709ffa53419083ea6332f8a72610de",
      "parents": [
        "fea80311a939a746533a6d7e7c3183729d6a3faf",
        "5757a6d76cdf6dda2a492c09b985c015e86779b1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 10:33:36 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 10:33:36 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.1/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.1/core\u0027 of git://git.kernel.dk/linux-block: (24 commits)\n  block: strict rq_affinity\n  backing-dev: use synchronize_rcu_expedited instead of synchronize_rcu\n  block: fix patch import error in max_discard_sectors check\n  block: reorder request_queue to remove 64 bit alignment padding\n  CFQ: add think time check for group\n  CFQ: add think time check for service tree\n  CFQ: move think time check variables to a separate struct\n  fixlet: Remove fs_excl from struct task.\n  cfq: Remove special treatment for metadata rqs.\n  block: document blk_plug list access\n  block: avoid building too big plug list\n  compat_ioctl: fix make headers_check regression\n  block: eliminate potential for infinite loop in blkdev_issue_discard\n  compat_ioctl: fix warning caused by qemu\n  block: flush MEDIA_CHANGE from drivers on close(2)\n  blk-throttle: Make total_nr_queued unsigned\n  block: Add __attribute__((format(printf...) and fix fallout\n  fs/partitions/check.c: make local symbols static\n  block:remove some spare spaces in genhd.c\n  block:fix the comment error in blkdev.h\n  ...\n"
    },
    {
      "commit": "5757a6d76cdf6dda2a492c09b985c015e86779b1",
      "tree": "6356a6353639eb473dd917a1b2062f9e7e20de22",
      "parents": [
        "ef3230880abd36553ab442363d3c9a0661f00769"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jul 23 20:44:25 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Jul 23 20:44:25 2011 +0200"
      },
      "message": "block: strict rq_affinity\n\nSome systems benefit from completions always being steered to the strict\nrequester cpu rather than the looser \"per-socket\" steering that\nblk_cpu_to_group() attempts by default. This is because the first\nCPU in the group mask ends up being completely overloaded with work,\nwhile the others (including the original submitter) has power left\nto spare.\n\nAllow the strict mode to be set by writing \u00272\u0027 to the sysfs control\nfile. This is identical to the scheme used for the nomerges file,\nwhere \u00272\u0027 is a more aggressive setting than just being turned on.\n\necho 2 \u003e /sys/block/\u003cbdev\u003e/queue/rq_affinity\n\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Roland Dreier \u003croland@purestorage.com\u003e\nTested-by: Dave Jiang \u003cdave.jiang@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4c64500eada358165d0bb9a20d6c7d30821995b4",
      "tree": "27cb0aed7b45d5043d6bbb0b3471719e9230c868",
      "parents": [
        "d7b7630130e52361af66ce3b994696e2357ba7de"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Jul 23 20:34:59 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Jul 23 20:34:59 2011 +0200"
      },
      "message": "block: fix patch import error in max_discard_sectors check\n\nA \u0027!\u0027 snuck in before the unlikely, rendering it useless.\n\nReported-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d4e06701b89286a306b31e20ec69a904fae374a1",
      "tree": "f6adefd65b021ccddb7655109ea8b9ab4e714292",
      "parents": [
        "e4980371059ca4a81ccdcb4381c41af8869ca711",
        "87045b033a62777337ae4aa62834876da09b5fb5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 23 11:13:11 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 23 11:13:11 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (77 commits)\n  [SCSI] fix crash in scsi_dispatch_cmd()\n  [SCSI] sr: check_events() ignore GET_EVENT when TUR says otherwise\n  [SCSI] bnx2i: Fixed kernel panic due to illegal usage of sc-\u003erequest-\u003ecpu\n  [SCSI] bfa: Update the driver version to 3.0.2.1\n  [SCSI] bfa: Driver and BSG enhancements.\n  [SCSI] bfa: Added support to query PHY.\n  [SCSI] bfa: Added HBA diagnostics support.\n  [SCSI] bfa: Added support for flash configuration\n  [SCSI] bfa: Added support to obtain SFP info.\n  [SCSI] bfa: Added support for CEE info and stats query.\n  [SCSI] bfa: Extend BSG interface.\n  [SCSI] bfa: FCS bug fixes.\n  [SCSI] bfa: DMA memory allocation enhancement.\n  [SCSI] bfa: Brocade-1860 Fabric Adapter vHBA support.\n  [SCSI] bfa: Brocade-1860 Fabric Adapter PLL init fixes.\n  [SCSI] bfa: Added Fabric Assigned Address(FAA) support\n  [SCSI] bfa: IOC bug fixes.\n  [SCSI] bfa: Enable ASIC block configuration and query.\n  [SCSI] bnx2i: Updated copyright and bump version\n  [SCSI] bnx2i: Modified to skip CNIC registration if iSCSI is not supported\n  ...\n\nFix up some trivial conflicts in:\n - drivers/scsi/bnx2fc/{bnx2fc.h,bnx2fc_fcoe.c}:\n\tCrazy broadcom version number conflicts\n - drivers/target/tcm_fc/tfc_cmd.c\n\tJust trivial cleanups done on adjacent lines\n"
    },
    {
      "commit": "bfe159a51203c15d23cb3158fffdc25ec4b4dda1",
      "tree": "553b2d7b1422545032cf3c048db7dff5f5c8dbd3",
      "parents": [
        "79b9677d885d1a792bc103f2febb06f91f92de43"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Thu Jul 07 15:45:40 2011 -0500"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "JBottomley@Parallels.com",
        "time": "Thu Jul 21 14:21:18 2011 -0700"
      },
      "message": "[SCSI] fix crash in scsi_dispatch_cmd()\n\nUSB surprise removal of sr is triggering an oops in\nscsi_dispatch_command().  What seems to be happening is that USB is\nhanging on to a queue reference until the last close of the upper\ndevice, so the crash is caused by surprise remove of a mounted CD\nfollowed by attempted unmount.\n\nThe problem is that USB doesn\u0027t issue its final commands as part of\nthe SCSI teardown path, but on last close when the block queue is long\ngone.  The long term fix is probably to make sr do the teardown in the\nsame way as sd (so remove all the lower bits on ejection, but keep the\nupper disk alive until last close of user space).  However, the\ncurrent oops can be simply fixed by not allowing any commands to be\nsent to a dead queue.\n\nCc: stable@kernel.org\nSigned-off-by: James Bottomley \u003cJBottomley@Parallels.com\u003e\n"
    },
    {
      "commit": "57bdfbf9ee2b0856d8b62180c3b3f8fa1533b8d1",
      "tree": "d39485c723d98fb3d7b2499c59232cd05f4eabc2",
      "parents": [
        "8497a24a43374f0142335b0ef0614ccc459e3d8d"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Fri Mar 18 11:42:58 2011 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jul 20 14:10:13 2011 -0700"
      },
      "message": "block,rcu: Convert call_rcu(disk_free_ptbl_rcu_cb) to kfree_rcu()\n\nThe rcu callback disk_free_ptbl_rcu_cb() just calls a kfree(),\nso we use kfree_rcu() instead of the call_rcu(disk_free_ptbl_rcu_cb).\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "7700fc4f675fa38094e78e345b594363a2fd895b",
      "tree": "000ae1fb3d825240b7e78ad8d3db66be168ffe94",
      "parents": [
        "f5f2b6ceb23e02ff35c6dbc6a39aa776ace99cda"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Jul 12 14:24:56 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 12 14:24:56 2011 +0200"
      },
      "message": "CFQ: add think time check for group\n\nCurrently when the last queue of a group has no request, we don\u0027t expire\nthe queue to hope request from the group comes soon, so the group doesn\u0027t\nmiss its share. But if the think time is big, the assumption isn\u0027t correct\nand we just waste bandwidth. In such case, we don\u0027t do idle.\n\n[global]\nruntime\u003d30\ndirect\u003d1\n\n[test1]\ncgroup\u003dtest1\ncgroup_weight\u003d1000\nrw\u003drandread\nioengine\u003dlibaio\nsize\u003d500m\nruntime\u003d30\ndirectory\u003d/mnt\nfilename\u003dfile1\nthinktime\u003d9000\n\n[test2]\ncgroup\u003dtest2\ncgroup_weight\u003d1000\nrw\u003drandread\nioengine\u003dlibaio\nsize\u003d500m\nruntime\u003d30\ndirectory\u003d/mnt\nfilename\u003dfile2\n\n\tpatched\t\tbase\ntest1\t64k\t\t39k\ntest2\t548k\t\t540k\ntotal\t604k\t\t578k\n\ngroup1 gets much better throughput because it waits less time.\n\nTo check if the patch changes behavior of queue without think time. I also\ntried to give test1 2ms think time or no think time. The test result is stable.\nThe thoughput doesn\u0027t change with/without the patch.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f5f2b6ceb23e02ff35c6dbc6a39aa776ace99cda",
      "tree": "19ea26a1832c03c1c221675d3372b86abd12cc83",
      "parents": [
        "383cd7213f95a2784ab5038fe292844178768b82"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Jul 12 14:24:55 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 12 14:24:55 2011 +0200"
      },
      "message": "CFQ: add think time check for service tree\n\nCurrently when the last queue of a service tree has no request, we don\u0027t\nexpire the queue to hope request from the service tree comes soon, so the\nservice tree doesn\u0027t miss its share. But if the think time is big, the\nassumption isn\u0027t correct and we just waste bandwidth. In such case, we\ndon\u0027t do idle.\n\n[global]\nruntime\u003d10\ndirect\u003d1\n\n[test1]\nrw\u003drandread\nioengine\u003dlibaio\nsize\u003d500m\ndirectory\u003d/mnt\nfilename\u003dfile1\nthinktime\u003d9000\n\n[test2]\nrw\u003dread\nioengine\u003dlibaio\nsize\u003d1G\ndirectory\u003d/mnt\nfilename\u003dfile2\n\n\tpatched\t\tbase\ntest1\t41k/s\t\t33k/s\ntest2\t15868k/s\t15789k/s\ntotal\t15902k/s\t15817k/s\n\nA slightly better\n\nTo check if the patch changes behavior of queue without think time. I also\ntried to give test1 2ms think time or no think time. The test has variation\neven without the patch, but the average throughput doesn\u0027t change with/without\nthe patch.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "383cd7213f95a2784ab5038fe292844178768b82",
      "tree": "625de0648246daff30a9030e350c29584d29441e",
      "parents": [
        "4aede84b33d6beb401136a3deca0651ae07c5e99"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Jul 12 14:24:35 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 12 14:24:35 2011 +0200"
      },
      "message": "CFQ: move think time check variables to a separate struct\n\nMove the variables to do think time check to a sepatate struct. This is\nto prepare adding think time check for service tree and group. No\nfunctional change.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4aede84b33d6beb401136a3deca0651ae07c5e99",
      "tree": "831266dbb15227584da5011ae4bb1e5038a69677",
      "parents": [
        "a07405b7802691d29ab3b23bdc76ee6d006aad0b"
      ],
      "author": {
        "name": "Justin TerAvest",
        "email": "teravest@google.com",
        "time": "Tue Jul 12 08:31:45 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 12 08:35:10 2011 +0200"
      },
      "message": "fixlet: Remove fs_excl from struct task.\n\nfs_excl is a poor man\u0027s priority inheritance for filesystems to hint to\nthe block layer that an operation is important. It was never clearly\nspecified, not widely adopted, and will not prevent starvation in many\ncases (like across cgroups).\n\nfs_excl was introduced with the time sliced CFQ IO scheduler, to\nindicate when a process held FS exclusive resources and thus needed\na boost.\n\nIt doesn\u0027t cover all file systems, and it was never fully complete.\nLets kill it.\n\nSigned-off-by: Justin TerAvest \u003cteravest@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a07405b7802691d29ab3b23bdc76ee6d006aad0b",
      "tree": "8ca155acb56662e9807af2fa91b801b9f0d25495",
      "parents": [
        "316cc67d5e03801a5ee4ac660a4dfe9e02aed475"
      ],
      "author": {
        "name": "Justin TerAvest",
        "email": "teravest@google.com",
        "time": "Sun Jul 10 22:09:19 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Jul 10 22:09:19 2011 +0200"
      },
      "message": "cfq: Remove special treatment for metadata rqs.\n\nThere is no consistency among filesystems from what bios (or requests)\nare marked as being metadata. It\u0027s interesting to expose this in traces,\nbut we shouldn\u0027t schedule the requests differently based on whether or\nnot they\u0027re marked as being metadata.\n\nSigned-off-by: Justin TerAvest \u003cteravest@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "55c022bbddb2c056b5dff1bd1b1758d31b6d64c9",
      "tree": "fdd3aa29a1407bbd19b8efe47b2538544da85a70",
      "parents": [
        "719c0c590609809365c6f3da2f923cd84dc99113"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Jul 08 08:19:20 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jul 08 08:19:20 2011 +0200"
      },
      "message": "block: avoid building too big plug list\n\nWhen I test fio script with big I/O depth, I found the total throughput drops\ncompared to some relative small I/O depth. The reason is the thread accumulates\nbig requests in its plug list and causes some delays (surely this depends\non CPU speed).\nI thought we\u0027d better have a threshold for requests. When a threshold reaches,\nthis means there is no request merge and queue lock contention isn\u0027t severe\nwhen pushing per-task requests to queue, so the main advantages of blk plug\ndon\u0027t exist. We can force a plug list flush in this case.\nWith this, my test throughput actually increases and almost equals to small\nI/O depth. Another side effect is irq off time decreases in blk_flush_plug_list()\nfor big I/O depth.\nThe BLK_MAX_REQUEST_COUNT is choosen arbitarily, but 16 is efficiently to\nreduce lock contention to me. But I\u0027m open here, 32 is ok in my test too.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "0f79960391a5a1e3679956024e18aeeb0369ac44",
      "tree": "4b7e1f7a2b24f3307259024a5f29dbdc0f8b7bd2",
      "parents": [
        "390192b300570b2bc721d77067ca133f58015ae8"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Jul 06 21:30:50 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Jul 06 21:32:02 2011 +0200"
      },
      "message": "block: eliminate potential for infinite loop in blkdev_issue_discard\n\nDue to the recently identified overflow in read_capacity_16() it was\npossible for max_discard_sectors to be zero but still have discards\nenabled on the associated device\u0027s queue.\n\nEliminate the possibility for blkdev_issue_discard to infinitely loop.\n\nInterestingly this issue wasn\u0027t identified until a device, whose\ndiscard_granularity was 0 due to read_capacity_16 overflow, was consumed\nby blk_stack_limits() to construct limits for a higher-level DM\nmultipath device.  The multipath device\u0027s resulting limits never had the\ndiscard limits stacked because blk_stack_limits() will only do so if\nthe bottom device\u0027s discard_granularity !\u003d 0.  This resulted in the\nmultipath device\u0027s limits.max_discard_sectors being 0.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "390192b300570b2bc721d77067ca133f58015ae8",
      "tree": "bacbd75f23e74308b814146338bcaa6b3636bae7",
      "parents": [
        "85ef06d1d252f6a2e73b678591ab71caad4667bb"
      ],
      "author": {
        "name": "Johannes Stezenbach",
        "email": "js@sig21.net",
        "time": "Fri Jul 01 22:32:26 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jul 01 22:32:26 2011 +0200"
      },
      "message": "compat_ioctl: fix warning caused by qemu\n\nOn Linux x86_64 host with 32bit userspace, running\nqemu or even just \"qemu-img create -f qcow2 some.img 1G\"\ncauses a kernel warning:\n\nioctl32(qemu-img:5296): Unknown cmd fd(3) cmd(00005326){t:\u0027S\u0027;sz:0} arg(7fffffff) on some.img\nioctl32(qemu-img:5296): Unknown cmd fd(3) cmd(801c0204){t:02;sz:28} arg(fff77350) on some.img\n\nioctl 00005326 is CDROM_DRIVE_STATUS,\nioctl 801c0204 is FDGETPRM.\n\nThe warning appears because the Linux compat-ioctl handler for these\nioctls only applies to block devices, while qemu also uses the ioctls on\nplain files.\n\nSigned-off-by: Johannes Stezenbach \u003cjs@sig21.net\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "85ef06d1d252f6a2e73b678591ab71caad4667bb",
      "tree": "dc5cbc4f2e54f5b5b3f8653a595799e5fe0f2f18",
      "parents": [
        "04bf7869ca0fd12009aee301cac2264a36df4d98"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 01 16:17:47 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jul 01 16:17:47 2011 +0200"
      },
      "message": "block: flush MEDIA_CHANGE from drivers on close(2)\n\nCurrently, only open(2) is defined as the \u0027clearing\u0027 point.  It has\ntwo roles - first, it\u0027s an acknowledgement from userland indicating\nthat the event has been received and kernel can clear pending states\nand proceed to generate more events.  Secondly, it\u0027s passed on to\ndevice drivers as a hint indicating that a synchronization point has\nbeen reached and it might want to take a deeper look at the device.\n\nThe latter currently is only used by sr which uses two different\nmechanisms - GET_EVENT_MEDIA_STATUS_NOTIFICATION and TEST_UNIT_READY\nto discover events, where the former is lighter weight and safe to be\nused repeatedly but may not provide full coverage.  Among other\nthings, GET_EVENT can\u0027t detect media removal while TUR can.\n\nThis patch makes close(2) - blkdev_put() - indicate clearing hint for\nMEDIA_CHANGE to drivers.  disk_check_events() is renamed to\ndisk_flush_events() and updated to take @mask for events to flush\nwhich is or\u0027d to ev-\u003eclearing and will be passed to the driver on the\nnext -\u003echeck_events() invocation.\n\nThis change makes sr generate MEDIA_CHANGE when media is ejected from\nuserland - e.g. with eject(1).\n\nNote: Given the current usage, it seems @clearing hint is needlessly\ncomplex.  disk_clear_events() can simply clear all events and the hint\ncan be boolean @flush.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "04bf7869ca0fd12009aee301cac2264a36df4d98",
      "tree": "66cb81ebf8b76560a31433c2c493dc430c914af9",
      "parents": [
        "d2f31a5fd60d168b00fc4f7617b68a1287b21e90",
        "7b28afe01ab6ffb5f152f47831b44933facd2328"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jul 01 16:17:13 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jul 01 16:17:13 2011 +0200"
      },
      "message": "Merge branch \u0027for-linus\u0027 into for-3.1/core\n\nConflicts:\n\tblock/blk-throttle.c\n\tblock/cfq-iosched.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "726e99ab88db059fe1422e15376ae404f8c66eb4",
      "tree": "8d9373239aa568f28631e253d9fd07bc78b312c3",
      "parents": [
        "3181faa85bda3dc3f5e630a1846526c9caaa38e3"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Jun 27 09:03:48 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 27 09:36:06 2011 +0200"
      },
      "message": "cfq-iosched: make code consistent\n\nioc-\u003eioc_data is rcu protectd, so uses correct API to access it.\nThis doesn\u0027t change any behavior, but just make code consistent.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: stable@kernel.org # after ab4bd22d\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3181faa85bda3dc3f5e630a1846526c9caaa38e3",
      "tree": "1017c61ebf8a7711ac400e2a728e188ec5770001",
      "parents": [
        "258e43fdb00c73d424b114ae3850accd55b27cbb"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Jun 27 09:03:47 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 27 09:36:06 2011 +0200"
      },
      "message": "cfq-iosched: fix a rcu warning\n\nI got a rcu warnning at boot. the ioc-\u003eioc_data is rcu_deferenced, but\ndoesn\u0027t hold rcu_read_lock.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: stable@kernel.org # after ab4bd22d\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2b727c6300b49352f80f63704bb50c256949e95e",
      "tree": "42e688cb7668c19bbd67673f34aa3bc3d162a8dc",
      "parents": [
        "44194e3e88fcfe77a2a6e2333847d4f27816259a"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Jun 20 13:27:45 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 20 13:27:45 2011 +0200"
      },
      "message": "bsg: fix address space warning from sparse\n\ncopy_from/to_user() and blk_rq_map_user() want __user pointer.\nThis patch fixes following warnings from sparse:\n\n   CHECK   block/bsg.c\n block/bsg.c:185:38: warning: incorrect type in argument 2 (different address spaces)\n block/bsg.c:185:38:    expected void const [noderef] \u003casn:1\u003e*from\n block/bsg.c:185:38:    got void *\u003cnoident\u003e\n block/bsg.c:295:58: warning: incorrect type in argument 4 (different address spaces)\n block/bsg.c:295:58:    expected void [noderef] \u003casn:1\u003e*\u003cnoident\u003e\n block/bsg.c:295:58:    got void *[assigned] dxferp\n block/bsg.c:311:52: warning: incorrect type in argument 4 (different address spaces)\n block/bsg.c:311:52:    expected void [noderef] \u003casn:1\u003e*\u003cnoident\u003e\n block/bsg.c:311:52:    got void *[assigned] dxferp\n block/bsg.c:448:37: warning: incorrect type in argument 1 (different address spaces)\n block/bsg.c:448:37:    expected void [noderef] \u003casn:1\u003e*dst\n block/bsg.c:448:37:    got void *\u003cnoident\u003e\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nAcked-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "44194e3e88fcfe77a2a6e2333847d4f27816259a",
      "tree": "66d3aa40d385570b0c269b28371f086fa6ca6244",
      "parents": [
        "80ceb057135ad77f513277f3bcd04b885501877a"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Jun 20 13:27:44 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 20 13:27:44 2011 +0200"
      },
      "message": "bsg: remove unnecessary conditional expressions\n\nSecond condition in OR always implies first condition is false\nthus bytes_read in the second is not needed. The same goes to\nbytes_written.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nAcked-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "80ceb057135ad77f513277f3bcd04b885501877a",
      "tree": "78e4c78028097ddcf8229133701d6659bb44fa23",
      "parents": [
        "2c53b436a30867eb6b47dd7bab23ba638d1fb0d2"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Jun 20 13:27:44 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 20 13:27:44 2011 +0200"
      },
      "message": "bsg: fix bsg_poll() to return POLLOUT properly\n\nPOLLOUT should be returned only if bd-\u003equeued_cmds \u003c bd-\u003emax_queue\nso that bsg_alloc_command() can proceed.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nAcked-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d2f31a5fd60d168b00fc4f7617b68a1287b21e90",
      "tree": "c51b882926a840df57e376d21df74ec4177561a3",
      "parents": [
        "fd16d263194aa6b50b215eb593a567b59d744d6e"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Jun 13 20:19:27 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 13 20:19:27 2011 +0200"
      },
      "message": "blk-throttle: Make total_nr_queued unsigned\n\nThe total of two unsigned values should also be unsigned.\n\nUpdate throtl_log output to unsigned.\nUpdate total_nr_queued test to non-zero to be the\nsame as the other total_nr_queued tests.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "fd16d263194aa6b50b215eb593a567b59d744d6e",
      "tree": "555aac4bd0104ea85643f1a3550c9bc1cbac9256",
      "parents": [
        "dd7740933842202fccaa9ebcba6bce0507b3f6d6"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Jun 13 10:42:49 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 13 20:18:49 2011 +0200"
      },
      "message": "block: Add __attribute__((format(printf...) and fix fallout\n\nUse the compiler to verify format strings and arguments.\n\nFix fallout.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9f5e486550456587348e2048eecda5bee778250a",
      "tree": "58e267d7a03deeb13c35b6b737b8307d674d8a9a",
      "parents": [
        "4d0d98b60eba726e0a4f3e6617628b070c444707"
      ],
      "author": {
        "name": "Wanlong Gao",
        "email": "wanlong.gao@gmail.com",
        "time": "Mon Jun 13 10:45:43 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 13 10:45:43 2011 +0200"
      },
      "message": "block:remove some spare spaces in genhd.c\n\nRemove the end-of-line spaces in genhd.c.\n\nSigned-off-by: Wanlong Gao \u003cwanlong.gao@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "08e8138adebdd511e0955e8d6c051904bb4082af",
      "tree": "f73e9adc3e0164bf427f297312dff95c370db5ee",
      "parents": [
        "fdd514e16bb2531c0c61ae8a1f87740ce217f630"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Jun 13 10:42:49 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 13 10:42:49 2011 +0200"
      },
      "message": "block: Add __attribute__((format(printf...) and fix fallout\n\nUse the compiler to verify format strings and arguments.\n\nFix fallout.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "fdd514e16bb2531c0c61ae8a1f87740ce217f630",
      "tree": "5d7b6d4f9112b0b6f93f7ce939045fb634abc3fa",
      "parents": [
        "c3af54afbac3675337cedf326b7b127ffa7f7327"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 09 20:43:59 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 09 20:43:59 2011 +0200"
      },
      "message": "block: make disk_block_events() properly wait for work cancellation\n\ndisk_block_events() should guarantee that the event work is not in\nflight on return and once blocked it shouldn\u0027t issue further\ncancellations.\n\nBecause there was no synchronization between the first blocker doing\ncancel_delayed_work_sync() and the following blockers, the following\nblockers could finish before cancellation was complete, which broke\nboth guarantees - event work could be in flight and cancellation could\nhappen after return.\n\nThis bug triggered WARN_ON_ONCE() in disk_clear_events() reported in\nbug#34662.\n\n  https://bugzilla.kernel.org/show_bug.cgi?id\u003d34662\n\nFix it by adding an outer mutex which protects both block count\nmanipulation and work cancellation.\n\n-v2: Use outer mutex instead of bit waitqueue per Linus.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nTested-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nReported-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nReported-by: Borislav Petkov \u003cbp@alien8.de\u003e\nReported-by: Meelis Roos \u003cmroos@linux.ee\u003e\nReported-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c3af54afbac3675337cedf326b7b127ffa7f7327",
      "tree": "cc49ada3a2ef88f1415af73635cff7d062615856",
      "parents": [
        "a9dce2a3b4f0686dd66cb44d4826a59508bce969"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 09 20:43:55 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 09 20:43:55 2011 +0200"
      },
      "message": "block: remove non-syncing __disk_block_events() and fold it into disk_block_events()\n\nAfter the previous update to disk_check_events(), nobody is using\nnon-syncing __disk_block_events().  Remove @sync and, as this makes\n__disk_block_events() virtually identical to disk_block_events(),\nremove the underscore prefixed version.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a9dce2a3b4f0686dd66cb44d4826a59508bce969",
      "tree": "3a5ed54316884a86102e99a4442a13d2f0c81d57",
      "parents": [
        "ab4bd22d3cce6977dc039664cc2d052e3147d662"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 09 20:43:54 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 09 20:43:54 2011 +0200"
      },
      "message": "block: don\u0027t use non-syncing event blocking in disk_check_events()\n\nThis patch is part of fix for triggering of WARN_ON_ONCE() in\ndisk_clear_events() reported in bug#34662.\n\n  https://bugzilla.kernel.org/show_bug.cgi?id\u003d34662\n\ndisk_clear_events() blocks events, schedules and flushes the event\nwork.  It expects the work to have started execution on schedule and\nfinished on return from flush.  WARN_ON_ONCE() triggers if the event\nwork hasn\u0027t executed as expected.  This problem happens because\n__disk_block_events() fails to guarantee that the event work item is\nnot in flight on return from the function in race-free manner.  The\nproblem is two-fold and this patch addresses one of them.\n\nWhen __disk_block_events() is called with @sync \u003d\u003d %false, it bumps\nevent block count, calls cancel_delayed_work() and return.  This makes\nit impossible to guarantee that event polling is not in flight on\nreturn from syncing __disk_block_events() - if the first blocker was\nnon-syncing, polling could still be in progress and later syncing ones\nwould assume that the first blocker already canceled it.\n\nMaking __disk_block_events() cancel_sync regardless of block count\nisn\u0027t feasible either as it may race with forced event checking in\ndisk_clear_events().\n\nAs disk_check_events() is the only user of non-syncing\n__disk_block_events(), updating it to directly cancel and schedule\nevent work is the easiest way to solve the issue.\n\nNote that there\u0027s another bug in __disk_block_events() and this patch\ndoesn\u0027t fix the issue completely.  Later patch will fix the other bug.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nTested-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nReported-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nReported-by: Borislav Petkov \u003cbp@alien8.de\u003e\nReported-by: Meelis Roos \u003cmroos@linux.ee\u003e\nReported-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "df4156569d4ace581bd1581e7aa4a9dd7d2f0775",
      "tree": "1163b57017ce3ccef73f08d4d1c8b93417fec4d2",
      "parents": [
        "8aea45451b252e4be09ee9974c5658bb47c81625"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Mon Jun 06 05:11:34 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 06 05:57:25 2011 +0200"
      },
      "message": "block: rename the return of two functions\n\nIf we rename the return of alloc_io_context() and get_io_context() from\n\"ret\" to \"ioc\" the code get\u0027s (a bit) more readable and (a lot) more\ngrepable.\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8aea45451b252e4be09ee9974c5658bb47c81625",
      "tree": "7b838405229f32fb7937fac49c95b2d1294fb59b",
      "parents": [
        "9b50902db5eb8a220160fb89e95aa11967998d12"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Mon Jun 06 05:07:54 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 06 05:57:25 2011 +0200"
      },
      "message": "CFQ: make two functions static\n\nCorrectly suggested by sparse.\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9b50902db5eb8a220160fb89e95aa11967998d12",
      "tree": "ad025360c616398f2b0aea1f0789a2f8174496b1",
      "parents": [
        "796d5116c407690b14fd5bda136aa67a39e7061a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Jun 05 06:01:13 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 06 05:57:21 2011 +0200"
      },
      "message": "cfq-iosched: fix locking around ioc-\u003eioc_data assignment\n\nSince we are modifying this RCU pointer, we need to hold\nthe lock protecting it around it.\n\nThis fixes a potential reuse and double free of a cfq\nio_context structure. The bug has been in CFQ for a long\ntime, it hit very few people but those it did hit seemed\nto see it a lot.\n\nTracked in RH bugzilla here:\n\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d577968\n\nCredit goes to Paul Bolle for figuring out that the issue\nwas around the one-hit ioc-\u003eioc_data cache. Thanks to his\nhard work the issue is now fixed.\n\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "ab4bd22d3cce6977dc039664cc2d052e3147d662",
      "tree": "70cd3b540a8efef5d737da68272f67d2265c356a",
      "parents": [
        "23c79d31a3dd2602ee1a5ff31303b2d7a2d3c159"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Jun 05 06:01:13 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 06 05:56:49 2011 +0200"
      },
      "message": "cfq-iosched: fix locking around ioc-\u003eioc_data assignment\n\nSince we are modifying this RCU pointer, we need to hold\nthe lock protecting it around it.\n\nThis fixes a potential reuse and double free of a cfq\nio_context structure. The bug has been in CFQ for a long\ntime, it hit very few people but those it did hit seemed\nto see it a lot.\n\nTracked in RH bugzilla here:\n\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d577968\n\nCredit goes to Paul Bolle for figuring out that the issue\nwas around the one-hit ioc-\u003eioc_data cache. Thanks to his\nhard work the issue is now fixed.\n\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "796d5116c407690b14fd5bda136aa67a39e7061a",
      "tree": "bb0522aacb0a923e6636c82aff143df95ea1d730",
      "parents": [
        "1fa7b6a29c61358cc2ca6f64cef4aa0e1a7ca74c"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Thu Jun 02 21:19:05 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 02 21:19:05 2011 +0200"
      },
      "message": "iosched: prevent aliased requests from starving other I/O\n\nHi, Jens,\n\nIf you recall, I posted an RFC patch for this back in July of last year:\nhttp://lkml.org/lkml/2010/7/13/279\n\nThe basic problem is that a process can issue a never-ending stream of\nasync direct I/Os to the same sector on a device, thus starving out\nother I/O in the system (due to the way the alias handling works in both\ncfq and deadline).  The solution I proposed back then was to start\ndispatching from the fifo after a certain number of aliases had been\ndispatched.  Vivek asked why we had to treat aliases differently at all,\nand I never had a good answer.  So, I put together a simple patch which\nallows aliases to be added to the rb tree (it adds them to the right,\nthough that doesn\u0027t matter as the order isn\u0027t guaranteed anyway).  I\nthink this is the preferred solution, as it doesn\u0027t break up time slices\nin CFQ or batches in deadline.  I\u0027ve tested it, and it does solve the\nstarvation issue.  Let me know what you think.\n\nCheers,\nJeff\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e2bd9678fc0085acf540dc4cb48ff961cd4d88c0",
      "tree": "25fa9535761abdafa1f9de9fc86108d8b178cfef",
      "parents": [
        "28304f485c3627cc5e1665b92e26eb7fcfe98088"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Thu Jun 02 13:05:02 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 02 13:05:02 2011 +0200"
      },
      "message": "block: Use hlist_entry() for io_context.cic_list.first\n\nlist_entry() and hlist_entry() are both simply aliases for\ncontainer_of(), but since io_context.cic_list.first is an hlist_node one\nshould at least use the correct alias.\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "28304f485c3627cc5e1665b92e26eb7fcfe98088",
      "tree": "c885abcc932d5ae28fdeb49027ea5eafaaafd376",
      "parents": [
        "4c49ff3fe128ca68dabd07537415c419ad7f82f9"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Thu Jun 02 13:05:02 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 02 13:05:02 2011 +0200"
      },
      "message": "cfq-iosched: Remove bogus check in queue_fail path\n\nqueue_fail can only be reached if cic is NULL, so its check for cic must\nbe bogus.\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4495a7d41dbda03841c2a1c2a5ce7135a45131ba",
      "tree": "9c5044963151f3c058d9e20ef88c4a856497fe27",
      "parents": [
        "ea9d6553b3b3044e7374774cc33bb1b2eee19dd3"
      ],
      "author": {
        "name": "Kyungmin Park",
        "email": "kyungmin.park@samsung.com",
        "time": "Tue May 31 10:04:09 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue May 31 19:49:44 2011 +0200"
      },
      "message": "CFQ: Fix typo and remove unnecessary semicolon\n\nFix comment typo and remove unnecessary semicolon at macro\n\nSigned-off-by: Kyungmin Park \u003ckyungmin.park@samsung.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "bdf7cf1c83872a0586ce4c4da6889103cc36dbd3",
      "tree": "9311bbcf8b9ffbe7207eba5cca557275f8151ae7",
      "parents": [
        "40efeb4d0bb1993c3c10baff9b7d86839f99171e",
        "ac04fee0b5c55bbac0858727a4154110b55d3f5a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 27 10:24:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 27 10:24:40 2011 -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:\n  loop: export module parameters\n  block: export blk_{get,put}_queue()\n  block: remove unused variable in bio_attempt_front_merge()\n  block: always allocate genhd-\u003eev if check_events is implemented\n  brd: export module parameters\n  brd: fix comment on initial device creation\n  brd: handle on-demand devices correctly\n  brd: limit \u0027max_part\u0027 module param to DISK_MAX_PARTS\n  brd: get rid of unused members from struct brd_device\n  block: fix oops on !disk-\u003equeue and sysfs discard alignment display\n"
    },
    {
      "commit": "d86e0e83b32bc84600adb0b6ea1fce389b266682",
      "tree": "3b71c7692b00b0aa557d06c9cd0e84ba6b8532af",
      "parents": [
        "700c4f3325495d2e0e619fb48b900ec942f1470b"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 27 07:44:43 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 27 07:45:45 2011 +0200"
      },
      "message": "block: export blk_{get,put}_queue()\n\nWe need them in SCSI to fix a bug, but currently they are not\nexported to modules. Export them.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f780bdb7c1c73009cb57adcf99ef50027d80bf3c",
      "tree": "d15668ffcc40a2aaa31723b87cfda0b166f84d57",
      "parents": [
        "4714d1d32d97239fb5ae3e10521d3f133a899b66"
      ],
      "author": {
        "name": "Ben Blum",
        "email": "bblum@andrew.cmu.edu",
        "time": "Thu May 26 16:25:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:34 2011 -0700"
      },
      "message": "cgroups: add per-thread subsystem callbacks\n\nAdd cgroup subsystem callbacks for per-thread attachment in atomic contexts\n\nAdd can_attach_task(), pre_attach(), and attach_task() as new callbacks\nfor cgroups\u0027s subsystem interface.  Unlike can_attach and attach, these\nare for per-thread operations, to be called potentially many times when\nattaching an entire threadgroup.\n\nAlso, the old \"bool threadgroup\" interface is removed, as replaced by\nthis.  All subsystems are modified for the new interface - of note is\ncpuset, which requires from/to nodemasks for attach to be globally scoped\n(though per-cpuset would work too) to persist from its pre_attach to\nattach_task and attach.\n\nThis is a pre-patch for cgroup-procs-writable.patch.\n\nSigned-off-by: Ben Blum \u003cbblum@andrew.cmu.edu\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nReviewed-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "700c4f3325495d2e0e619fb48b900ec942f1470b",
      "tree": "649f36acbbf68223908dcb52d881d0ff2fb4b79c",
      "parents": [
        "75e3f3ee3c64968d42f4843ec49e579f84b5aa0c"
      ],
      "author": {
        "name": "Luca Tettamanti",
        "email": "kronos.it@gmail.com",
        "time": "Thu May 26 21:07:26 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu May 26 21:07:26 2011 +0200"
      },
      "message": "block: remove unused variable in bio_attempt_front_merge()\n\nsector is never read inside the function.\n\nSigned-off-by: Luca Tettamanti \u003ckronos.it@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "75e3f3ee3c64968d42f4843ec49e579f84b5aa0c",
      "tree": "0522cb42944f2da85143f234b0f4b3f5319834eb",
      "parents": [
        "8892cbaf686fb18a5f0558b9fd7773b32c0c7852"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 26 21:06:50 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu May 26 21:06:50 2011 +0200"
      },
      "message": "block: always allocate genhd-\u003eev if check_events is implemented\n\n9fd097b149 (block: unexport DISK_EVENT_MEDIA_CHANGE for legacy/fringe\ndrivers) removed DISK_EVENT_MEDIA_CHANGE from legacy/fringe block\ndrivers which have inadequate -\u003echeck_events().  Combined with earlier\nchange 7c88a168da (block: don\u0027t propagate unlisted DISK_EVENTs to\nuserland), this enables using -\u003echeck_events() for internal processing\nwhile avoiding enabling in-kernel block event polling which can lead\nto infinite event loop.\n\nUnfortunately, this made many drivers including floppy without any bit\nset in disk-\u003eevents and -\u003easync_events in which case disk_add_events()\nsimply skipped allocation of disk-\u003eev, which disables whole event\nhandling.  As -\u003echeck_events() is still used during open processing\nfor revalidation, this can lead to open failure.\n\nThis patch always allocates disk-\u003eev if -\u003echeck_events is implemented.\nIn the long term, it would make sense to simply include the event\nstructure inline into genhd as it\u0027s now used by virtually all block\ndevices.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Ondrej Zary \u003clinux@rainbow-software.org\u003e\nReported-by: Alex Villacis Lasso \u003cavillaci@ceibo.fiec.espol.edu.ec\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "1547010e6e15a3f44f49381246421a1e19de526e",
      "tree": "560796824e489a5d5c0b6de7a143d9a48a558d83",
      "parents": [
        "20359f27e8ff115f7cddf3da5b3a6cdcca2e650d"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue May 24 10:23:22 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue May 24 10:23:22 2011 +0200"
      },
      "message": "cfq-iosched: free cic_index if cfqd allocation fails\n\nWhen struct cfq_data allocation fails, cic_index need to be freed.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "20359f27e8ff115f7cddf3da5b3a6cdcca2e650d",
      "tree": "b87c86545f68c5c660f3aeaf4cf3e366fa7db668",
      "parents": [
        "229836bd63c5413a4f8eed93d610b432be141e9b"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue May 24 10:23:22 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue May 24 10:23:22 2011 +0200"
      },
      "message": "cfq-iosched: remove unused \u0027group_changed\u0027 in cfq_service_tree_add()\n\nThe \u0027group_changed\u0027 variable is initialized to 0 and never changed, so\nchecking the variable is meaningless.\n\nIt is a leftover from 0bbfeb832042 (\"cfq-iosched: Always provide group\niosolation.\"). Let\u0027s get rid of it.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Justin TerAvest \u003cteravest@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "229836bd63c5413a4f8eed93d610b432be141e9b",
      "tree": "a55fa492dbcde4c8f179d58d07165bdff872c34e",
      "parents": [
        "b9f8ce059940064a732da49b5d6e618381dad956"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue May 24 10:23:21 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue May 24 10:23:21 2011 +0200"
      },
      "message": "cfq-iosched: reduce bit operations in cfq_choose_req()\n\nReduce the number of bit operations in cfq_choose_req() on average\n(and worst) cases.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b9f8ce059940064a732da49b5d6e618381dad956",
      "tree": "850281e8dd7bf5813d2960c2d42177803072bc02",
      "parents": [
        "4cbadbd16e2fb727f6926597e0a580829e6222f1"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue May 24 10:23:21 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue May 24 10:23:21 2011 +0200"
      },
      "message": "cfq-iosched: algebraic simplification in cfq_prio_to_maxrq()\n\nSimplify the calculation in cfq_prio_to_maxrq(), plus replace CFQ_PRIO_LISTS to\nIOPRIO_BE_NR since they are the same and IOPRIO_BE_NR looks more reasonable in\nthis context IMHO.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4cbadbd16e2fb727f6926597e0a580829e6222f1",
      "tree": "d3482b68a6743609cedcd3a5165a749b0d9ca990",
      "parents": [
        "7e69723fef8771a9d57bd27d36281d756130b4b5"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon May 23 19:35:04 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon May 23 19:35:04 2011 +0200"
      },
      "message": "blk-cgroup: Initialize ioc-\u003ecgroup_changed at ioc creation time\n\nIf we don\u0027t explicitly initialize it to zero, CFQ might think that\ncgroup of ioc has changed and it generates lots of unnecessary calls\nto call_for_each_cic(changed_cgroup). Fix it.\n\ncfq_get_io_context()\n  cfq_ioc_set_cgroup()\n     call_for_each_cic(ioc, changed_cgroup)\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "95cf3dd9dbe6883a0328724e2110e3fc6465630b",
      "tree": "738ee1f31ee14c9dbfd4336bd8c20ee42d26743d",
      "parents": [
        "317389a7739675aa990b7e0d750a7c435f1d25d7"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon May 23 10:02:19 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon May 23 10:02:19 2011 +0200"
      },
      "message": "block: call elv_bio_merged() when merged\n\nCommit 73c101011926 (\"block: initial patch for on-stack per-task plugging\")\nremoved calls to elv_bio_merged() when @bio merged with @req. Re-add them.\n\nThis in turn will update merged stats in associated group. That\nshould be safe as long as request has got reference to the blkio_group.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Divyesh Shah \u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "317389a7739675aa990b7e0d750a7c435f1d25d7",
      "tree": "c24b7bb45d03233d76405dab4f9406c05c44eafa",
      "parents": [
        "2abae55f5a41d29f21b5b259c33d218c950d5c90"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon May 23 10:02:19 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon May 23 10:02:19 2011 +0200"
      },
      "message": "cfq-iosched: Make IO merge related stats per cpu\n\nMake BLKIO_STAT_MERGED per cpu hence gettring rid of need of taking\nblkg-\u003estats_lock.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2abae55f5a41d29f21b5b259c33d218c950d5c90",
      "tree": "69169fa89fb25fcf7521999d7fca91664262bfc7",
      "parents": [
        "345227d705f2318e9bc088e79fe71a38bb5fe82b"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon May 23 10:02:19 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon May 23 10:02:19 2011 +0200"
      },
      "message": "cfq-iosched: Fix a memory leak of per cpu stats for root group\n\nWe allocated per cpu stats struct for root group but did not free it.\nFix it.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "771949d03b4f5295f648f09141325fd478f6c7ce",
      "tree": "5e69b743566cc8f1eaafffcd03554bbd2b84e028",
      "parents": [
        "0eb8e885726a3a93206510092bbc7e39e272f6ef"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:52:16 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:52:16 2011 +0200"
      },
      "message": "block: get rid of on-stack plugging debug checks\n\nWe don\u0027t need them anymore, so kill:\n\n- REQ_ON_PLUG checks in various places\n- !rq_mergeable() check in plug merging\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "0eb8e885726a3a93206510092bbc7e39e272f6ef",
      "tree": "d866a663df8d7d0f6a405d7eba45d889c12ba8bb",
      "parents": [
        "af75cd3c67845ebe31d2df9a780889a5ebecef11",
        "0a58e077eb600d1efd7e54ad9926a75a39d7f8ae"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:36:16 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:36:16 2011 +0200"
      },
      "message": "Merge branch \u0027for-linus\u0027 into for-2.6.40/core\n\nThis patch merges in a fix that missed 2.6.39 final.\n\nConflicts:\n\tblock/blk.h\n"
    },
    {
      "commit": "af75cd3c67845ebe31d2df9a780889a5ebecef11",
      "tree": "2d8cdeb9db03a72a90b9b80612f08bd0e7bb4f61",
      "parents": [
        "f0bdc8cdd9a2bcc2c84ae2a1fdbff4188b354d8d"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:31 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:53 2011 +0200"
      },
      "message": "blk-throttle: Make no throttling rule group processing lockless\n\nCurrently we take a queue lock on each bio to check if there are any\nthrottling rules associated with the group and also update the stats.\nNow access the group under rcu and update the stats without taking\nthe queue lock. Queue lock is taken only if there are throttling rules\nassociated with the group.\n\nSo the common case of root group when there are no rules, save\nunnecessary pounding of request queue lock.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f0bdc8cdd9a2bcc2c84ae2a1fdbff4188b354d8d",
      "tree": "6d34ecec4cfc29c6032a7b6ce1acbb61088d1787",
      "parents": [
        "575969a0dd3fe65c6556bcb8f87c42303326ea55"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:30 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:53 2011 +0200"
      },
      "message": "blk-cgroup: Make cgroup stat reset path blkg-\u003elock free for dispatch stats\n\nNow dispatch stats update is lock free. But reset of these stats still\ntakes blkg-\u003estats_lock and is dependent on that. As stats are per cpu,\nwe should be able to just reset the stats on each cpu without any locks.\n(Atleast for 64bit arch).\n\nOn 32bit arch there is a small race where 64bit updates are not atomic.\nThe result of this race can be that in the presence of other writers,\none might not get 0 value after reset of a stat and might see something\nintermediate\n\nOne can write more complicated code to cover this race like sending IPI\nto other cpus to reset stats and for offline cpus, reset these directly.\n\nRight not I am not taking that path because reset_update is more of a\ndebug feature and it can happen only on 32bit arch and possibility of\nit happening is small. Will fix it if it becomes a real problem. For\nthe time being going for code simplicity.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "575969a0dd3fe65c6556bcb8f87c42303326ea55",
      "tree": "0db18fa173b20076e03b5b9c4be4c31c56baa438",
      "parents": [
        "5624a4e445e2ec27582984b068d7bf7f127cee10"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:29 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:53 2011 +0200"
      },
      "message": "blk-cgroup: Make 64bit per cpu stats safe on 32bit arch\n\nSome of the stats are 64bit and updation will be non atomic on 32bit\narchitecture. Use sequence counters on 32bit arch to make reading\nof stats safe.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5624a4e445e2ec27582984b068d7bf7f127cee10",
      "tree": "0827c83c6e5f5fa83bd0dadc1bc395c0f0657dae",
      "parents": [
        "4843c69d496a8d2e4caab6182fe016b9a79136e0"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:28 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:52 2011 +0200"
      },
      "message": "blk-throttle: Make dispatch stats per cpu\n\nCurrently we take blkg_stat lock for even updating the stats. So even if\na group has no throttling rules (common case for root group), we end\nup taking blkg_lock, for updating the stats.\n\nMake dispatch stats per cpu so that these can be updated without taking\nblkg lock.\n\nIf cpu goes offline, these stats simply disappear. No protection has\nbeen provided for that yet. Do we really need anything for that?\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4843c69d496a8d2e4caab6182fe016b9a79136e0",
      "tree": "0812bb95cfc7769a3ccd90d84f303bed861c9c0a",
      "parents": [
        "5617cbef7723952cbdff28c7a10ff8a254945f4f"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:27 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:52 2011 +0200"
      },
      "message": "blk-throttle: Free up a group only after one rcu grace period\n\nSoon we will allow accessing a throtl_grp under rcu_read_lock(). Hence\nstart freeing up throtl_grp after one rcu grace period.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5617cbef7723952cbdff28c7a10ff8a254945f4f",
      "tree": "1922ac8f6011d5ccc92c668448971a12cc6df909",
      "parents": [
        "269f541555d8f5da322d592fb3e13e23ed62d80c"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:26 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:52 2011 +0200"
      },
      "message": "blk-throttle: Use helper function to add root throtl group to lists\n\nUse same helper function for root group as we use with dynamically\nallocated groups to add it to various lists.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "269f541555d8f5da322d592fb3e13e23ed62d80c",
      "tree": "8aaf602bc8d284f9c43720801b799f631dc47419",
      "parents": [
        "29b125892f3317ada86b662e0b6ebc0f79be9037"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:25 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:52 2011 +0200"
      },
      "message": "blk-throttle: Introduce a helper function to fill in device details\n\nA helper function for the code which is used at 2-3 places. Makes reading\ncode little easier.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "29b125892f3317ada86b662e0b6ebc0f79be9037",
      "tree": "a8caa5a8d521c0d667bbae956ff4d8b160ad02d9",
      "parents": [
        "f469a7b4d5b1d1d053200a9015fd25d59c057f49"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:24 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:52 2011 +0200"
      },
      "message": "blk-throttle: Dynamically allocate root group\n\nCurrently, we allocate root throtl_grp statically. But as we will be\nintroducing per cpu stat pointers and that will be allocated\ndynamically even for root group, we might as well make whole root\nthrotl_grp allocation dynamic and treat it in same manner as other\ngroups.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f469a7b4d5b1d1d053200a9015fd25d59c057f49",
      "tree": "2c68c0689e40955b186e350b15d44d0b260f4655",
      "parents": [
        "56edf7d75db5b14d628b46623c414ffbeed68d7f"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:23 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:52 2011 +0200"
      },
      "message": "blk-cgroup: Allow sleeping while dynamically allocating a group\n\nCurrently, all the cfq_group or throtl_group allocations happen while\nwe are holding -\u003equeue_lock and sleeping is not allowed.\n\nSoon, we will move to per cpu stats and also need to allocate the\nper group stats. As one can not call alloc_percpu() from atomic\ncontext as it can sleep, we need to drop -\u003equeue_lock, allocate the\ngroup, retake the lock and continue processing.\n\nIn throttling code, I check the queue DEAD flag again to make sure\nthat driver did not call blk_cleanup_queue() in the mean time.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "56edf7d75db5b14d628b46623c414ffbeed68d7f",
      "tree": "7d7ff46f03676154d0edf3da85c8e738d506ad92",
      "parents": [
        "3e59cf9d66a87763fef6c232a4a8dc664461ca50"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:22 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:52 2011 +0200"
      },
      "message": "cfq-iosched: Fix a possible race with cfq cgroup removal code\n\nblkg-\u003ekey \u003d cfqd is an rcu protected pointer and hence we used to do\ncall_rcu(cfqd-\u003ercu_head) to free up cfqd after one rcu grace period.\n\nThe problem here is that even though cfqd is around, there are no\ngurantees that associated request queue (td-\u003equeue) or q-\u003equeue_lock\nis still around. A driver might have called blk_cleanup_queue() and\nrelease the lock.\n\nIt might happen that after freeing up the lock we call\nblkg-\u003ekey-\u003equeue-\u003equeue_ock and crash. This is possible in following\npath.\n\nblkiocg_destroy()\n blkio_unlink_group_fn()\n  cfq_unlink_blkio_group()\n\nHence, wait for an rcu peirod if there are groups which have not\nbeen unlinked from blkcg-\u003eblkg_list. That way, if there are any groups\nwhich are taking cfq_unlink_blkio_group() path, can safely take queue\nlock.\n\nThis is how we have taken care of race in throttling logic also.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3e59cf9d66a87763fef6c232a4a8dc664461ca50",
      "tree": "2a7a0618092f29ac72b3723e0e3e64a7e4227716",
      "parents": [
        "a23e68695593d00b35a6cddf8e9c9ec03505ecb9"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:21 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:52 2011 +0200"
      },
      "message": "cfq-iosched: Get rid of redundant function parameter \"create\"\n\nNobody seems to be using cfq_find_alloc_cfqg() function parameter \"create\".\nGet rid of that.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a23e68695593d00b35a6cddf8e9c9ec03505ecb9",
      "tree": "954a92fb07408e4b7483881f09d2afc91002bc00",
      "parents": [
        "a29a171e7c46c60842b85729280e2f5690372683"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:20 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:52 2011 +0200"
      },
      "message": "blk-cgroup: move some fields of unaccounted_time file under right config option\n\ncgroup unaccounted_time file is created only if CONFIG_DEBUG_BLK_CGROUP\u003dy.\nthere are some fields which are out side this config option. Fix that.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a29a171e7c46c60842b85729280e2f5690372683",
      "tree": "83d9be7f8801c04feeac0256e677da7240239046",
      "parents": [
        "698567f3fa790fea37509a54dea855302dd88331"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu May 19 15:38:19 2011 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:34:51 2011 +0200"
      },
      "message": "blk-throttle: Do the new group initialization with the help of a function\n\nGroup initialization code seems to be at two places. root group\ninitialization in blk_throtl_init() and dynamically allocated group\nin throtl_find_alloc_tg(). Create a common function and use at both\nthe places.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "698567f3fa790fea37509a54dea855302dd88331",
      "tree": "7a1df976a0eb12cab03e82c18809a30d5482fee4",
      "parents": [
        "d70d0711edd8076ec2ce0ed109106e2df950681b",
        "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:33:15 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:33:15 2011 +0200"
      },
      "message": "Merge commit \u0027v2.6.39\u0027 into for-2.6.40/core\n\nSince for-2.6.40/core was forked off the 2.6.39 devel tree, we\u0027ve\nhad churn in the core area that makes it difficult to handle\npatches for eg cfq or blk-throttle. Instead of requiring that they\nbe based in older versions with bugs that have been fixed later\nin the rc cycle, merge in 2.6.39 final.\n\nAlso fixes up conflicts in the below files.\n\nConflicts:\n\tdrivers/block/paride/pcd.c\n\tdrivers/cdrom/viocd.c\n\tdrivers/ide/ide-cd.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "0a58e077eb600d1efd7e54ad9926a75a39d7f8ae",
      "tree": "eb1b325d28c0aa44b1dba3bdb0b31b662b2a1f7f",
      "parents": [
        "a2b9c1f6208126e6df6c02428c501f8853685812"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@suse.de",
        "time": "Wed May 18 16:20:10 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed May 18 19:30:32 2011 +0200"
      },
      "message": "block: add proper state guards to __elv_next_request\n\nblk_cleanup_queue() calls elevator_exit() and after this, we can\u0027t\ntouch the elevator without oopsing.  __elv_next_request() must check\nfor this state because in the refcounted queue model, we can still\ncall it after blk_cleanup_queue() has been called.\n\nThis was reported as causing an oops attributable to scsi.\n\nSigned-off-by: James Bottomley \u003cJames.Bottomley@suse.de\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3ec717b7ca4ee1d75d77e4f6286430d8f01d1dbd",
      "tree": "fcf1db152baea6270dd6c4dbdf6ff8dd15ad440f",
      "parents": [
        "9937a5e2f32892db0dbeefc2b3bc74b3ae3ea9c7"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Wed May 18 11:22:43 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed May 18 12:24:03 2011 +0200"
      },
      "message": "block: don\u0027t delay blk_run_queue_async\n\nLet\u0027s check a scenario:\n1. blk_delay_queue(q, SCSI_QUEUE_DELAY);\n2. blk_run_queue_async();\nthe second one will became a noop, because q-\u003edelay_work already has\nWORK_STRUCT_PENDING_BIT set, so the delayed work will still run after\nSCSI_QUEUE_DELAY. But blk_run_queue_async actually hopes the delayed\nwork runs immediately.\n\nFix this by doing a cancel on potentially pending delayed work\nbefore queuing an immediate run of the workqueue.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a934a00a69e940b126b9bdbf83e630ef5fe43523",
      "tree": "b3f82d7b0a6c34c4d449debd2d1d242bdbf84b56",
      "parents": [
        "bbdd304cf66fbf2b4b2d28418dc619d443635e83"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed May 18 10:37:35 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed May 18 10:37:35 2011 +0200"
      },
      "message": "block: Fix discard topology stacking and reporting\n\nIn some cases we would end up stacking discard_zeroes_data incorrectly.\nFix this by enabling the feature by default for stacking drivers and\nclearing it for low-level drivers. Incorporating a device that does not\nsupport dzd will then cause the feature to be disabled in the stacking\ndriver.\n\nAlso ensure that the maximum discard value does not overflow when\nexported in sysfs and return 0 in the alignment and dzd fields for\ndevices that don\u0027t support discard.\n\nReported-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "70087dc38cc77ca8f46059564c00338777734762",
      "tree": "2ffd5885a12acb44d90d3c3c1a578387bad94a32",
      "parents": [
        "02e352287a40bd456eb78df705bf888bc3161d3f"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon May 16 15:24:08 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon May 16 15:24:08 2011 +0200"
      },
      "message": "blk-throttle: Use task_subsys_state() to determine a task\u0027s blkio_cgroup\n\nCurrentlly we first map the task to cgroup and then cgroup to\nblkio_cgroup. There is a more direct way to get to blkio_cgroup\nfrom task using task_subsys_state(). Use that.\n\nThe real reason for the fix is that it also avoids a race in generic\ncgroup code. During remount/umount rebind_subsystems() is called and\nit can do following with and rcu protection.\n\ncgrp-\u003esubsys[i] \u003d NULL;\n\nThat means if somebody got hold of cgroup under rcu and then it tried\nto do cgroup-\u003esubsys[] to get to blkio_cgroup, it would get NULL which\nis wrong. I was running into this race condition with ltp running on a\nupstream derived kernel and that lead to crash.\n\nSo ideally we should also fix cgroup generic code to wait for rcu\ngrace period before setting pointer to NULL. Li Zefan is not very keen\non introducing synchronize_wait() as he thinks it will slow\ndown moun/remount/umount operations.\n\nSo for the time being atleast fix the kernel crash by taking a more\ndirect route to blkio_cgroup.\n\nOne tester had reported a crash while running LTP on a derived kernel\nand with this fix crash is no more seen while the test has been\nrunning for over 6 days.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8af1954d172a46a63e5e79dae523a6d74715e458",
      "tree": "6142f111bb600c4bbf194209155e857fd5f83ca8",
      "parents": [
        "5baebe5c86acd6100536a466905880529f79cf1a"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri May 06 19:30:01 2011 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 06 19:30:01 2011 -0600"
      },
      "message": "blkdev: Do not return -EOPNOTSUPP if discard is supported\n\nCurrently we return -EOPNOTSUPP in blkdev_issue_discard() if any of the\nbio fails due to underlying device not supporting discard request.\nHowever, if the device is for example dm device composed of devices\nwhich some of them support discard and some of them does not, it is ok\nfor some bios to fail with EOPNOTSUPP, but it does not mean that discard\nis not supported at all.\n\nThis commit removes the check for bios failed with EOPNOTSUPP and change\nblkdev_issue_discard() to return operation not supported if and only if\nthe device does not actually supports it, not just part of the device as\nsome bios might indicate.\n\nThis change also fixes problem with BLKDISCARD ioctl() which now works\ncorrectly on such dm devices.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nCC: Jens Axboe \u003cjaxboe@fusionio.com\u003e\nCC: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5baebe5c86acd6100536a466905880529f79cf1a",
      "tree": "6c7b4e6e170037981ea1bc094547034d3281c344",
      "parents": [
        "5dba3089ed03f84b84c6c739df8330112f04a15d"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri May 06 19:26:28 2011 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 06 19:26:28 2011 -0600"
      },
      "message": "blkdev: Simple cleanup in blkdev_issue_zeroout()\n\nIn blkdev_issue_zeroout() we are submitting regular WRITE bios, so we do\nnot need to check for -EOPNOTSUPP specifically in case of error. Also\nthere is no need to have label submit: because there is no way to jump\nout from the while cycle without an error and we really want to exit,\nrather than try again. And also remove the check for (sz \u003d\u003d 0) since at\nthat point sz can never be zero.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCC: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nCC: Jens Axboe \u003cjaxboe@fusionio.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5dba3089ed03f84b84c6c739df8330112f04a15d",
      "tree": "a61a12a0a13eba03b47fe1cba76afe5ac8677992",
      "parents": [
        "900e599eb0c16390ff671652a44e0ea90532220e"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri May 06 19:26:27 2011 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 06 19:26:27 2011 -0600"
      },
      "message": "blkdev: Submit discard bio in batches in blkdev_issue_discard()\n\nCurrently we are waiting for every submitted REQ_DISCARD bio separately,\nbut it can have unwanted consequences of repeatedly flushing the queue,\nso we rather submit bios in batches and wait for the entire batch, hence\nnarrowing the window of other ios going in.\n\nUse bio_batch_end_io() and struct bio_batch for that purpose, the same\nis used by blkdev_issue_zeroout(). Also change bio_batch_end_io() so we\nalways set !BIO_UPTODATE in the case of error and remove the check for\nbb, since we are the only user of this function and we always set this.\n\nRemove bio_get()/bio_put() from the blkdev_issue_discard() since\nbio_alloc() and bio_batch_end_io() is doing the same thing, hence it is\nnot needed anymore.\n\nI have done simple dd testing with surprising results. The script I have\nused is:\n\nfor i in $(seq 10); do\n        echo $i\n        dd if\u003d/dev/sdb1 of\u003d/dev/sdc1 bs\u003d4k \u0026\n        sleep 5\ndone\n/usr/bin/time -f %e ./blkdiscard /dev/sdc1\n\nRunning time of BLKDISCARD on the whole device:\nwith patch              without patch\n0.95                    15.58\n\nSo we can see that in this artificial test the kernel with the patch\napplied is approx 16x faster in discarding the device.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nCC: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nCC: Jens Axboe \u003cjaxboe@fusionio.com\u003e\nCC: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3ac0cc4508709d42ec9aa351086c7d38bfc0660c",
      "tree": "933d5ab6ff9b0763f36e614962abb5bdcc4a348a",
      "parents": [
        "f3876930952390a31c3a7fd68dd621464a36eb80"
      ],
      "author": {
        "name": "shaohua.li@intel.com",
        "email": "shaohua.li@intel.com",
        "time": "Fri May 06 11:34:41 2011 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 06 11:36:25 2011 -0600"
      },
      "message": "block: hold queue if flush is running for non-queueable flush drive\n\nIn some drives, flush requests are non-queueable. When flush request is\nrunning, normal read/write requests can\u0027t run. If block layer dispatches\nsuch request, driver can\u0027t handle it and requeue it.  Tejun suggested we\ncan hold the queue when flush is running. This can avoid unnecessary\nrequeue.  Also this can improve performance. For example, we have\nrequest flush1, write1, flush 2. flush1 is dispatched, then queue is\nhold, write1 isn\u0027t inserted to queue. After flush1 is finished, flush2\nwill be dispatched. Since disk cache is already clean, flush2 will be\nfinished very soon, so looks like flush2 is folded to flush1.\n\nIn my test, the queue holding completely solves a regression introduced by\ncommit 53d63e6b0dfb95882ec0219ba6bbd50cde423794:\n\n    block: make the flush insertion use the tail of the dispatch list\n\n    It\u0027s not a preempt type request, in fact we have to insert it\n    behind requests that do specify INSERT_FRONT.\n\nwhich causes about 20% regression running a sysbench fileio\nworkload.\n\nStable: 2.6.39 only\n\nCc: stable@kernel.org\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f3876930952390a31c3a7fd68dd621464a36eb80",
      "tree": "7fe2306a8dc2022ac7724b2d47629e38e3fb354b",
      "parents": [
        "490b94be0282c3b67f56453628ff0aaae827a670"
      ],
      "author": {
        "name": "shaohua.li@intel.com",
        "email": "shaohua.li@intel.com",
        "time": "Fri May 06 11:34:32 2011 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 06 11:36:25 2011 -0600"
      },
      "message": "block: add a non-queueable flush flag\n\nflush request isn\u0027t queueable in some drives. Add a flag to let driver\nnotify block layer about this. We can optimize flush performance with the\nknowledge.\n\nStable: 2.6.39 only\n\nCc: stable@kernel.org\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "490b94be0282c3b67f56453628ff0aaae827a670",
      "tree": "8f77bbe2aac76f1cdd85f5fe0e6aad65db515f3b",
      "parents": [
        "addd0a09fc06179f2e02b4221775d9ab265c9fc7"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "kees.cook@canonical.com",
        "time": "Thu May 05 18:02:12 2011 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu May 05 18:02:12 2011 -0600"
      },
      "message": "iosched: remove redundant sprintf\n\nAfter the anticipatory scheduler was dropped, there was no need to\nspecial-case the request_module string. As such, drop the redundant\nsprintf and stack variable.\n\nSigned-off-by: Kees Cook \u003ckees.cook@canonical.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "addd0a09fc06179f2e02b4221775d9ab265c9fc7",
      "tree": "4e8c919a2937cd3d37d8a5c2f23e28ab130000a5",
      "parents": [
        "d4dc210f69bcb0b4bef5a83b1c323817be89bad1"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Thu May 05 15:10:05 2011 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu May 05 15:10:05 2011 -0600"
      },
      "message": "block: Remove \u0027plug/unplug\u0027 comment in blk_execute_rq_nowait\n\nunplug is replaced with blk_run_queue now in blk_execute_rq_nowait,\nso change the comment accordingly.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7c88a168da8003fd4d8fb6ae103c4ecf29cb1130",
      "tree": "121d1b65615faf98e3c77f066b50527275d4b4c3",
      "parents": [
        "3aa72873ffdcc2f7919743efbbefc351ec73f5cb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 21 19:43:58 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Apr 21 19:43:58 2011 +0200"
      },
      "message": "block: don\u0027t propagate unlisted DISK_EVENTs to userland\n\nDISK_EVENT_MEDIA_CHANGE is used for both userland visible event and\ninternal event for revalidation of removeable devices.  Some legacy\ndrivers don\u0027t implement proper event detection and continuously\ngenerate events under certain circumstances.  For example, ide-cd\ngenerates media changed continuously if there\u0027s no media in the drive,\nwhich can lead to infinite loop of events jumping back and forth\nbetween the driver and userland event handler.\n\nThis patch updates disk event infrastructure such that it never\npropagates events not listed in disk-\u003eevents to userland.  Those\nevents are processed the same for internal purposes but uevent\ngeneration is suppressed.\n\nThis also ensures that userland only gets events which are advertised\nin the @events sysfs node lowering risk of confusion.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3aa72873ffdcc2f7919743efbbefc351ec73f5cb",
      "tree": "f159c777a489c6ac3721ba1f1cadbe2d86b19fa5",
      "parents": [
        "584f79046780e10cb24367a691f8c28398a00e84"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Apr 21 19:28:35 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Apr 21 19:28:35 2011 +0200"
      },
      "message": "elevator: check for ELEVATOR_INSERT_SORT_MERGE in !elvpriv case too\n\nThe sort insert is the one that goes to the IO scheduler. With\nthe SORT_MERGE addition, we could bypass IO scheduler setup\nbut still ask the IO scheduler to insert the request. This would\ncause an oops on switching IO schedulers through the sysfs\ninterface, unless the disk just happened to be idle while it\noccured.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "60735b6362f29b52b5635a2dfa9ab5ad39948345",
      "tree": "e590ce1697965a4ccb48af5cb729c64452cdcc6f",
      "parents": [
        "ed5302d3c25006a9edc7a7fbea97a30483f89ef7"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Tue Apr 19 13:50:40 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 19 13:51:53 2011 +0200"
      },
      "message": "block: Remove the extra check in queue_requests_store\n\nIn queue_requests_store, the code looks like\n\tif (rl-\u003ecount[BLK_RW_SYNC] \u003e\u003d q-\u003enr_requests) {\n\t\tblk_set_queue_full(q, BLK_RW_SYNC);\n\t} else if (rl-\u003ecount[BLK_RW_SYNC]+1 \u003c\u003d q-\u003enr_requests) {\n\t\tblk_clear_queue_full(q, BLK_RW_SYNC);\n\t\twake_up(\u0026rl-\u003ewait[BLK_RW_SYNC]);\n\t}\nIf we don\u0027t satify the situation of \"if\", we can get that\nrl-\u003ecount[BLK_RW_SYNC} \u003c q-\u003enr_quests. It is the same as\nrl-\u003ecount[BLK_RW_SYNC]+1 \u003c\u003d q-\u003enr_requests.\nAll the \"else\" should satisfy the \"else if\" check so it isn\u0027t\nneeded actually.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "ed5302d3c25006a9edc7a7fbea97a30483f89ef7",
      "tree": "7322cdd2607d7d8ffaf8a6539ca001771928363f",
      "parents": [
        "d350e6b6e819df0a383ff34465720bfaa0f91c79"
      ],
      "author": {
        "name": "Liu Yuan",
        "email": "tailai.ly@taobao.com",
        "time": "Tue Apr 19 13:47:58 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 19 13:51:53 2011 +0200"
      },
      "message": "block, blk-sysfs: Fix an err return path in blk_register_queue()\n\nWe do not call blk_trace_remove_sysfs() in err return path\nif kobject_add() fails. This path fixes it.\n\nCc: stable@kernel.org\nSigned-off-by: Liu Yuan \u003ctailai.ly@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d350e6b6e819df0a383ff34465720bfaa0f91c79",
      "tree": "338c44b5ffaab070c3fdf2f2772cfd50f6163559",
      "parents": [
        "c21e6beba8835d09bb80e34961430b13e60381c5"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 19 13:34:14 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 19 13:34:14 2011 +0200"
      },
      "message": "block: remove stale kerneldoc member from __blk_run_queue()\n\nWe don\u0027t pass in a \u0027force_kblockd\u0027 anymore, get rid of the\nstsale comment.\n\nReported-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c21e6beba8835d09bb80e34961430b13e60381c5",
      "tree": "cdf6f6d40130b95e641ab5db1de0f6ecc179054a",
      "parents": [
        "5f45c69589b7d2953584e6cd0b31e35dbe960ad0"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 19 13:32:46 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 19 13:32:46 2011 +0200"
      },
      "message": "block: get rid of QUEUE_FLAG_REENTER\n\nWe are currently using this flag to check whether it\u0027s safe\nto call into -\u003erequest_fn(). If it is set, we punt to kblockd.\nBut we get a lot of false positives and excessive punts to\nkblockd, which hurts performance.\n\nThe only real abuser of this infrastructure is SCSI. So export\nthe async queue run and convert SCSI over to use that. There\u0027s\nroom for improvement in that SCSI need not always use the async\ncall, but this fixes our performance issue and they can fix that\nup in due time.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5f45c69589b7d2953584e6cd0b31e35dbe960ad0",
      "tree": "7f920cebcbbe6a1435975e355cee15289ddbc428",
      "parents": [
        "bd900d4580107c899d43b262fbbd995f11097a43"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 19 09:10:35 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 19 09:10:35 2011 +0200"
      },
      "message": "cfq-iosched: read_lock() does not always imply rcu_read_lock()\n\nFor some configurations of CONFIG_PREEMPT that is not true. So\nget rid of __call_for_each_cic() and always uses the explicitly\nrcu_read_lock() protected call_for_each_cic() instead.\n\nThis fixes a potential bug related to IO scheduler removal or\nonline switching.\n\nThanks to Paul McKenney for clarifying this.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "bd900d4580107c899d43b262fbbd995f11097a43",
      "tree": "c58b69acd1e5dc54e0e675901ab3d609c0cae945",
      "parents": [
        "24ecfbe27f65563909b14492afda2f1c21f7c044"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Apr 18 22:06:57 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Apr 18 22:06:57 2011 +0200"
      },
      "message": "block: kill blk_flush_plug_list() export\n\nWith all drivers and file systems converted, we only have\nin-core use of this function. So remove the export.\n\nReporteed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "24ecfbe27f65563909b14492afda2f1c21f7c044",
      "tree": "a7e51d903c400d0925f87be5f3069a5a44e0af24",
      "parents": [
        "4521cc4ed5173f92714f6999a69910c3385fed68"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Apr 18 11:41:33 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Apr 18 11:41:33 2011 +0200"
      },
      "message": "block: add blk_run_queue_async\n\nInstead of overloading __blk_run_queue to force an offload to kblockd\nadd a new blk_run_queue_async helper to do it explicitly.  I\u0027ve kept\nthe blk_queue_stopped check for now, but I suspect it\u0027s not needed\nas the check we do when the workqueue items runs should be enough.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4521cc4ed5173f92714f6999a69910c3385fed68",
      "tree": "26ff58e87dfd303024df098935cc55e9a7bbe48d",
      "parents": [
        "c3b328ac846bcf6b9a62c5563380a81ab723006d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Apr 18 11:36:39 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Apr 18 11:36:39 2011 +0200"
      },
      "message": "block: blk_delay_queue() should use kblockd workqueue\n\nReported-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "99e22598e9a8e0a996d69c8c0f6b7027cb57720a",
      "tree": "9cf18bc4681889bdfcbc0c845e384f809fb29fce",
      "parents": [
        "b4cb290e0a7d19235bd075c2ad4d60dbab0bac15"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Apr 18 09:59:55 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Apr 18 09:59:55 2011 +0200"
      },
      "message": "block: drop queue lock before calling __blk_run_queue() for kblockd punt\n\nIf we know we are going to punt to kblockd, we can drop the queue\nlock before calling into __blk_run_queue() since it only does a\nsafe bit test and a workqueue call. Since kblockd needs to grab\nthis very lock as one of the first things it does, it\u0027s a good\noptimization to drop the lock before waking kblockd.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b4cb290e0a7d19235bd075c2ad4d60dbab0bac15",
      "tree": "2674fc5e3d0ee76e8b8205ab771fe7bbed173a88",
      "parents": [
        "048c9374a749a27f16493cea033fa4a8ff492356"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Apr 18 09:54:05 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Apr 18 09:54:05 2011 +0200"
      },
      "message": "Revert \"block: add callback function for unplug notification\"\n\nMD can\u0027t use this since it really requires us to be able to\nkeep more than a single piece of state for the unplug. Commit\n048c9374 added the required support for MD, so get rid of this\nnow unused code.\n\nThis reverts commit f75664570d8b75469cc468f23c2b27220984983b.\n\nConflicts:\n\n\tblock/blk-core.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "048c9374a749a27f16493cea033fa4a8ff492356",
      "tree": "64f520a1a2d2e1a9c30b45e306ce6f901f8f8d49",
      "parents": [
        "a1b49cb7e2a7961ec3aa8b64860bf480d4ec9077"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 09:52:22 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Apr 18 09:52:22 2011 +0200"
      },
      "message": "block: Enhance new plugging support to support general callbacks\n\nmd/raid requires an unplug callback, but as it does not uses\nrequests the current code cannot provide one.\n\nSo allow arbitrary callbacks to be attached to the blk_plug.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "49cac01e1fa74174d72adb0e872504a7fefd7c01",
      "tree": "a1ab1974eceea3179a604413955ad8369ba715d7",
      "parents": [
        "a237c1c5bc5dc5c76a21be922dca4826f3eca8ca"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Apr 16 13:51:05 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Apr 16 13:51:05 2011 +0200"
      },
      "message": "block: make unplug timer trace event correspond to the schedule() unplug\n\nIt\u0027s a pretty close match to what we had before - the timer triggering\nwould mean that nobody unplugged the plug in due time, in the new\nscheme this matches very closely what the schedule() unplug now is.\nIt\u0027s essentially the difference between an explicit unplug (IO unplug)\nor an implicit unplug (timer unplug, we scheduled with pending IO\nqueued).\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f6603783f9f099bf7a83b3f6c689bbbf74f0e96e",
      "tree": "450065f77e95b6cd0eee13c9d8f721016be79839",
      "parents": [
        "88b996cd0652280cc9b9fc70008fda15f14175e1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Apr 15 15:49:07 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Apr 15 15:49:07 2011 +0200"
      },
      "message": "block: only force kblockd unplugging from the schedule() path\n\nFor the explicit unplugging, we\u0027d prefer to kick things off\nimmediately and not pay the penalty of the latency to switch\nto kblockd. So let blk_finish_plug() do the run inline, while\nthe implicit-on-schedule-out unplug will punt to kblockd.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "88b996cd0652280cc9b9fc70008fda15f14175e1",
      "tree": "c842575e47ab094bced8a01b241568616e89366a",
      "parents": [
        "80656b67b3988f83edd86a280d9937124fe62050"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Apr 15 15:20:10 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Apr 15 15:20:10 2011 +0200"
      },
      "message": "block: cleanup the block plug helper functions\n\nIt\u0027s a bit of a mess currently. task-\u003eplug is being cleared\nand reset in __blk_finish_plug(), and blk_finish_plug() is\ntesting for a NULL plug which cannot happen even from schedule()\nanymore since it uses blk_needs_flush_plug() to determine\nwhether to call into this function at all.\n\nSo get rid of some of the cruft.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "80656b67b3988f83edd86a280d9937124fe62050",
      "tree": "58d23b396fa17262b697134cf2a58651f26d3460",
      "parents": [
        "f4af3c3d077a004762aaad052049c809fd8c6f0c"
      ],
      "author": {
        "name": "Liu Yuan",
        "email": "tailai.ly@taobao.com",
        "time": "Wed Apr 13 22:14:54 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Apr 13 22:14:54 2011 +0200"
      },
      "message": "block, blk-sysfs: Use the variable directly instead of a function call\n\nIn the function blk_register_queue(), var _dev_ is already assigned by\ndisk_to_dev().So use it directly instead of calling disk_to_dev() again.\n\nSigned-off-by: Liu Yuan \u003ctailai.ly@taobao.com\u003e\n\nModified by me to delete an empty line in the same function while\nin there anyway.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f4af3c3d077a004762aaad052049c809fd8c6f0c",
      "tree": "c4cbbc37e357775fc8200e16c6eb9b3f14d30069",
      "parents": [
        "cf82c798394cd443eed7d91f998b79a63f341e91"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 12 14:58:51 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 12 14:58:51 2011 +0200"
      },
      "message": "block: move queue run on unplug to kblockd\n\nThere are worries that we are now consuming a lot more stack in\nsome cases, since we potentially call into IO dispatch from\nschedule() or io_schedule(). We can reduce this problem by moving\nthe running of the queue to kblockd, like the old plugging scheme\ndid as well.\n\nThis may or may not be a good idea from a performance perspective,\ndepending on how many tasks have queue plugs running at the same\ntime. For even the slightly contended case, doing just a single\nqueue run from kblockd instead of multiple runs directly from the\nunpluggers will be faster.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "cf82c798394cd443eed7d91f998b79a63f341e91",
      "tree": "7ec33967528f4106dbbe32dad5e823c2c299b0a5",
      "parents": [
        "dc6d36c9710d1fed42d1bbe7d8e4f742abd844c6"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 12 10:30:53 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 12 10:30:53 2011 +0200"
      },
      "message": "block: kill queue_sync_plugs()\n\nThe original use for this dates back to when we had to track write\nrequests for serializing around barriers. That\u0027s not needed anymore,\nso kill it.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "dc6d36c9710d1fed42d1bbe7d8e4f742abd844c6",
      "tree": "88062deeeb7f8d6973056422f08d47f8c5a27c51",
      "parents": [
        "f75664570d8b75469cc468f23c2b27220984983b"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 12 10:28:28 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 12 10:28:28 2011 +0200"
      },
      "message": "block: readd plug trace event\n\nThis was removed with the queue plug state. But we can easily readd\nby checking if this is the first request going to this queue. It\u0027s\ngood information to have when tracing to see how effective the\nplugging is.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    }
  ],
  "next": "f75664570d8b75469cc468f23c2b27220984983b"
}
