)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "b710a480554f2be682bac3cb59b0e085ba3d644b",
      "tree": "bd1b9d5080bca2b35c861ddbc98d4116445bebfb",
      "parents": [
        "8182924bc5850281985d73c312876746acd390b5"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Mar 30 09:52:30 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 05 23:51:37 2011 +0200"
      },
      "message": "block: get rid of elv_insert() interface\n\nMerge it with __elv_add_request(), it\u0027s pretty pointless to\nhave a function with only two callers. The main interface\nis elv_add_request()/__elv_add_request().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5e84ea3a9c662dc2d7a48703a4468fad954a3b7f",
      "tree": "3fa0fb26a7c8a970213584104cc2498ef46d60a3",
      "parents": [
        "4345caba340f051e10847924fc078ae18ed6695c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Mar 21 10:14:27 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Mar 21 10:14:27 2011 +0100"
      },
      "message": "block: attempt to merge with existing requests on plug flush\n\nOne of the disadvantages of on-stack plugging is that we potentially\nlose out on merging since all pending IO isn\u0027t always visible to\neverybody. When we flush the on-stack plugs, right now we don\u0027t do\nany checks to see if potential merge candidates could be utilized.\n\nCorrect this by adding a new insert variant, ELEVATOR_INSERT_SORT_MERGE.\nIt works just ELEVATOR_INSERT_SORT, but first checks whether we can\nmerge with an existing request before doing the insertion (if we fail\nmerging).\n\nThis fixes a regression with multiple processes issuing IO that\ncan be merged.\n\nThanks to Shaohua Li \u003cshaohua.li@intel.com\u003e for testing and fixing\nan accounting bug.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4c63f5646e405b5010cc9499419060bf2e838f5b",
      "tree": "df91ba315032c8ec4aafeb3ab96fdfa7c6c656e1",
      "parents": [
        "cafb0bfca1a73efd6d8a4a6a6a716e6134b96c24",
        "69d60eb96ae8a73cf9b79cf28051caf973006011"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "message": "Merge branch \u0027for-2.6.39/stack-plug\u0027 into for-2.6.39/core\n\nConflicts:\n\tblock/blk-core.c\n\tblock/blk-flush.c\n\tdrivers/md/raid1.c\n\tdrivers/md/raid10.c\n\tdrivers/md/raid5.c\n\tfs/nilfs2/btnode.c\n\tfs/nilfs2/mdt.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "73c101011926c5832e6e141682180c4debe2cf45",
      "tree": "b8eeb521a7833cb198d6f39d5a931d820e2a663f",
      "parents": [
        "a488e74976bf0a9bccecdd094378394942dacef1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Mar 08 13:19:51 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:45:54 2011 +0100"
      },
      "message": "block: initial patch for on-stack per-task plugging\n\nThis patch adds support for creating a queuing context outside\nof the queue itself. This enables us to batch up pieces of IO\nbefore grabbing the block device queue lock and submitting them to\nthe IO scheduler.\n\nThe context is created on the stack of the process and assigned in\nthe task structure, so that we can auto-unplug it if we hit a schedule\nevent.\n\nThe current queue plugging happens implicitly if IO is submitted to\nan empty device, yet callers have to remember to unplug that IO when\nthey are going to wait for it. This is an ugly API and has caused bugs\nin the past. Additionally, it requires hacks in the vm (-\u003esync_page()\ncallback) to handle that logic. By switching to an explicit plugging\nscheme we make the API a lot nicer and can get rid of the -\u003esync_page()\nhack in the vm.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e83a46bbb1d4c03defd733a64b727632a40059ad",
      "tree": "c4bc4822b2d3af1bf38095f531adc0a2aac054a5",
      "parents": [
        "da527770007fce8e4541947d47918248286da875",
        "fd51469fb68b987032e46297e0a4fe9020063c20"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 04 19:09:02 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 04 19:09:02 2011 +0100"
      },
      "message": "Merge branch \u0027for-linus\u0027 of ../linux-2.6-block into block-for-2.6.39/core\n\nThis merge creates two set of conflicts.  One is simple context\nconflicts caused by removal of throtl_scheduled_delayed_work() in\nfor-linus and removal of throtl_shutdown_timer_wq() in\nfor-2.6.39/core.\n\nThe other is caused by commit 255bb490c8 (block: blk-flush shouldn\u0027t\ncall directly into q-\u003erequest_fn() __blk_run_queue()) in for-linus\ncrashing with FLUSH reimplementation in for-2.6.39/core.  The conflict\nisn\u0027t trivial but the resolution is straight-forward.\n\n* __blk_run_queue() calls in flush_end_io() and flush_data_end_io()\n  should be called with @force_kblockd set to %true.\n\n* elv_insert() in blk_kick_flush() should use\n  %ELEVATOR_INSERT_REQUEUE.\n\nBoth changes are to avoid invoking -\u003erequest_fn() directly from\nrequest completion path and closely match the changes in the commit\n255bb490c8.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1654e7411a1ad4999fe7890ef51d2a2bbb1fcf76",
      "tree": "c8071cf8cc1aef9e776697b72aaca5a22a47c3d7",
      "parents": [
        "291d24f6d9e7bbef81454fade8a44720665c7302"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 02 08:48:05 2011 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Mar 02 08:48:05 2011 -0500"
      },
      "message": "block: add @force_kblockd to __blk_run_queue()\n\n__blk_run_queue() automatically either calls q-\u003erequest_fn() directly\nor schedules kblockd depending on whether the function is recursed.\nblk-flush implementation needs to be able to explicitly choose\nkblockd.  Add @force_kblockd.\n\nAll the current users are converted to specify %false for the\nparameter and this patch doesn\u0027t introduce any behavior change.\n\nstable: This is prerequisite for fixing ide oops caused by the new\n        blk-flush implementation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jan Beulich \u003cJBeulich@novell.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c186794dbb466b45cf40f942f2d09d6d5b4b0e42",
      "tree": "07ccd819bb6cced2c19053d2ed97ebaac88f824e",
      "parents": [
        "9d5a4e946ce5352f19400b6370f4cd8e72806278"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Feb 11 11:08:00 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Feb 11 11:08:00 2011 +0100"
      },
      "message": "block: share request flush fields with  elevator_private\n\nFlush requests are never put on the IO scheduler.  Convert request\nstructure\u0027s elevator_private* into an array and have the flush fields\nshare a union with it.\n\nReclaim the space lost in \u0027struct request\u0027 by moving \u0027completion_data\u0027\nback in the union with \u0027rb_node\u0027.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "ae1b1539622fb46e51b4d13b3f9e5f4c713f86ae",
      "tree": "c5cb540141003a3ec7ebf0b8c6e01653ab6aaef5",
      "parents": [
        "143a87f4c9c629067afea5b6703d66ea88c82f8e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 25 12:43:54 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jan 25 12:43:54 2011 +0100"
      },
      "message": "block: reimplement FLUSH/FUA to support merge\n\nThe current FLUSH/FUA support has evolved from the implementation\nwhich had to perform queue draining.  As such, sequencing is done\nqueue-wide one flush request after another.  However, with the\ndraining requirement gone, there\u0027s no reason to keep the queue-wide\nsequential approach.\n\nThis patch reimplements FLUSH/FUA support such that each FLUSH/FUA\nrequest is sequenced individually.  The actual FLUSH execution is\ndouble buffered and whenever a request wants to execute one for either\nPRE or POSTFLUSH, it queues on the pending queue.  Once certain\nconditions are met, a flush request is issued and on its completion\nall pending requests proceed to the next sequence.\n\nThis allows arbitrary merging of different type of flushes.  How they\nare merged can be primarily controlled and tuned by adjusting the\nabove said \u0027conditions\u0027 used to determine when to issue the next\nflush.\n\nThis is inspired by Darrick\u0027s patches to merge multiple zero-data\nflushes which helps workloads with highly concurrent fsync requests.\n\n* As flush requests are never put on the IO scheduler, request fields\n  used for flush share space with rq-\u003erb_node.  rq-\u003ecompletion_data is\n  moved out of the union.  This increases the request size by one\n  pointer.\n\n  As rq-\u003eelevator_private* are used only by the iosched too, it is\n  possible to reduce the request size further.  However, to do that,\n  we need to modify request allocation path such that iosched data is\n  not allocated for flush requests.\n\n* FLUSH/FUA processing happens on insertion now instead of dispatch.\n\n- Comments updated as per Vivek and Mike.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: \"Darrick J. Wong\" \u003cdjwong@us.ibm.com\u003e\nCc: Shaohua Li \u003cshli@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "02e031cbc843b010e72fcc05c76113c688b2860f",
      "tree": "9f68559ec3acc39bcc4ce2ff87043a094eaa2e8f",
      "parents": [
        "00e375e7e962f938f6b3c93e4cd097a5e26cc788"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Nov 10 14:54:09 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Nov 10 14:54:09 2010 +0100"
      },
      "message": "block: remove REQ_HARDBARRIER\n\nREQ_HARDBARRIER is dead now, so remove the leftovers.  What\u0027s left\nat this point is:\n\n - various checks inside the block layer.\n - sanity checks in bio based drivers.\n - now unused bio_empty_barrier helper.\n - Xen blockfront use of BLKIF_OP_WRITE_BARRIER - it\u0027s dead for a while,\n   but Xen really needs to sort out it\u0027s barrier situaton.\n - setting of ordered tags in uas - dead code copied from old scsi\n   drivers.\n - scsi different retry for barriers - it\u0027s dead and should have been\n   removed when flushes were converted to FS requests.\n - blktrace handling of barriers - removed.  Someone who knows blktrace\n   better should add support for REQ_FLUSH and REQ_FUA, though.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "fa251f89903d73989e2f63e13d0eaed1e07ce0da",
      "tree": "3f7fe779941e3b6d67754dd7c44a32f48ea47c74",
      "parents": [
        "dd3932eddf428571762596e17b65f5dc92ca361b",
        "cd07202cc8262e1669edff0d97715f3dd9260917"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "message": "Merge branch \u0027v2.6.36-rc8\u0027 into for-2.6.37/barrier\n\nConflicts:\n\tblock/blk-core.c\n\tdrivers/block/loop.c\n\tmm/swapfile.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "430c62fb2948d964cf8dc7f3e2f69623c04ef62f",
      "tree": "79923717e1694745def152baec1a4cc09a5d072c",
      "parents": [
        "cb655d0f3d57c23db51b981648e452988c0223f9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Oct 07 09:35:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Oct 07 09:35:16 2010 +0200"
      },
      "message": "elevator: fix oops on early call to elevator_change()\n\n2.6.36 introduces an API for drivers to switch the IO scheduler\ninstead of manually calling the elevator exit and init functions.\nThis API was added since q-\u003eelevator must be cleared in between\nthose two calls. And since we already have this functionality\ndirectly from use by the sysfs interface to switch schedulers\nonline, it was prudent to reuse it internally too.\n\nBut this API needs the queue to be in a fully initialized state\nbefore it is called, or it will attempt to unregister elevator\nkobjects before they have been added. This results in an oops\nlike this:\n\nBUG: unable to handle kernel NULL pointer dereference at 0000000000000051\nIP: [\u003cffffffff8116f15e\u003e] sysfs_create_dir+0x2e/0xc0\nPGD 47ddfc067 PUD 47c6a1067 PMD 0\nOops: 0000 [#1] PREEMPT SMP\nlast sysfs file: /sys/devices/pci0000:00/0000:00:02.0/0000:04:00.1/irq\nCPU 2\nModules linked in: t(+) loop hid_apple usbhid ahci ehci_hcd uhci_hcd libahci usbcore nls_base igb\n\nPid: 7319, comm: modprobe Not tainted 2.6.36-rc6+ #132 QSSC-S4R/QSSC-S4R\nRIP: 0010:[\u003cffffffff8116f15e\u003e]  [\u003cffffffff8116f15e\u003e] sysfs_create_dir+0x2e/0xc0\nRSP: 0018:ffff88027da25d08  EFLAGS: 00010246\nRAX: ffff88047c68c528 RBX: 00000000fffffffe RCX: 0000000000000000\nRDX: 000000000000002f RSI: 000000000000002f RDI: ffff88047e196c88\nRBP: ffff88027da25d38 R08: 0000000000000000 R09: d84156c5635688c0\nR10: d84156c5635688c0 R11: 0000000000000000 R12: ffff88047e196c88\nR13: 0000000000000000 R14: 0000000000000000 R15: ffff88047c68c528\nFS:  00007fcb0b26f6e0(0000) GS:ffff880287400000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\nCR2: 0000000000000051 CR3: 000000047e76e000 CR4: 00000000000006e0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess modprobe (pid: 7319, threadinfo ffff88027da24000, task ffff88027d377090)\nStack:\n ffff88027da25d58 ffff88047c68c528 00000000fffffffe ffff88047e196c88\n\u003c0\u003e ffff88047c68c528 ffff88047e05bd90 ffff88027da25d78 ffffffff8123fb77\n\u003c0\u003e ffff88047e05bd90 0000000000000000 ffff88047e196c88 ffff88047c68c528\nCall Trace:\n [\u003cffffffff8123fb77\u003e] kobject_add_internal+0xe7/0x1f0\n [\u003cffffffff8123fd98\u003e] kobject_add_varg+0x38/0x60\n [\u003cffffffff8123feb9\u003e] kobject_add+0x69/0x90\n [\u003cffffffff8116efe0\u003e] ? sysfs_remove_dir+0x20/0xa0\n [\u003cffffffff8103d48d\u003e] ? sub_preempt_count+0x9d/0xe0\n [\u003cffffffff8143de20\u003e] ? _raw_spin_unlock+0x30/0x50\n [\u003cffffffff8116efe0\u003e] ? sysfs_remove_dir+0x20/0xa0\n [\u003cffffffff8116eff4\u003e] ? sysfs_remove_dir+0x34/0xa0\n [\u003cffffffff81224204\u003e] elv_register_queue+0x34/0xa0\n [\u003cffffffff81224aad\u003e] elevator_change+0xfd/0x250\n [\u003cffffffffa007e000\u003e] ? t_init+0x0/0x361 [t]\n [\u003cffffffffa007e000\u003e] ? t_init+0x0/0x361 [t]\n [\u003cffffffffa007e0a8\u003e] t_init+0xa8/0x361 [t]\n [\u003cffffffff810001de\u003e] do_one_initcall+0x3e/0x170\n [\u003cffffffff8108c3fd\u003e] sys_init_module+0xbd/0x220\n [\u003cffffffff81002f2b\u003e] system_call_fastpath+0x16/0x1b\nCode: e5 41 56 41 55 41 54 49 89 fc 53 48 83 ec 10 48 85 ff 74 52 48 8b 47 18 49 c7 c5 00 46 61 81 48 85 c0 74 04 4c 8b 68 30 45 31 f6 \u003c41\u003e 80 7d 51 00 74 0e 49 8b 44 24 28 4c 89 e7 ff 50 20 49 89 c6\nRIP  [\u003cffffffff8116f15e\u003e] sysfs_create_dir+0x2e/0xc0\n RSP \u003cffff88027da25d08\u003e\nCR2: 0000000000000051\n---[ end trace a6541d3bf07945df ]---\n\nFix this by adding a registered bit to the elevator queue, which is\nset when the sysfs kobjects have been registered.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "28e7d1845216538303bb95d679d8fd4de50e2f1a",
      "tree": "0ef56dc0d7c894657c4ae71a3e8da6e1164fb933",
      "parents": [
        "dd831006d5be7f74c3fe7aef82380c51c3637960"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: drop barrier ordering by queue draining\n\nFilesystems will take all the responsibilities for ordering requests\naround commit writes and will only indicate how the commit writes\nthemselves should be handled by block layers.  This patch drops\nbarrier ordering by queue draining from block layer.  Ordering by\ndraining implementation was somewhat invasive to request handling.\nList of notable changes follow.\n\n* Each queue has 1 bit color which is flipped on each barrier issue.\n  This is used to track whether a given request is issued before the\n  current barrier or not.  REQ_ORDERED_COLOR flag and coloring\n  implementation in __elv_add_request() are removed.\n\n* Requests which shouldn\u0027t be processed yet for draining were stalled\n  by returning -EAGAIN from blk_do_ordered() according to the test\n  result between blk_ordered_req_seq() and blk_blk_ordered_cur_seq().\n  This logic is removed.\n\n* Draining completion logic in elv_completed_request() removed.\n\n* All barrier sequence requests were queued to request queue and then\n  trckled to lower layer according to progress and thus maintaining\n  request orders during requeue was necessary.  This is replaced by\n  queueing the next request in the barrier sequence only after the\n  current one is complete from blk_ordered_complete_seq(), which\n  removes the need for multiple proxy requests in struct request_queue\n  and the request sorting logic in the ELEVATOR_INSERT_REQUEUE path of\n  elv_insert().\n\n* As barriers no longer have ordering constraints, there\u0027s no need to\n  dump the whole elevator onto the dispatch queue on each barrier.\n  Insert barriers at the front instead.\n\n* If other barrier requests come to the front of the dispatch queue\n  while one is already in progress, they are stored in\n  q-\u003epending_barriers and restored to dispatch queue one-by-one after\n  each barrier completion from blk_ordered_complete_seq().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5dd531a03ad721b41911ddb32e6e0481404e7aaf",
      "tree": "3d07d0aa902eb61a575bbc7cc2a57c03431e2b01",
      "parents": [
        "220eb7fd984bfc7e6b4005fdf32efe9cd8af7cf2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 13:52:19 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 13:52:19 2010 +0200"
      },
      "message": "block: add function call to switch the IO scheduler from a driver\n\nCurrently drivers must do an elevator_exit() + elevator_init()\nto switch IO schedulers. There are a few problems with this:\n\n- Since commit 1abec4fdbb142e3ccb6ce99832fae42129134a96,\n  elevator_init() requires a zeroed out q-\u003eelevator\n  pointer. The two existing in-kernel users don\u0027t do that.\n\n- It will only work at initialization time, since using the\n  above two-staged construct does not properly quisce the queue.\n\nSo add elevator_change() which takes care of this, and convert\nthe elv_iosched_store() sysfs interface to use this helper as well.\n\nReported-by: Peter Oberparleiter \u003coberpar@linux.vnet.ibm.com\u003e\nReported-by: Kevin Vigor \u003ckevin@vigor.nu\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8d57a98ccd0b4489003473979da8f5a1363ba7a3",
      "tree": "2982997ce66bb6a92c020b7189966c3097095fd7",
      "parents": [
        "93caf8e69eac763f6a20cf253ace8e7fc1ab7953"
      ],
      "author": {
        "name": "Adrian Hunter",
        "email": "adrian.hunter@nokia.com",
        "time": "Wed Aug 11 14:17:49 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 08:43:30 2010 -0700"
      },
      "message": "block: add secure discard\n\nSecure discard is the same as discard except that all copies of the\ndiscarded sectors (perhaps created by garbage collection) must also be\nerased.\n\nSigned-off-by: Adrian Hunter \u003cadrian.hunter@nokia.com\u003e\nAcked-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Kyungmin Park \u003ckmpark@infradead.org\u003e\nCc: Madhusudhan Chikkature \u003cmadhu.cr@ti.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Ben Gardiner \u003cbengardiner@nanometrics.ca\u003e\nCc: \u003clinux-mmc@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b6d91daee5cac6402186ff224c3af39d79f4a0e",
      "tree": "b1518cf0b6c301178e0a320f80610cd5b3aa7625",
      "parents": [
        "33659ebbae262228eef4e0fe990f393d1f0ed941"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "message": "block: unify flags for struct bio and struct request\n\nRemove the current bio flags and reuse the request flags for the bio, too.\nThis allows to more easily trace the type of I/O from the filesystem\ndown to the block driver.  There were two flags in the bio that were\nmissing in the requests:  BIO_RW_UNPLUG and BIO_RW_AHEAD.  Also I\u0027ve\nrenamed two request flags that had a superflous RW in them.\n\nNote that the flags are in bio.h despite having the REQ_ name - as\nblkdev.h includes bio.h that is the only way to go for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "33659ebbae262228eef4e0fe990f393d1f0ed941",
      "tree": "fcb537f09359c8dad3a6f6e16dc4319562dc42cc",
      "parents": [
        "7e005f79791dcd58436c88ded4a7f5aed1b82147"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:17:56 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:17:56 2010 +0200"
      },
      "message": "block: remove wrappers for request type/flags\n\nRemove all the trivial wrappers for the cmd_type and cmd_flags fields in\nstruct requests.  This allows much easier grepping for different request\ntypes instead of unwinding through macros.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "1abec4fdbb142e3ccb6ce99832fae42129134a96",
      "tree": "5adffee38a35b3639282da545846171715e9d689",
      "parents": [
        "c86d1b8ae622e1ea5d20e98bd72fbd7d9dd69016"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue May 25 13:15:15 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jun 04 13:47:06 2010 +0200"
      },
      "message": "block: make blk_init_free_list and elevator_init idempotent\n\nblk_init_allocated_queue_node may fail and the caller _could_ retry.\nAccommodate the unlikely event that blk_init_allocated_queue_node is\ncalled on an already initialized (possibly partially) request_queue.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e36f724b4ae70e443a7d152929b60059cbfa1a26",
      "tree": "9eed1cf285d4693c1e239315f629a1a7a81df4e9",
      "parents": [
        "80b15c7389caa81a3860f9fc2ee47ec0ea572a63"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Mon May 24 09:07:32 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 24 09:07:32 2010 +0200"
      },
      "message": "block: Adjust elv_iosched_show to return \"none\" for bio-based DM\n\nBio-based DM doesn\u0027t use an elevator (queue is !blk_queue_stackable()).\n\nLonger-term DM will not allocate an elevator for bio-based DM.  But even\nthen there will be small potential for an elevator to be allocated for\na request-based DM table only to have a bio-based table be loaded in the\nend.\n\nDisplaying \"none\" for bio-based DM will help avoid user confusion.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "01effb0dc1451fad55925873ffbfb88fa4eadce0",
      "tree": "40fc70111217d23bbb5453fe08214d28ed4c7713",
      "parents": [
        "0f3942a39ed768c967cb71ea0e9be7fc94112713"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue May 11 08:57:42 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 11 08:57:42 2010 +0200"
      },
      "message": "block: allow initialization of previously allocated request_queue\n\nblk_init_queue() allocates the request_queue structure and then\ninitializes it as needed (request_fn, elevator, etc).\n\nSplit initialization out to blk_init_allocated_queue_node.\nIntroduce blk_init_allocated_queue wrapper function to model existing\nblk_init_queue and blk_init_queue_node interfaces.\n\nExport elv_register_queue to allow a newly added elevator to be\nregistered with sysfs.  Export elv_unregister_queue for symmetry.\n\nThese changes allow DM to initialize a device\u0027s request_queue with more\nprecision.  In particular, DM no longer unconditionally initializes a\nfull request_queue (elevator et al).  It only does so for a\nrequest-based DM device.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "812d402648f4fc1ab1091b2172a46fc1b367c724",
      "tree": "9dc52d5bfdbc170559169a0157ed3295d551e9cf",
      "parents": [
        "84c124da9ff50bd71fab9c939ee5b7cd8bef2bd9"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Thu Apr 08 21:14:23 2010 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 09 08:36:07 2010 +0200"
      },
      "message": "blkio: Add io_merged stat\n\nThis includes both the number of bios merged into requests belonging to this\ncgroup as well as the number of requests merged together.\nIn the past, we\u0027ve observed different merging behavior across upstream kernels,\nsome by design some actual bugs. This stat helps a lot in debugging such\nproblems when applications report decreased throughput with a new kernel\nversion.\n\nThis needed adding an extra elevator function to capture bios being merged as I\ndid not want to pollute elevator code with blkiocg knowledge and hence needed\nthe accounting invocation to come from CFQ.\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a506aedc51093544ff0f9610af6066d18cb6abbe",
      "tree": "3a23d5987c02a94eb46746ae29d50d2d9e38a150",
      "parents": [
        "b2b163dd47024e445410b72d0c5df6d819c14dfd"
      ],
      "author": {
        "name": "wzt.wzt@gmail.com",
        "email": "wzt.wzt@gmail.com",
        "time": "Fri Apr 02 08:41:14 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 02 08:41:14 2010 +0200"
      },
      "message": "Block: Fix block/elevator.c elevator_get() off-by-one error\n\nelevator_get() not check the name length, if the name length \u003e sizeof(elv),\nelv will miss the \u0027\\0\u0027. And elv buffer will be replace \"-iosched\" as something\nlike aaaaaaaaa, then call request_module() can load an not trust module.\n\nSigned-off-by: Zhitong Wang \u003czhitong.wangzt@alibaba-inc.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "52cf25d0ab7f78eeecc59ac652ed5090f69b619e",
      "tree": "031d1ffb3890bd69c0260c864c512e0be62ac05c",
      "parents": [
        "6c1733aca0b48db4d0e660d54976a1cca25b5eaf"
      ],
      "author": {
        "name": "Emese Revfy",
        "email": "re.emese@gmail.com",
        "time": "Tue Jan 19 02:58:23 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Sun Mar 07 17:04:49 2010 -0800"
      },
      "message": "Driver core: Constify struct sysfs_ops in struct kobj_type\n\nConstify struct sysfs_ops.\n\nThis is part of the ops structure constification\neffort started by Arjan van de Ven et al.\n\nBenefits of this constification:\n\n * prevents modification of data that is shared\n   (referenced) by many other structure instances\n   at runtime\n\n * detects/prevents accidental (but not intentional)\n   modification attempts on archs that enforce\n   read-only kernel data at runtime\n\n * potentially better optimized code as the compiler\n   can assume that the const data cannot be changed\n\n * the compiler/linker move const data into .rodata\n   and therefore exclude them from false sharing\n\nSigned-off-by: Emese Revfy \u003cre.emese@gmail.com\u003e\nAcked-by: David Teigland \u003cteigland@redhat.com\u003e\nAcked-by: Matt Domsch \u003cMatt_Domsch@dell.com\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nAcked-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nAcked-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "488991e28e55b4fbca8067edf0259f69d1a6f92c",
      "tree": "fea5e0aca42e338137cc050e66aaeb5f539e3d21",
      "parents": [
        "47483e25205f1f8d79784f0f7c733941bc080ec0"
      ],
      "author": {
        "name": "Alan D. Brunelle",
        "email": "Alan.Brunelle@hp.com",
        "time": "Fri Jan 29 09:04:08 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 29 09:04:08 2010 +0100"
      },
      "message": "block: Added in stricter no merge semantics for block I/O\n\nUpdated \u0027nomerges\u0027 tunable to accept a value of \u00272\u0027 - indicating that _no_\nmerges at all are to be attempted (not even the simple one-hit cache).\n\nThe following table illustrates the additional benefit - 5 minute runs of\na random I/O load were applied to a dozen devices on a 16-way x86_64 system.\n\nnomerges        Throughput      %System         Improvement (tput / %sys)\n--------        ------------    -----------     -------------------------\n0               12.45 MB/sec    0.669365609\n1               12.50 MB/sec    0.641519199     0.40% / 2.71%\n2               12.52 MB/sec    0.639849750     0.56% / 2.96%\n\nSigned-off-by: Alan D. Brunelle \u003calan.brunelle@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c30f33437c3f85ec48353a1ef811e148217a2aaf",
      "tree": "d5a0ca1e8d091a30fece2e9aeed285225c026049",
      "parents": [
        "132cc538cd90f60a0b5df6a512dfd4bc5fe2039a",
        "2ec24ff1d1875defa742c76c9c7d74dca06b7e1f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 13 12:29:45 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 13 12:29:45 2009 +0200"
      },
      "message": "Merge branch \u0027for-linus\u0027 into for-2.6.33\n"
    },
    {
      "commit": "8c279598585e4992a41016bb973993ed15888cb3",
      "tree": "47da450c888cf5b63790e37e4b7640acbc3570a2",
      "parents": [
        "355b659c87432a4e76160640625c47fcf9174e8d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Fri Oct 09 08:48:08 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Oct 09 08:48:08 2009 +0200"
      },
      "message": "elv_iosched_store(): fix strstrip() misuse\n\nelv_iosched_store() ignore the return value of strstrip().  It makes small\ninconsistent behavior.\n\nThis patch fixes it.\n\n \u003cbefore\u003e\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n # cd /sys/block/{blockdev}/queue\n\n case1:\n # echo \"anticipatory\" \u003e scheduler\n # cat scheduler\n noop [anticipatory] deadline cfq\n\n case2:\n # echo \"anticipatory \" \u003e scheduler\n # cat scheduler\n noop [anticipatory] deadline cfq\n\n case3:\n # echo \" anticipatory\" \u003e scheduler\n bash: echo: write error: Invalid argument\n\n \u003cafter\u003e\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n # cd /sys/block/{blockdev}/queue\n\n case1:\n # echo \"anticipatory\" \u003e scheduler\n # cat scheduler\n noop [anticipatory] deadline cfq\n\n case2:\n # echo \"anticipatory \" \u003e scheduler\n # cat scheduler\n noop [anticipatory] deadline cfq\n\n case3:\n # echo \" anticipatory\" \u003e scheduler\n noop [anticipatory] deadline cfq\n\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "492af6350a5ccf087e4964104a276ed358811458",
      "tree": "81d6398597758f5b712e1f47a3f24f0da66127ba",
      "parents": [
        "6a0afdf58d40200abd0c717261d1bc4c49195c2f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sat Oct 03 09:37:51 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sat Oct 03 09:37:51 2009 +0200"
      },
      "message": "block: remove the anticipatory IO scheduler\n\nAS is mostly a subset of CFQ, so there\u0027s little point in still\nproviding this separate IO scheduler. Hopefully at some point we\ncan get down to one single IO scheduler again, at least this brings\nus closer by having only one intelligent IO scheduler.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1f98a13f623e0ef666690a18c1250335fc6d7ef1",
      "tree": "15ca2dddffaa18a0d1844957f4f8cc707cbb8117",
      "parents": [
        "e7e503aedb1f4d165081cb8d47a58c38f80f0cb4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:32:04 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:31 2009 +0200"
      },
      "message": "bio: first step in sanitizing the bio-\u003ebi_rw flag testing\n\nGet rid of any functions that test for these bits and make callers\nuse bio_rw_flagged() directly. Then it is at least directly apparent\nwhat variable and flag they check.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "da6c5c720c52cc717124f8f0830b710ea6a092fd",
      "tree": "f54c880aec9289895721e707d4b22e456b277127",
      "parents": [
        "80a761fd33cf812f771e212139157bf8f58d4b3f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 11 14:26:40 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:30 2009 +0200"
      },
      "message": "scsi,block: update SCSI to handle mixed merge failures\n\nUpdate scsi_io_completion() such that it only fails requests till the\nnext error boundary and retry the leftover.  This enables block layer\nto merge requests with different failfast settings and still behave\ncorrectly on errors.  Allow merge of requests of different failfast\nsettings.\n\nAs SCSI is currently the only subsystem which follows failfast status,\nthere\u0027s no need to worry about other block drivers for now.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Niel Lambrechts \u003cniel.lambrechts@gmail.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0a09f4319c6d88c732ed46735f8584bbb95cac65",
      "tree": "4bb79b77f020c340c6873d760b9de444fbbd5ffe",
      "parents": [
        "c9d4bc289cd1cd43c3cff97b73efe2b0b5098a92"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 16 15:26:55 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 17 14:50:43 2009 +0900"
      },
      "message": "block: fix failfast merge testing in elv_rq_merge_ok()\n\nCommit ab0fd1debe730ec9998678a0c53caefbd121ed10 tries to prevent merge\nof requests with different failfast settings.  In elv_rq_merge_ok(),\nit compares new bio\u0027s failfast flags against the merge target\nrequest\u0027s.  However, the flag testing accessors for bio and blk don\u0027t\nreturn boolean but the tested bit value directly and FAILFAST on bio\nand blk don\u0027t match, so directly comparing them with \u003d\u003d results in\nfalse negative unnecessary preventing merge of readahead requests.\n\nThis patch convert the results to boolean by negating them before\ncomparison.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "ab0fd1debe730ec9998678a0c53caefbd121ed10",
      "tree": "c44de6ef7d876a32c4f733fdc26d40cdcbf7d374",
      "parents": [
        "b59e64d0ddb756af57ea032383bfd393a286a8e8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 03 12:56:18 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.(none)",
        "time": "Fri Jul 03 21:06:45 2009 +0200"
      },
      "message": "block: don\u0027t merge requests of different failfast settings\n\nBlock layer used to merge requests and bios with different failfast\nsettings.  This caused regular IOs to fail prematurely when they were\nmerged into failfast requests for readahead.\n\nNiel Lambrechts could trigger the problem semi-reliably on ext4 when\nresuming from STR.  ext4 uses readahead when reading inodes and\ncombined with the deterministic extra SATA PHY exception cycle during\nresume on the specific configuration, non-readahead inode read would\nfail causing ext4 errors.  Please read the following thread for\ndetails.\n\n  http://lkml.org/lkml/2009/5/23/21\n\nThis patch makes block layer reject merging if the failfast settings\ndon\u0027t match.  This is correct but likely to lower IO performance by\npreventing regular IOs from mingling into surrounding readahead\nrequests.  Changes to allow such mixed merges and handle errors\ncorrectly will be added later.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Niel Lambrechts \u003cniel.lambrechts@gmail.com\u003e\nCc: Theodore Tso \u003ctytso@mit.edu\u003e\nSigned-off-by: Jens Axboe \u003caxboe@carl.(none)\u003e\n"
    },
    {
      "commit": "c9059598ea8981d02356eead3188bf7fa4d717b8",
      "tree": "03e73b20a30e988da7c6a3e0ad93b2dc5843274d",
      "parents": [
        "0a33f80a8373eca7f4bea3961d1346c3815fa5ed",
        "b0fd271d5fba0b2d00888363f3869e3f9b26caa9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 10:52:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 11:10:35 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block: (153 commits)\n  block: add request clone interface (v2)\n  floppy: fix hibernation\n  ramdisk: remove long-deprecated \"ramdisk\u003d\" boot-time parameter\n  fs/bio.c: add missing __user annotation\n  block: prevent possible io_context-\u003erefcount overflow\n  Add serial number support for virtio_blk, V4a\n  block: Add missing bounce_pfn stacking and fix comments\n  Revert \"block: Fix bounce limit setting in DM\"\n  cciss: decode unit attention in SCSI error handling code\n  cciss: Remove no longer needed sendcmd reject processing code\n  cciss: change SCSI error handling routines to work with interrupts enabled.\n  cciss: separate error processing and command retrying code in sendcmd_withirq_core()\n  cciss: factor out fix target status processing code from sendcmd functions\n  cciss: simplify interface of sendcmd() and sendcmd_withirq()\n  cciss: factor out core of sendcmd_withirq() for use by SCSI error handling code\n  cciss: Use schedule_timeout_uninterruptible in SCSI error handling code\n  block: needs to set the residual length of a bidi request\n  Revert \"block: implement blkdev_readpages\"\n  block: Fix bounce limit setting in DM\n  Removed reference to non-existing file Documentation/PCI/PCI-DMA-mapping.txt\n  ...\n\nManually fix conflicts with tracing updates in:\n\tblock/blk-sysfs.c\n\tdrivers/ide/ide-atapi.c\n\tdrivers/ide/ide-cd.c\n\tdrivers/ide/ide-floppy.c\n\tdrivers/ide/ide-tape.c\n\tinclude/trace/events/block.h\n\tkernel/trace/blktrace.c\n"
    },
    {
      "commit": "55782138e47d9baf2f7d3a7af9e7cf42adf72c56",
      "tree": "c7ccabae20e27bbeb08b69a358e8b86c98d1d9f3",
      "parents": [
        "f57a8a1911342265e7acdc190333c4e9235a6632"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Jun 09 13:43:05 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 09 12:34:23 2009 -0400"
      },
      "message": "tracing/events: convert block trace points to TRACE_EVENT()\n\nTRACE_EVENT is a more generic way to define tracepoints. Doing so adds\nthese new capabilities to this tracepoint:\n\n  - zero-copy and per-cpu splice() tracing\n  - binary tracing without printf overhead\n  - structured logging records exposed under /debug/tracing/events\n  - trace events embedded in function tracer output and other plugins\n  - user-defined, per tracepoint filter expressions\n  ...\n\nCons:\n\n  - no dev_t info for the output of plug, unplug_timer and unplug_io events.\n    no dev_t info for getrq and sleeprq events if bio \u003d\u003d NULL.\n    no dev_t info for rq_abort,...,rq_requeue events if rq-\u003erq_disk \u003d\u003d NULL.\n\n    This is mainly because we can\u0027t get the deivce from a request queue.\n    But this may change in the future.\n\n  - A packet command is converted to a string in TP_assign, not TP_print.\n    While blktrace do the convertion just before output.\n\n    Since pc requests should be rather rare, this is not a big issue.\n\n  - In blktrace, an event can have 2 different print formats, but a TRACE_EVENT\n    has a unique format, which means we have some unused data in a trace entry.\n\n    The overhead is minimized by using __dynamic_array() instead of __array().\n\nI\u0027ve benchmarked the ioctl blktrace vs the splice based TRACE_EVENT tracing:\n\n      dd                   dd + ioctl blktrace       dd + TRACE_EVENT (splice)\n1     7.36s, 42.7 MB/s     7.50s, 42.0 MB/s          7.41s, 42.5 MB/s\n2     7.43s, 42.3 MB/s     7.48s, 42.1 MB/s          7.43s, 42.4 MB/s\n3     7.38s, 42.6 MB/s     7.45s, 42.2 MB/s          7.41s, 42.5 MB/s\n\nSo the overhead of tracing is very small, and no regression when using\nthose trace events vs blktrace.\n\nAnd the binary output of TRACE_EVENT is much smaller than blktrace:\n\n # ls -l -h\n -rw-r--r-- 1 root root 8.8M 06-09 13:24 sda.blktrace.0\n -rw-r--r-- 1 root root 195K 06-09 13:24 sda.blktrace.1\n -rw-r--r-- 1 root root 2.7M 06-09 13:25 trace_splice.out\n\nFollowing are some comparisons between TRACE_EVENT and blktrace:\n\nplug:\n  kjournald-480   [000]   303.084981: block_plug: [kjournald]\n  kjournald-480   [000]   303.084981:   8,0    P   N [kjournald]\n\nunplug_io:\n  kblockd/0-118   [000]   300.052973: block_unplug_io: [kblockd/0] 1\n  kblockd/0-118   [000]   300.052974:   8,0    U   N [kblockd/0] 1\n\nremap:\n  kjournald-480   [000]   303.085042: block_remap: 8,0 W 102736992 + 8 \u003c- (8,8) 33384\n  kjournald-480   [000]   303.085043:   8,0    A   W 102736992 + 8 \u003c- (8,8) 33384\n\nbio_backmerge:\n  kjournald-480   [000]   303.085086: block_bio_backmerge: 8,0 W 102737032 + 8 [kjournald]\n  kjournald-480   [000]   303.085086:   8,0    M   W 102737032 + 8 [kjournald]\n\ngetrq:\n  kjournald-480   [000]   303.084974: block_getrq: 8,0 W 102736984 + 8 [kjournald]\n  kjournald-480   [000]   303.084975:   8,0    G   W 102736984 + 8 [kjournald]\n\n  bash-2066  [001]  1072.953770:   8,0    G   N [bash]\n  bash-2066  [001]  1072.953773: block_getrq: 0,0 N 0 + 0 [bash]\n\nrq_complete:\n  konsole-2065  [001]   300.053184: block_rq_complete: 8,0 W () 103669040 + 16 [0]\n  konsole-2065  [001]   300.053191:   8,0    C   W 103669040 + 16 [0]\n\n  ksoftirqd/1-7   [001]  1072.953811:   8,0    C   N (5a 00 08 00 00 00 00 00 24 00) [0]\n  ksoftirqd/1-7   [001]  1072.953813: block_rq_complete: 0,0 N (5a 00 08 00 00 00 00 00 24 00) 0 + 0 [0]\n\nrq_insert:\n  kjournald-480   [000]   303.084985: block_rq_insert: 8,0 W 0 () 102736984 + 8 [kjournald]\n  kjournald-480   [000]   303.084986:   8,0    I   W 102736984 + 8 [kjournald]\n\nChangelog from v2 -\u003e v3:\n\n- use the newly introduced __dynamic_array().\n\nChangelog from v1 -\u003e v2:\n\n- use __string() instead of __array() to minimize the memory required\n  to store hex dump of rq-\u003ecmd().\n\n- support large pc requests.\n\n- add missing blk_fill_rwbs_rq() in block_rq_requeue TRACE_EVENT.\n\n- some cleanups.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A2DF669.5070905@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "53c663ce0f39ba8e8ef652e400b317bc60ac7f19",
      "tree": "5d72723bbc35e4b35734fe770b5022192c4f92c9",
      "parents": [
        "c143dc903d7c0b15f5052e00b2c7de33a8b4299c"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Tue Jun 02 08:44:01 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 02 08:44:01 2009 +0200"
      },
      "message": "block: fix a possible oops on elv_abort_queue()\n\nI found one more mis-conversion to the \u0027request is always dequeued\nwhen completing\u0027 model in elv_abort_queue() during code inspection.\nAlthough I haven\u0027t hit any problem caused by this mis-conversion yet\nand just done compile/boot test, please apply if you have no problem.\n\nRequest must be dequeued when it completes.\nHowever, elv_abort_queue() completes requests without dequeueing.\nThis will cause oops in the __blk_end_request_all().\nThis patch fixes the oops.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cd43e26f071524647e660706b784ebcbefbd2e44",
      "tree": "11625a25ba8a7c5cd4fe41b54d53506a7982433b",
      "parents": [
        "025146e13b63483add912706c101fb0fb6f015cc"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:52 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:55 2009 +0200"
      },
      "message": "block: Expose stacked device queues in sysfs\n\nCurrently stacking devices do not have a queue directory in sysfs.\nHowever, many of the I/O characteristics like sector size, maximum\nrequest size, etc. are queue properties.\n\nThis patch enables the queue directory for MD/DM devices.  The elevator\ncode has been modified to deal with queues that do not have an I/O\nscheduler.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0a7ae2ff0d29bb3b327edff4c8ab67b3834fa811",
      "tree": "88309ac99a39e15b9b23525a00a15b1564957b32",
      "parents": [
        "ac36552a52a6ec8563ac0a109e2a0935673f4abb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 20 08:54:31 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 20 08:54:31 2009 +0200"
      },
      "message": "block: change the tag sync vs async restriction logic\n\nMake them fully share the tag space, but disallow async requests using\nthe last any two slots.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "83096ebf1263b2c1ee5e653ba37d993d02e3eb7b",
      "tree": "2226b71a616ec1cb2d37511c6a09ba9507a1cd69",
      "parents": [
        "5b93629b4509c03ffa87a9316412fedf6f58cb37"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:39 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:54 2009 +0200"
      },
      "message": "block: convert to pos and nr_sectors accessors\n\nWith recent cleanups, there is no place where low level driver\ndirectly manipulates request fields.  This means that the \u0027hard\u0027\nrequest fields always equal the !hard fields.  Convert all\nrq-\u003esectors, nr_sectors and current_nr_sectors references to\naccessors.\n\nWhile at it, drop superflous blk_rq_pos() \u003c 0 test in swim.c.\n\n[ Impact: use pos and nr_sectors accessors ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nTested-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAcked-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nTested-by: Adrian McMenamin \u003cadrian@mcmen.demon.co.uk\u003e\nAcked-by: Adrian McMenamin \u003cadrian@mcmen.demon.co.uk\u003e\nAcked-by: Mike Miller \u003cmike.miller@hp.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Borislav Petkov \u003cpetkovbb@googlemail.com\u003e\nCc: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nCc: Eric Moore \u003cEric.Moore@lsi.com\u003e\nCc: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Pete Zaitcev \u003czaitcev@redhat.com\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Paul Clements \u003cpaul.clements@steeleye.com\u003e\nCc: Tim Waugh \u003ctim@cyberelk.net\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Alex Dubov \u003coakad@yahoo.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Dario Ballabio \u003cballabio_dario@emc.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: unsik Kim \u003cdonari75@gmail.com\u003e\nCc: Laurent Vivier \u003cLaurent@lvivier.info\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "40cbbb781d3eba5d6ac0860db078af490e5c7c6b",
      "tree": "dec374543cf045fc630bccddbb7646c695094b0d",
      "parents": [
        "b243ddcbe9be146172baa544dadecebf156eda0e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:19 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:35 2009 +0200"
      },
      "message": "block: implement and use [__]blk_end_request_all()\n\nThere are many [__]blk_end_request() call sites which call it with\nfull request length and expect full completion.  Many of them ensure\nthat the request actually completes by doing BUG_ON() the return\nvalue, which is awkward and error-prone.\n\nThis patch adds [__]blk_end_request_all() which takes @rq and @error\nand fully completes the request.  BUG_ON() is added to to ensure that\nthis actually happens.\n\nMost conversions are simple but there are a few noteworthy ones.\n\n* cdrom/viocd: viocd_end_request() replaced with direct calls to\n  __blk_end_request_all().\n\n* s390/block/dasd: dasd_end_request() replaced with direct calls to\n  __blk_end_request_all().\n\n* s390/char/tape_block: tapeblock_end_request() replaced with direct\n  calls to blk_end_request_all().\n\n[ Impact: cleanup ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Mike Miller \u003cmike.miller@hp.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Alex Dubov \u003coakad@yahoo.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "158dbda0068e63c7cce7bd47c123bd1dfa5a902c",
      "tree": "2665f31350ba4f0875c7611c980b0831c22d8c98",
      "parents": [
        "5efccd17ceb0fc43837a331297c2c407969d7201"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:18 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:34 2009 +0200"
      },
      "message": "block: reorganize request fetching functions\n\nImpact: code reorganization\n\nelv_next_request() and elv_dequeue_request() are public block layer\ninterface than actual elevator implementation.  They mostly deal with\nhow requests interact with block layer and low level drivers at the\nbeginning of rqeuest processing whereas __elv_next_request() is the\nactual eleveator request fetching interface.\n\nMove the two functions to blk-core.c.  This prepares for further\ninterface cleanup.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "a7f557923441186a3cdbabc54f1bcacf42b63bf5",
      "tree": "48e37802174cb98be43d89eb8bc4e466f4d79a02",
      "parents": [
        "a538cd03be6f363d039daa94199c28cfbd508455"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:17 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:33 2009 +0200"
      },
      "message": "block: kill blk_start_queueing()\n\nblk_start_queueing() is identical to __blk_run_queue() except that it\ndoesn\u0027t check for recursion.  None of the current users depends on\nblk_start_queueing() running request_fn directly.  Replace usages of\nblk_start_queueing() with [__]blk_run_queue() and kill it.\n\n[ Impact: removal of mostly duplicate interface function ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "f600abe2de81628c40effbb3f8eaf5af0d291e57",
      "tree": "db8e27854110b68bac454d8dc79c756800dc4afb",
      "parents": [
        "8f3d8ba20e67991b531e9c0227dcd1f99271a32c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 08 14:22:01 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 08:28:09 2009 +0200"
      },
      "message": "block: fix bad spelling of quiesce\n\nCredit goes to Andrew Morton for spotting this one.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "26308eab69aa193f7b3fb50764a64ae14544a39b",
      "tree": "758f6100395a23228d042c3a9d6f7dc1922d7530",
      "parents": [
        "6c7e8cee6a9128eeb7f83c3ad1cb243f77f5cb16"
      ],
      "author": {
        "name": "Jerome Marchand",
        "email": "jmarchan@redhat.com",
        "time": "Fri Mar 27 10:31:51 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 08:12:38 2009 +0200"
      },
      "message": "block: fix inconsistency in I/O stat accounting code\n\nThis forces in_flight to be zero when turning off or on the I/O stat\naccounting and stops updating I/O stats in attempt_merge() when\naccounting is turned off.\n\nSigned-off-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6c7e8cee6a9128eeb7f83c3ad1cb243f77f5cb16",
      "tree": "f57ac6ab9e57a4e3317a54d04c39151d3bb942cf",
      "parents": [
        "d508afb437daee7cf07da085b635c44a4ebf9b38"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Mar 27 10:30:47 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 08:12:37 2009 +0200"
      },
      "message": "block: elevator quiescing helpers\n\nSimple helper functions to quiesce the request queue. These are\ncurrently only used for switching IO schedulers on-the-fly, but\nwe can use them to properly switch IO accounting on and off as well.\n\nSigned-off-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1faa16d22877f4839bd433547d770c676d1d964c",
      "tree": "9a0d50be1ef0358c1f53d7107413100904e7d526",
      "parents": [
        "0221c81b1b8eb0cbb6b30a0ced52ead32d2b4e4c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 06 14:48:01 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 08:04:53 2009 -0700"
      },
      "message": "block: change the request allocation/congestion logic to be sync/async based\n\nThis makes sure that we never wait on async IO for sync requests, instead\nof doing the split on writes vs reads.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b374d18a4bfce705e4a99ae9f501b53e86ecb283",
      "tree": "7e773464725a78e96a2017fa36cf9d4a4e29f73b",
      "parents": [
        "abf137dd7712132ee56d5b3143c2ff61a72a5faa"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Oct 31 10:05:07 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:29:50 2008 +0100"
      },
      "message": "block: get rid of elevator_t typedef\n\nJust use struct elevator_queue everywhere instead.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "58eea927d2de43dc6f03d1ba2c46e55854b31540",
      "tree": "bb43f43891a3154741bb6a116dc2956342160f15",
      "parents": [
        "8f11b3e99a1136fcbb67316c3260f085299c0bff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 28 13:32:06 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:28:45 2008 +0100"
      },
      "message": "block: simplify empty barrier implementation\n\nEmpty barrier required special handling in __elv_next_request() to\ncomplete it without letting the low level driver see it.\n\nWith previous changes, barrier code is now flexible enough to skip the\nBAR step using the same barrier sequence selection mechanism.  Drop\nthe special handling and mask off q-\u003eordered from start_ordered().\n\nRemove blk_empty_barrier() test which now has no user.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8f11b3e99a1136fcbb67316c3260f085299c0bff",
      "tree": "bb9b12fe23aceac19e24f674786612d0fcad2142",
      "parents": [
        "f671620e7d895af221bdfeda751d54fa55ed9546"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 28 13:32:05 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:28:45 2008 +0100"
      },
      "message": "block: make barrier completion more robust\n\nBarrier completion had the following assumptions.\n\n* start_ordered() couldn\u0027t finish the whole sequence properly.  If all\n  actions are to be skipped, q-\u003eordseq is set correctly but the actual\n  completion was never triggered thus hanging the barrier request.\n\n* Drain completion in elv_complete_request() assumed that there\u0027s\n  always at least one request in the queue when drain completes.\n\nBoth assumptions are true but these assumptions need to be removed to\nimprove empty barrier implementation.  This patch makes the following\nchanges.\n\n* Make start_ordered() use blk_ordered_complete_seq() to mark skipped\n  steps complete and notify __elv_next_request() that it should fetch\n  the next request if the whole barrier has completed inside\n  start_ordered().\n\n* Make drain completion path in elv_complete_request() check whether\n  the queue is empty.  Empty queue also indicates drain completion.\n\n* While at it, convert 0/1 return from blk_do_ordered() to false/true.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "970987beb9c99ca806edc464518d411cc399fb4d",
      "tree": "51e2298b6eb7e6412009428b380a51e1f17b531b",
      "parents": [
        "faec2ec505d397e9426754722b6e80d519c4938f",
        "1fd8f2a3f9a91b287a876cef830b21baafc8a799",
        "feaf3848a813a106f163013af6fcf6c4bfec92d9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 05 14:45:22 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 05 14:45:22 2008 +0100"
      },
      "message": "Merge branches \u0027tracing/ftrace\u0027, \u0027tracing/function-graph-tracer\u0027 and \u0027tracing/urgent\u0027 into tracing/core\n"
    },
    {
      "commit": "53a08807c01989c6847bb135d8d43f61c5dfdda5",
      "tree": "e2297de901dc82a0336e6af28b594864792c585d",
      "parents": [
        "bf91db18ac2852a3ff39fe25ff56c5557c0fff78"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 03 12:41:26 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 03 12:41:26 2008 +0100"
      },
      "message": "block: internal dequeue shouldn\u0027t start timer\n\nblkdev_dequeue_request() and elv_dequeue_request() are equivalent and\nboth start the timeout timer.  Barrier code dequeues the original\nbarrier request but doesn\u0027t passes the request itself to lower level\ndriver, only broken down proxy requests; however, as the original\nbarrier code goes through the same dequeue path and timeout timer is\nstarted on it.  If barrier sequence takes long enough, this timer\nexpires but the low level driver has no idea about this request and\noops follows.\n\nTimeout timer shouldn\u0027t have been started on the original barrier\nrequest as it never goes through actual IO.  This patch unexports\nelv_dequeue_request(), which has no external user anyway, and makes it\noperate on elevator proper w/o adding the timer and make\nblkdev_dequeue_request() call elv_dequeue_request() and add timer.\nInternal users which don\u0027t pass the request to driver - barrier code\nand end_that_request_last() - are converted to use\nelv_dequeue_request().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0bfc24559d7945506184d86739fe365a181f06b7",
      "tree": "5c152128faac7080f4802ce03d1c6b6bc7173227",
      "parents": [
        "5f3ea37c7716db4e894a480e0c18b24399595b6b"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 11:59:56 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 13:04:35 2008 +0100"
      },
      "message": "blktrace: port to tracepoints, update\n\nPort to the new tracepoints API: split DEFINE_TRACE() and DECLARE_TRACE()\nsites. Spread them out to the usage sites, as suggested by\nMathieu Desnoyers.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\n"
    },
    {
      "commit": "5f3ea37c7716db4e894a480e0c18b24399595b6b",
      "tree": "db6784635d024894f641b340dcd7c5060c446077",
      "parents": [
        "509dceef6470442d8c7b8a43ec34125205840b3c"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Thu Oct 30 08:34:33 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 12:13:34 2008 +0100"
      },
      "message": "blktrace: port to tracepoints\n\nThis was a forward port of work done by Mathieu Desnoyers, I changed it to\nencode the \u0027what\u0027 parameter on the tracepoint name, so that one can register\ninterest in specific events and not on classes of events to then check the\n\u0027what\u0027 parameter.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2920ebbd65f3e80c318adf5191ac0987142bda80",
      "tree": "1f45e880b1cfe86040b4acf834a1d04faf9804f3",
      "parents": [
        "f92131c3dd567fc6df18ce3f46fcf57ecbdefbe0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 30 08:32:29 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Nov 06 08:41:55 2008 +0100"
      },
      "message": "block: add timer on blkdev_dequeue_request() not elv_next_request()\n\nBlock queue supports two usage models - one where block driver peeks\nat the front of queue using elv_next_request(), processes it and\nfinishes it and the other where block driver peeks at the front of\nqueue, dequeue the request using blkdev_dequeue_request() and finishes\nit.  The latter is more flexible as it allows the driver to process\nmultiple commands concurrently.\n\nThese two inconsistent usage models affect the block layer\nimplementation confusing.  For some, elv_next_request() is considered\nthe issue point while others consider blkdev_dequeue_request() the\nissue point.\n\nTill now the inconsistency mostly affect only accounting, so it didn\u0027t\nreally break anything seriously; however, with block layer timeout,\nthis inconsistency hits hard.  Block layer considers\nelv_next_request() the issue point and adds timer but SCSI layer\nthinks it was just peeking and when the request can\u0027t process the\ncommand right away, it\u0027s just left there without further processing.\nThis makes the request dangling on the timer list and, when the timer\ngoes off, the request which the SCSI layer and below think is still on\nthe block queue ends up in the EH queue, causing various problems - EH\nhang (failed count goes over busy count and EH never wakes up),\nWARN_ON() and oopses as low level driver trying to handle the unknown\ncommand, etc. depending on the timing.\n\nAs SCSI midlayer is the only user of block layer timer at the moment,\nmoving blk_add_timer() to elv_dequeue_request() fixes the problem;\nhowever, this two usage models definitely need to be cleaned up in the\nfuture.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "80a4b58e36b63d7b0b592beb1bd6410aadeeb63c",
      "tree": "a37df7feb2db67254cc8927730828e87706b2205",
      "parents": [
        "ee2e992cc28553f6c4dd1ab5483c8733c393626b"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 14 09:51:06 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Oct 17 08:46:57 2008 +0200"
      },
      "message": "block: only call -\u003erequest_fn when the queue is not stopped\n\nCallers should use either blk_run_queue/__blk_run_queue, or\nblk_start_queueing() to invoke request handling instead of calling\n-\u003erequest_fn() directly as that does not take the queue stopped\nflag into account.\n\nAlso add appropriate comments on the above functions to detail\ntheir usage.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ee2e992cc28553f6c4dd1ab5483c8733c393626b",
      "tree": "1947e8cb26f1018c20f89db93e06698cc17353f5",
      "parents": [
        "e6d63840ba55ffd3a79aea6792aac6f29f338083"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Oct 14 08:49:56 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Oct 17 08:46:57 2008 +0200"
      },
      "message": "block: simplify string handling in elv_iosched_store()\n\nstrlcpy() guarantees the dest buffer is NULL teminated.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "99cd3386f290eaf61f2b7596d5a4cc2007771174",
      "tree": "90f93246c060a33b90d0ef3d98f327768f167909",
      "parents": [
        "7afb3a6e752503d5ebeb038336aa0fa886a51b44"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Wed Oct 01 10:13:44 2008 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:21 2008 +0200"
      },
      "message": "block: change elevator to use __blk_end_request()\n\nThis patch converts elevator to use __blk_end_request() directly\nso that end_{queued|dequeued}_request() can be removed.\nRelated \u0027uptodate\u0027 arguments is converted to \u0027error\u0027.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "11914a53d2ec2974a565311af327b8983d8c820d",
      "tree": "72713d2661ed56fa5d9e29203541bad32c88a3ba",
      "parents": [
        "242f9dcb8ba6f68fcd217a119a7648a4f69290e9"
      ],
      "author": {
        "name": "Mike Anderson",
        "email": "andmike@linux.vnet.ibm.com",
        "time": "Sat Sep 13 20:31:27 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:13 2008 +0200"
      },
      "message": "block: Add interface to abort queued requests\n\nSigned-off-by: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "242f9dcb8ba6f68fcd217a119a7648a4f69290e9",
      "tree": "1bfe245ffbc50d204d76665cd8f90d85100f86a1",
      "parents": [
        "608aeef17a91747d6303de4df5e2c2e6899a95e8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Sep 14 05:55:09 2008 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:13 2008 +0200"
      },
      "message": "block: unify request timeout handling\n\nRight now SCSI and others do their own command timeout handling.\nMove those bits to the block layer.\n\nInstead of having a timer per command, we try to be a bit more clever\nand simply have one per-queue. This avoids the overhead of having to\ntear down and setup a timer for each command, so it will result in a lot\nless timer fiddling.\n\nSigned-off-by: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0835da67c11e879ed5dc23160934d8970470a2ce",
      "tree": "8a09f5592d9573955e118240848174b5db491aab",
      "parents": [
        "3e1a7ff8a0a7b948f2684930166954f9e8e776fe"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Aug 26 09:15:47 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:09 2008 +0200"
      },
      "message": "block: use linux/uaccess.h in elevator.c instead of asm variant\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5df97b91b5d7ed426034fcc84cb6e7cf682b8838",
      "tree": "727b9fb778f72d2b1ff44c007fb5209bacf67f4a",
      "parents": [
        "b8b3e16cfe6435d961f6aaebcfd52a1ff2a988c5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Aug 15 10:20:02 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:03 2008 +0200"
      },
      "message": "drop vmerge accounting\n\nRemove hw_segments field from struct bio and struct request. Without virtual\nmerge accounting they have no purpose.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e17fc0a1ccf88f6d4dcb363729f3141b0958c325",
      "tree": "0a7c2dc1c3159c2af14d87c67ca83e158b2c78b5",
      "parents": [
        "d30a2605be9d5132d95944916e8f578fcfe4f976"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Sat Aug 09 16:42:20 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:02 2008 +0200"
      },
      "message": "Allow elevators to sort/merge discard requests\n\nBut blkdev_issue_discard() still emits requests which are interpreted as\nsoft barriers, because naïve callers might otherwise issue subsequent\nwrites to those same sectors, which might cross on the queue (if they\u0027re\nreallocated quickly enough).\n\nCallers still _can_ issue non-barrier discard requests, but they have to\ntake care of queue ordering for themselves.\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e180f5949327e897bc35a816f4f4010186632df9",
      "tree": "b6ee35a51c00b811b87a925bbf7978c4db5538f3",
      "parents": [
        "cc371e66e340f35eed8dc4651c7c18e754c7fb26"
      ],
      "author": {
        "name": "maximilian attems",
        "email": "max@stro.a",
        "time": "Tue Jul 01 09:42:47 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 03 13:21:15 2008 +0200"
      },
      "message": "block: request_module(): use format string\n\nAvoid bad things happening if the module has a printk control string in\nits name.\n\nSigned-off-by: maximilian attems \u003cmax@stro.at\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7ba1ba12eeef0aa7113beb16410ef8b7c748e18b",
      "tree": "4629aabe88bf095d58eabd2f451207695bb35b08",
      "parents": [
        "51d654e1d885607a6edd02b337105fa5c28b6d33"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Jun 30 20:04:41 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 03 13:21:13 2008 +0200"
      },
      "message": "block: Block layer data integrity support\n\nSome block devices support verifying the integrity of requests by way\nof checksums or other protection information that is submitted along\nwith the I/O.\n\nThis patch implements support for generating and verifying integrity\nmetadata, as well as correctly merging, splitting and cloning bios and\nrequests that have this extra information attached.\n\nSee Documentation/block/data-integrity.txt for more information.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4722dc52a891ab6cb2d637ddb87233e0ce277827",
      "tree": "c5cd2a670edcedf5a8f35028509ab7fd841e2029",
      "parents": [
        "9d5f09a424a67ddb959829894efb4c71cbf6d600"
      ],
      "author": {
        "name": "Alan D. Brunelle",
        "email": "Alan.Brunelle@hp.com",
        "time": "Tue May 27 14:55:00 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 28 14:49:27 2008 +0200"
      },
      "message": "Added in elevator switch message to blktrace stream\n\nSigned-off-by: Alan D. Brunelle \u003calan.brunelle@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "24c03d47d0481ed7b172b398f6c9b7ca1fafb9fa",
      "tree": "d24b94e09b12a2c16cc0cf49c273af846fcc6f13",
      "parents": [
        "e37d05dad7ff9744efd8ea95a70d389e9a65a6fc"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Thu May 01 04:35:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 01 08:04:02 2008 -0700"
      },
      "message": "block: remove remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac9fafa1243640349aa481adf473db283a695766",
      "tree": "155c2371cca8971638d781269f39fa015bc6509c",
      "parents": [
        "d7e3c3249ef23b4617393c69fe464765b4ff1645"
      ],
      "author": {
        "name": "Alan D. Brunelle",
        "email": "Alan.Brunelle@hp.com",
        "time": "Tue Apr 29 14:44:19 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 14:48:55 2008 +0200"
      },
      "message": "block: Skip I/O merges when disabled\n\nThe block I/O + elevator + I/O scheduler code spend a lot of time trying\nto merge I/Os -- rightfully so under \"normal\" circumstances. However,\nif one were to know that the incoming I/O stream was /very/ random in\nnature, the cycles are wasted.\n\nThis patch adds a per-request_queue tunable that (when set) disables\nmerge attempts (beyond the simple one-hit cache check), thus freeing up\na non-trivial amount of CPU cycles.\n\nSigned-off-by: Alan D. Brunelle \u003calan.brunelle@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "72ed0bf60ade8d2cc1f58276cb16add0af2c3e25",
      "tree": "749000baa1616394ec34678faf38cf6e1708d77f",
      "parents": [
        "75ad23bc0fcb4f992a5d06982bf0857ab1738e9e"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Apr 29 09:49:05 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 14:48:54 2008 +0200"
      },
      "message": "block/elevator.c:elv_rq_merge_ok() mustn\u0027t be inline\n\nThis patch fixes the following build error with UML and gcc 4.3:\n\n\u003c--  snip  --\u003e\n\n...\n  CC      block/elevator.o\n/home/bunk/linux/kernel-2.6/git/linux-2.6/block/elevator.c: In function ‘elv_merge’:\n/home/bunk/linux/kernel-2.6/git/linux-2.6/block/elevator.c:73: sorry, unimplemented: inlining failed in call to ‘elv_rq_merge_ok’: function body not available\n/home/bunk/linux/kernel-2.6/git/linux-2.6/block/elevator.c:103: sorry, unimplemented: called from here\n/home/bunk/linux/kernel-2.6/git/linux-2.6/block/elevator.c:73: sorry, unimplemented: inlining failed in call to ‘elv_rq_merge_ok’: function body not available\n/home/bunk/linux/kernel-2.6/git/linux-2.6/block/elevator.c:495: sorry, unimplemented: called from here\nmake[2]: *** [block/elevator.o] Error 1\nmake[1]: *** [block] Error 2\n\n\u003c--  snip  --\u003e\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "75ad23bc0fcb4f992a5d06982bf0857ab1738e9e",
      "tree": "8668ef63b1f420252ae41aed9e13737d49fd8054",
      "parents": [
        "68154e90c9d1492d570671ae181d9a8f8530da55"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Apr 29 14:48:33 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 14:48:33 2008 +0200"
      },
      "message": "block: make queue flags non-atomic\n\nWe can save some atomic ops in the IO path, if we clearly define\nthe rules of how to modify the queue flags.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e164094964e6e20fe7fce418e06a9dce952bb7a4",
      "tree": "99ff5c6dbf5bccad8a1172bc0fb5a5f4a079bae3",
      "parents": [
        "ffc4e7595734cf768fa60cea8a4d545dfef8231a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Feb 19 10:20:37 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Feb 19 10:20:37 2008 +0100"
      },
      "message": "elevator: make elevator_get() attempt to load the appropriate module\n\nCurrently we fail if someone requests a valid io scheduler, but it\u0027s\nmodular and not currently loaded. That can happen from a driver init\nasking for a different scheduler, or online switching through sysfs\nas requested by a user.\n\nThis patch makes elevator_get() request_module() to attempt to load\nthe appropriate module, instead of requiring that done manually.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4eb166d9874b4917d79ccd14577a60d795a0cb4a",
      "tree": "b29e657c7f07ad4a0f852bc4803404a7b15bd4ef",
      "parents": [
        "fe094d98e79351344c9e0e2c1446794240d247a4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 01 00:37:27 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 01 09:26:33 2008 +0100"
      },
      "message": "block: make elevator lib checkpatch compliant\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fa0ccd837e3dddb44c7db2f128a8bb7e4eabc21a",
      "tree": "ade071502f3e7cba423295890d828f0f301ad731",
      "parents": [
        "5d84070ee0a433620c57e85dac7f82faaec5fbb3"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Thu Jan 10 11:30:36 2008 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 28 10:54:11 2008 +0100"
      },
      "message": "block: implement drain buffers\n\nThese DMA drain buffer implementations in drivers are pretty horrible\nto do in terms of manipulating the scatterlist.  Plus they\u0027re being\ndone at least in drivers/ide and drivers/ata, so we now have code\nduplication.\n\nThe one use case for this, as I understand it is AHCI controllers doing\nPIO mode to mmc devices but translating this to DMA at the controller\nlevel.\n\nSo, what about adding a callback to the block layer that permits the\nadding of the drain buffer for the problem devices.  The idea is that\nyou\u0027d do this in slave_configure after you find one of these devices.\n\nThe beauty of doing it in the block layer is that it quietly adds the\ndrain buffer to the end of the sg list, so it automatically gets mapped\n(and unmapped) without anything unusual having to be done to the\nscatterlist in driver/scsi or drivers/ata and without any alteration to\nthe transfer length.\n\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f9cb074bff8e762ef24c44678a5a7d907f82fbeb",
      "tree": "50438fc90b8f6170dd8eb5d43712c61719a16304",
      "parents": [
        "e1543ddf739b22a8c4218716ad50c26b3e147403"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Dec 17 23:05:35 2007 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:38 2008 -0800"
      },
      "message": "Kobject: rename kobject_init_ng() to kobject_init()\n\nNow that the old kobject_init() function is gone, rename\nkobject_init_ng() to kobject_init() to clean up the namespace.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "b2d6db5878a0832659ed58476357eea2db915550",
      "tree": "c7c9e98431078ca7b0405e8003bd905ab62df7c4",
      "parents": [
        "9e7bbccd0290e720e0874443932869c55f63d5a8"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Dec 17 23:05:35 2007 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:38 2008 -0800"
      },
      "message": "Kobject: rename kobject_add_ng() to kobject_add()\n\nNow that the old kobject_add() function is gone, rename kobject_add_ng()\nto kobject_add() to clean up the namespace.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "29e3dd0df1b9556170ce90484a9d1a2ff9104ea7",
      "tree": "63552639fe2c05e96fdc5a02f234b10ec78866f5",
      "parents": [
        "edfaa7c36574f1bf09c65ad602412db9da5f96bf"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Dec 17 23:05:35 2007 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:36 2008 -0800"
      },
      "message": "Kobject: convert block/elevator.c to use kobject_init/add_ng()\n\nThis converts the code to use the new kobject functions, cleaning up the\nlogic in doing so.\n\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "2fdd82bd8852ec8ebad5c69c45138da25c6f9273",
      "tree": "ff701ec0a8909fa50b79763a49a4eaada5aa759e",
      "parents": [
        "49565124b13bb16607e7f8fc8fb1d9c5c355a1a3"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Dec 12 18:51:56 2007 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Dec 18 08:29:28 2007 +0100"
      },
      "message": "block: let elv_register() return void\n\nelv_register() always returns 0, and there isn\u0027t anything it does where\nit should return an error (the only error condition is so grave that\nit\u0027s handled with a BUG_ON).\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "dbe7f76dd6e7ed4991870f0c779d758b605d9787",
      "tree": "5c915198932698906ed689d495f8ec88c087d729",
      "parents": [
        "94547426db2f4f2aad2f640ca074ccb1c6f7e660"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "ukleinek@informatik.uni-freiburg.de",
        "time": "Sat Oct 20 01:55:04 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sat Oct 20 01:55:04 2007 +0200"
      },
      "message": "fix typo \"insted\" -\u003e \"instead\"\n\nSigned-off-by: Uwe Kleine-König \u003cukleinek@informatik.uni-freiburg.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "bf2de6f5a4faf0197268f18d08969b003b87b6e8",
      "tree": "16830a15a7effea352445a7aba5dbb433314d3eb",
      "parents": [
        "c07e2b41291853b19fff11ceee3657df252a4e42"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Sep 27 13:01:25 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 16 11:03:56 2007 +0200"
      },
      "message": "block: Initial support for data-less (or empty) barrier support\n\nThis implements functionality to pass down or insert a barrier\nin a queue, without having data attached to it. The -\u003eprepare_flush_fn()\ninfrastructure from data barriers are reused to provide this\nfunctionality.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a0cd128542cd9c67f27458a08e989db486a293ce",
      "tree": "bc4ca6dd3cbfa230de486d79480f7a99bbfb6232",
      "parents": [
        "992c5ddaf1b8b85d2252339c4c89adf7469c09ca"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 21 10:41:07 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 16 11:03:53 2007 +0200"
      },
      "message": "block: add end_queued_request() and end_dequeued_request() helpers\n\nWe can use this helper in the elevator core for BLKPREP_KILL, and it\u0027ll\nalso be useful for the empty barrier patch.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "19c38de88a80913351fcacefdb461cc0b585fa87",
      "tree": "17d2978ce27861926a0d9a3eb49471b9b736f968",
      "parents": [
        "5901d0145c6b9e791bacd049eea11c9db9a3006e"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Sep 12 15:06:57 2007 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 12 14:51:02 2007 -0700"
      },
      "message": "kobjects: fix up improper use of the kobject name field\n\nA number of different drivers incorrect access the kobject name field\ndirectly.  This is not correct as the name might not be in the array.\nUse the proper accessor function instead.\n\n"
    },
    {
      "commit": "165125e1e480f9510a5ffcfbfee4e3ee38c05f23",
      "tree": "8009c8a5ff09e26dc2418d42f66ecafb055c52a2",
      "parents": [
        "f695baf2df9e0413d3521661070103711545207a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 24 09:28:11 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 24 09:28:11 2007 +0200"
      },
      "message": "[BLOCK] Get rid of request_queue_t typedef\n\nSome of the code has been gradually transitioned to using the proper\nstruct request_queue, but there\u0027s lots left. So do a full sweet of\nthe kernel and get rid of this typedef and replace its uses with\nthe proper type.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "94f6030ca792c57422f04a73e7a872d8325946d3",
      "tree": "0197f24d82b1706f1b0521f2cf68feeff64123df",
      "parents": [
        "81cda6626178cd55297831296ba8ecedbfd8b52d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:02 2007 -0700"
      },
      "message": "Slab allocators: Replace explicit zeroing with __GFP_ZERO\n\nkmalloc_node() and kmem_cache_alloc_node() were not available in a zeroing\nvariant in the past.  But with __GFP_ZERO it is possible now to do zeroing\nwhile allocating.\n\nUse __GFP_ZERO to remove the explicit clearing of memory via memset whereever\nwe can.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "70cee26e020c1d74ff559c991b96c7b19fa4173b",
      "tree": "a2d73f170c8d7db29eaca27dbc06b6c6218a8f55",
      "parents": [
        "fd11d171e51a5b81c176d856d5df5612117e1a45"
      ],
      "author": {
        "name": "Matthias Kaehlcke",
        "email": "matthias.kaehlcke@gmail.com",
        "time": "Tue Jul 10 12:26:24 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 10 13:43:32 2007 +0200"
      },
      "message": "Use list_for_each_entry() instead of list_for_each() in the block device\n\nelevator\n\nSigned-off-by: Matthias Kaehlcke \u003cmatthias.kaehlcke@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2a12dcd71a5e0667b33f7b47bcac95c71d551840",
      "tree": "8e0a8cb3eeef023bade8217693b289e5db22a846",
      "parents": [
        "5972511b77809cb7c9ccdb79b825c54921c5c546"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 26 14:41:53 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:08:17 2007 +0200"
      },
      "message": "[PATCH] elevator: elv_list_lock does not need irq disabling\n\nIt\u0027s never grabbed from irq context, so just make it plain spin_lock().\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1ffb96c587fa2af0d690dc3548a4a781c477bfb7",
      "tree": "e813df1932a8f2ed55f9f5d5f35407a878620680",
      "parents": [
        "f772b3d9ca135087a70406d8466e57d1cf29237e"
      ],
      "author": {
        "name": "Thibaut VARENE",
        "email": "T-Bone@parisc-linux.org",
        "time": "Thu Mar 15 12:59:19 2007 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Mar 27 08:53:04 2007 +0200"
      },
      "message": "make elv_register() output atomic\n\nBooting 2.6.21-rc3-g45592145 I noticed the following on one of my\nmachines in the bootlog:\n\nio scheduler noop registered\u003c6\u003eTime: jiffies clocksource has been installed.\n\nio scheduler deadline registered (default)\n\nLooking at block/elevator.c, it appears that elv_register() uses two\nconsecutive printks in a non-atomic way, leading to the above glitch. The\nattached trivial patch fixes this issue, by using a single printk.\n\nSigned-off-by: Thibaut VARENE \u003cvarenet@parisc-linux.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "783660b2f60418144e168ab75a06786f9695fc70",
      "tree": "c25135f978bb2b400852b8aa27458a6d1649e999",
      "parents": [
        "cad9751642b62cbb5f62feedc546b4f7890497d4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 19 11:27:47 2007 +1100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Sun Feb 11 23:14:44 2007 +0100"
      },
      "message": "elevator: don\u0027t sort reads between writes\n\nDon\u0027t allow elv_dispatch_sort() to mix reads and writes together,\nit\u0027s rarely a good idea.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cad9751642b62cbb5f62feedc546b4f7890497d4",
      "tree": "f73352cb6ed7fbd66614fb59b1e8694f39ebc838",
      "parents": [
        "958b7f37ee0fb2846c8d44310a68ae9605614ff9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Jan 14 22:26:09 2007 +1100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Sun Feb 11 23:14:44 2007 +0100"
      },
      "message": "elevator: abstract out the activate and deactivate functions\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "95543179f158b4891c5dc49004853ce081e8d794",
      "tree": "39cc1ae27c53bc7ac7cc6401afc8ecee69b76b0f",
      "parents": [
        "3a7122923e87fc5cdf8affa1845924a0def4657d"
      ],
      "author": {
        "name": "Linas Vepstas",
        "email": "linas@austin.ibm.com",
        "time": "Tue Jan 23 19:40:54 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jan 23 11:01:17 2007 -0800"
      },
      "message": "[PATCH] elevator: move clearing of unplug flag earlier\n\nA flag was recently added to the elevator code to avoid\nperforming an unplug when reuests are being re-queued.\nThe goal of this flag was to avoid a deep recursion that\ncan occur when re-queueing requests after a SCSI device/host\nreset.  See http://lkml.org/lkml/2006/5/17/254\n\nHowever, that fix added the flag near the bottom of a case\nstatement, where an earlier break (in an if statement) could\ntransport one out of the case, without setting the flag.\nThis patch sets the flag earlier in the case statement.\n\nI re-discovered the deep recursion recently during testing;\nI was told that it was a known problem, and the fix to it was\nin the kernel I was testing. Indeed it was ... but it didn\u0027t\nfix the bug. With the patch below, I no longer see the bug.\n\nSigned-off by: Linas Vepstas \u003clinas@austin.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bb4067e34159648d394943d5e2a011f838bff22f",
      "tree": "a0b549c57fa72686b9d05e7ee3440fa5c70902d6",
      "parents": [
        "3e67c0987d7567ad666641164a153dca9a43b11d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 21 21:20:01 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 21 22:01:04 2006 -0800"
      },
      "message": "[PATCH] elevator: fixup typo in merge logic\n\nThe recent io scheduler allow_merge commit left the block layer with\nno merging, oops. This patch fixes that up.\n\nThat means the CFQ change needs to be verified again, it might not fix\nthe original bug now.  But that\u0027s a seperate thing, I\u0027ll double check\nthat tomorrow.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "da775265021b61d5eb81df155e36cb0810f6df53",
      "tree": "f7b28991b281a8c581bd3ab0bb470e158ae2206f",
      "parents": [
        "8e5cfc45e7527eb5c8a9a22d56a7b9227e7c0913"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 20 11:04:12 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 20 11:04:12 2006 +0100"
      },
      "message": "[PATCH] cfq-iosched: don\u0027t allow sync merges across queues\n\nCurrently we allow any merge, even if the io originates from different\nprocesses. This can cause really bad starvation and unfairness, if those\nios happen to be synchronous (reads or direct writes).\n\nSo add a allow_merge hook to the io scheduler ops, so an io scheduler can\nhelp decide whether a bio/process combination may be merged with an\nexisting request.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "bb37b94c68e7b37eecea8576039ae9396ca07839",
      "tree": "0b5dcbb3abb7710789d401126431f6f4dfe89e3a",
      "parents": [
        "0e75f9063f5c55fb0b0b546a7c356f8ec186825e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 01 10:42:33 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 01 10:42:33 2006 +0100"
      },
      "message": "[BLOCK] Cleanup unused variable passing\n\n- -\u003einit_queue() does not need the elevator passed in\n- -\u003eput_request() is a hot path and need not have the queue passed in\n- cfq_update_io_seektime() does not need cfqd passed in\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c5841642242e9ae817275e09b36b298456dc17d2",
      "tree": "be4c37fe2119ece7cc6d09a625cbf778d08e2ef8",
      "parents": [
        "e6e80f294c2688302f41959c57acfee7e131e489"
      ],
      "author": {
        "name": "Vasily Tarasov",
        "email": "vtaras@openvz.org",
        "time": "Wed Oct 11 13:26:30 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Thu Oct 12 15:08:51 2006 +0200"
      },
      "message": "[PATCH] block layer: elv_iosched_show should get elv_list_lock\n\nelv_iosched_show function iterates other elv_list, hence\nelv_list_lock should be got.\n\nSigned-off-by: Vasily Tarasov \u003cvtaras@openvz.org\u003e\nSigned-off-by: Vasily Tarasov \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a22b169df1b9f259391cf3b8ad8bfeea3d7be3f1",
      "tree": "c03c0fb3de87afc0c67a4a973a826deed4bb9d20",
      "parents": [
        "2b1191af683d16a899c2b81b87b605841ceffdec"
      ],
      "author": {
        "name": "Vasily Tarasov",
        "email": "vtaras@openvz.org",
        "time": "Wed Oct 11 09:24:27 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Thu Oct 12 15:08:51 2006 +0200"
      },
      "message": "[PATCH] block layer: elevator_find function cleanup\n\nWe can easily produce search through the elevator list\nwithout introducing additional elevator_type variable.\n\nSigned-off-by: Vasily Tarasov \u003cvtaras@openvz.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0fe23479577124bd2687e6783e39fa0fa4c28005",
      "tree": "954ae8c079fd10cd52bf212ca5cd2530ec5c2315",
      "parents": [
        "50be345560f1ffdcb15cc0e146416b80529a2ef2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Sep 04 15:41:16 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:52:34 2006 +0200"
      },
      "message": "[PATCH] Update axboe@suse.de email address\n\nAs people often look for the copyright in files to see who to mail,\nupdate the link to a neutral one.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "b5deef901282628d88c784f4c9d2f0583ec3b355",
      "tree": "1d3be92f18c9afd9426b06739c8f76931acbf03f",
      "parents": [
        "a3b05e8f58c95dfccbf2c824d0c68e5990571f24"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Jul 19 23:39:40 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:29:39 2006 +0200"
      },
      "message": "[PATCH] Make sure all block/io scheduler setups are node aware\n\nSome were kmalloc_node(), some were still kmalloc(). Change them all to\nkmalloc_node().\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "cb78b285c8f9d59b0d4e4f6a54c2977ce1d9b880",
      "tree": "fec08d228e25103962c56f8cd43727d9d6af23c8",
      "parents": [
        "cdd6026217c0e4cda2efce1bdc318661bef1f66f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Fri Jul 28 09:32:57 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:29:23 2006 +0200"
      },
      "message": "[PATCH] Drop useless bio passing in may_queue/set_request API\n\nIt\u0027s not needed for anything, so kill the bio passing.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "c00895ab2f08df7044e58ee01c38bf0a661ea0eb",
      "tree": "95dee4eb76042087c4b8d43a5841b6bae85b8cf3",
      "parents": [
        "8a8e674cb1dafc818ffea93d97e4c1c1f01fdbb6"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sat Sep 30 20:29:12 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sat Sep 30 20:29:12 2006 +0200"
      },
      "message": "[PATCH] Remove -\u003ewaiting member from struct request\n\nAs the comments indicates in blkdev.h, we can fold it into -\u003eend_io_data\nusage as that is really what -\u003ewaiting is. Fixup the users of\nblk_end_sync_rq().\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    }
  ],
  "next": "2e662b65f05d550b6799ed6bfa9963b82279e6b7"
}
