)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "2e662b65f05d550b6799ed6bfa9963b82279e6b7",
      "tree": "82911ec73a52d149d74a3d13c3c5eedb269a19cb",
      "parents": [
        "10fd48f2376db52f08bf0420d2c4f580e39269e1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Jul 13 11:55:04 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:26:57 2006 +0200"
      },
      "message": "[PATCH] elevator: abstract out the rbtree sort handling\n\nThe rbtree sort/lookup/reposition logic is mostly duplicated in\ncfq/deadline/as, so move it to the elevator core. The io schedulers\nstill provide the actual rb root, as we don\u0027t want to impose any sort\nof specific handling on the schedulers.\n\nIntroduce the helpers and rb_node in struct request to help migrate the\nIO schedulers.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "9817064b68fef7e4580c6df1ea597e106b9ff88b",
      "tree": "76c27990626247613e9efa45b792d51ad79635d7",
      "parents": [
        "4aff5e2333c9a1609662f2091f55c3f6fffdad36"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Fri Jul 28 09:23:08 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:26:56 2006 +0200"
      },
      "message": "[PATCH] elevator: move the backmerging logic into the elevator core\n\nRight now, every IO scheduler implements its own backmerging (except for\nnoop, which does no merging). That results in duplicated code for\nessentially the same operation, which is never a good thing. This patch\nmoves the backmerging out of the io schedulers and into the elevator\ncore. We save 1.6kb of text and as a bonus get backmerging for noop as\nwell. Win-win!\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "4aff5e2333c9a1609662f2091f55c3f6fffdad36",
      "tree": "b73d8c2b7c1bdc03d3313c108da7dfc95ee95525",
      "parents": [
        "77ed74da26f50fa28471571ee7a2251b77526d84"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Aug 10 08:44:47 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:23:37 2006 +0200"
      },
      "message": "[PATCH] Split struct request -\u003eflags into two parts\n\nRight now -\u003eflags is a bit of a mess: some are request types, and\nothers are just modifiers. Clean this up by splitting it into\n-\u003ecmd_type and -\u003ecmd_flags. This allows introduction of generic\nLinux block message types, useful for sending generic Linux commands\nto block devices.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "2d8f613160ed303f5fe310f21bba334a4b074fa5",
      "tree": "7e6878d6391919019b4904714cfe8fc0ef4709be",
      "parents": [
        "00a2b0f6dd2372842df73de72d51621b539fea44"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Aug 22 21:22:13 2006 +0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Aug 22 12:52:23 2006 -0700"
      },
      "message": "elv_unregister: fix possible crash on module unload\n\nAn exiting task or process which didn\u0027t do I/O yet have no io context,\nelv_unregister() should check it is not NULL.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "acf421755593f7d7bd9352d57eda796c6eb4fa43",
      "tree": "08fe234e5a28556ef32d29de1d3045cfe94a931c",
      "parents": [
        "fda151d9feafc0e8418f23c716587c44394fcdbf"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Mon Jun 12 14:20:58 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Jun 23 17:10:38 2006 +0200"
      },
      "message": "[PATCH] remove dead code from elevator switching\n\nWe already drop the refcount in elevator_exit(), and as\nwe\u0027re setting \u0027e\u0027 to NULL, we\u0027ll never take that branch anyway.\nFinally, as \u0027e\u0027 is a local var that isn\u0027t referenced afterwards,\nsetting it to NULL is pointless.\n\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "bc1c116974a5c3f498112a6f175d3e4a8cd5bdbc",
      "tree": "69ea68db91fb871cd24a0a5c5045abbe9c77bd3a",
      "parents": [
        "26e780e8ef1cc3ef581a07aafe2346bb5a07b4f9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Jun 08 08:49:06 2006 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jun 08 15:14:23 2006 -0700"
      },
      "message": "[PATCH] elevator switching race\n\nThere\u0027s a race between shutting down one io scheduler and firing up the\nnext, in which a new io could enter and cause the io scheduler to be\ninvoked with bad or NULL data.\n\nTo fix this, we need to maintain the queue lock for a bit longer.\nUnfortunately we cannot do that, since the elevator init requires to be\nrun without the lock held.  This isn\u0027t easily fixable, without also\nchanging the mempool API.  So split the initialization into two parts,\nand alloc-init operation and an attach operation.  Then we can\npreallocate the io scheduler and related structures, and run the attach\ninside the lock after we detach the old one.\n\nThis patch has survived 30 minutes of 1 second io scheduler switching\nwith a very busy io load.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dac07ec121de66b6be988b14ae2cd9ce45357b21",
      "tree": "95359f17d0857fd52f399cef072097523227d032",
      "parents": [
        "f358166a9405e4f1d8e50d8f415c26d95505b6de"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu May 11 08:20:16 2006 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu May 11 12:38:59 2006 -0700"
      },
      "message": "[BLOCK] limit request_fn recursion\n\nDon\u0027t recurse back into the driver even if the unplug threshold is met,\nwhen the driver asks for a requeue. This is both silly from a logical\npoint of view (requeues typically happen due to driver/hardware\nshortage), and also dangerous since we could hit an endless request_fn\n-\u003e requeue -\u003e unplug -\u003e request_fn loop and crash on stack overrun.\n\nAlso limit blk_run_queue() to one level of recursion, similar to how\nblk_start_queue() works.\n\nThis patch fixed a real problem with SLES10 and lpfc, and it could hit\nany SCSI lld that returns non-zero from it\u0027s -\u003equeuecommand() handler.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4f73247f0e53be1bd4aa519476e6261a8e4a64ab",
      "tree": "31122fbaffb3761e1c47124de2bbb9b652562c44",
      "parents": [
        "82aa5d6183667aa2a5f3c61e390934b0273d2ad7"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Apr 20 15:45:22 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Apr 20 15:45:22 2006 +0200"
      },
      "message": "[PATCH] block/elevator.c: remove unused exports\n\nThis patch removes the following unused EXPORT_SYMBOL\u0027s:\n- elv_requeue_request\n- elv_completed_request\n\nThey are only used by the block core, hence they need not be exported.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "9b41046cd0ee0a57f849d6e1363f7933e363cca9",
      "tree": "246820e9493770e071cb92a48e7f72d8b9c90a98",
      "parents": [
        "68eef3b4791572ecb70249c7fb145bb3742dd899"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Fri Mar 31 02:30:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:53 2006 -0800"
      },
      "message": "[PATCH] Don\u0027t pass boot parameters to argv_init[]\n\nThe boot cmdline is parsed in parse_early_param() and\nparse_args(,unknown_bootoption).\n\nAnd __setup() is used in obsolete_checksetup().\n\n\tstart_kernel()\n\t\t-\u003e parse_args()\n\t\t\t-\u003e unknown_bootoption()\n\t\t\t\t-\u003e obsolete_checksetup()\n\nIf __setup()\u0027s callback (-\u003esetup_func()) returns 1 in\nobsolete_checksetup(), obsolete_checksetup() thinks a parameter was\nhandled.\n\nIf -\u003esetup_func() returns 0, obsolete_checksetup() tries other\n-\u003esetup_func().  If all -\u003esetup_func() that matched a parameter returns 0,\na parameter is seted to argv_init[].\n\nThen, when runing /sbin/init or init\u003dapp, argv_init[] is passed to the app.\nIf the app doesn\u0027t ignore those arguments, it will warning and exit.\n\nThis patch fixes a wrong usage of it, however fixes obvious one only.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ce52449742697f6f51be2a7c275a4ab2a73885b8",
      "tree": "1cd5441d8fa9dea43b4d6de0adba910abaca814b",
      "parents": [
        "c5d3237c2424c4a3cf69d33abc1f229943468367"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Fri Mar 24 18:43:26 2006 +0100"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Mar 24 18:43:26 2006 +0100"
      },
      "message": "BUG_ON() Conversion in block/elevator.c\n\nthis changes if() BUG(); constructs to BUG_ON() which is\ncleaner, contains unlikely() and can better optimized away.\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "2056a782f8e7e65fd4bfd027506b4ce1c5e9ccd4",
      "tree": "d4fe59a7ca0c110690937085548936a4535c39db",
      "parents": [
        "6dac40a7ce2483a47b54af07afebeb84131c7228"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Mar 23 20:00:26 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Mar 23 20:00:26 2006 +0100"
      },
      "message": "[PATCH] Block queue IO tracing support (blktrace) as of 2006-03-23\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "e572ec7e4e432de7ecf7bd2e62117646fa64e518",
      "tree": "56b4b738fb566128d2db6d62aed28cfd41b5398a",
      "parents": [
        "3d1ab40f4c20767afbd361b258a531d73e3e6fc2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 22:27:18 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 22:27:18 2006 -0500"
      },
      "message": "[PATCH] fix rmmod problems with elevator attributes, clean them up\n"
    },
    {
      "commit": "3d1ab40f4c20767afbd361b258a531d73e3e6fc2",
      "tree": "2da79cc8b47a98b0496b6e762fa790a8d547977b",
      "parents": [
        "1cc9be68ebcc1de9904bf225441613878da9c0d8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:35:43 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:35:43 2006 -0500"
      },
      "message": "[PATCH] elevator_t lifetime rules and sysfs fixes\n"
    }
  ],
  "next": "e17a9489b4a686bb5e9615e1d375c67619cb99c5"
}
