)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "e17a9489b4a686bb5e9615e1d375c67619cb99c5",
      "tree": "e6574d24ad8f16fefe7663c91cf19109e48f8c6c",
      "parents": [
        "25975f863b0fd42c58109e253e7a4c65d9fdaf48"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 13:21:20 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 18 18:34:12 2006 -0500"
      },
      "message": "[PATCH] stop elv_unregister() from rogering other iosched\u0027s data, fix locking\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "30e9656cc340035e102fea46e1908689494b042d",
      "tree": "5fc623ccad5a1f5b09ebc4b7e8d7c6bec8e485ac",
      "parents": [
        "e5ea0a9fca5612808839dd4bcc41c46fc02451f9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Feb 08 01:01:31 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 08 07:52:58 2006 -0800"
      },
      "message": "[PATCH] block: implement elv_insert and use it (fix ordcolor flipping bug)\n\nq-\u003eordcolor must only be flipped on initial queueing of a hardbarrier\nrequest.\n\nConstructing ordered sequence and requeueing used to pass through\n__elv_add_request() which flips q-\u003eordcolor when it sees a barrier\nrequest.\n\nThis patch separates out elv_insert() from __elv_add_request() and uses\nelv_insert() when constructing ordered sequence and requeueing.\nelv_insert() inserts the given request at the specified position and\ndoes nothing else.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nAcked-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "238e7db9357bfe1ce3d6f7ac1e60e595e9d46b7b",
      "tree": "3688c8145e4bfa61a387137dafc966470569d2b8",
      "parents": [
        "9a7a67af8bb02106f0fb01dd9d237332f874be9a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sat Feb 04 23:27:38 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Feb 05 11:06:51 2006 -0800"
      },
      "message": "[PATCH] block: request_queue-\u003eordcolor must not be flipped on SOFTBARRIER\n\nq-\u003eordcolor must not be flipped on SOFTBARRIER.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nAcked-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "248d5ca5ed5feb7f1a68d213c0ff89c604a97179",
      "tree": "bf05775c34c326d11ec7789ba71071755032783d",
      "parents": [
        "5f00397644e01adfbebafb5d0ebc01eba522709d"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Tue Jan 24 10:09:14 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Jan 24 10:09:14 2006 +0100"
      },
      "message": "[BLOCK] elevator: allow default scheduler to potentially be modular\n\nJens has decided that allowing the default scheduler to be a module is\na bug, and should not be allowed under kconfig.  However, I find that\nscenario useful for debugging, and wish for the kernel to be able to\nhandle this situation without OOPSing, if I enable such an option in\nthe .config directly.  This patch dynamically checks for the presence\nof the compiled-in default, and falls back to no-op, emitting a\nsuitable error message, when the default is not available\n\nTested for a range of boot options on 2.6.16-rc1-mm2.\n\nSigned-off-by: Nate Diller \u003cnate.diller@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "5f00397644e01adfbebafb5d0ebc01eba522709d",
      "tree": "30fa87541eb60d74a0c6476a624d827c1da4dbce",
      "parents": [
        "53e86061b5bd4aece9bbb6b00b30720200596ecb"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Tue Jan 24 10:07:58 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Jan 24 10:07:58 2006 +0100"
      },
      "message": "[BLOCK] elevator: default choice selection\n\nMy previous default iosched patch did a poor job dealing with the\n\u0027elevator\u003d\u0027 boot-time option.  The old behavior falls back to the\ncompiled-in default if the requested one is not registered at boot\ntime.  This patch dynamically evaluates which default\nto use, and emits a suitable error message when the requested scheduler\nis not available.  It also does the \u0027as\u0027 -\u003e \u0027anticipatory\u0027 conversion\nbefore elevator registration, which along with a modified registration\nfunction, allows it to correctly indicate which default scheduler is\nin use.\n\nTested for a range of boot options on 2.6.16-rc1-mm2.\n\nSigned-off-by: Nate Diller \u003cnate.diller@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "b7bfcf7cbd58d2a64aa46f3b4bec921e346e604f",
      "tree": "e81e63cf1d7af208dc3ea996a417b528a6a8c0e1",
      "parents": [
        "752a3b79630a290cbbe4731e7c61b75d4fbebc5c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Jan 16 09:48:58 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Jan 16 09:48:58 2006 +0100"
      },
      "message": "[BLOCK] elevator: if specified scheduler is not found, fall back to default\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "752a3b79630a290cbbe4731e7c61b75d4fbebc5c",
      "tree": "21d1a7494890dce0903bf9e45ca6ec5059b6d739",
      "parents": [
        "5a225791374dca35bba871a007c78a3d0b14b559"
      ],
      "author": {
        "name": "Chuck Ebbert",
        "email": "76306.1226@compuserve.com",
        "time": "Mon Jan 16 09:47:37 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Mon Jan 16 09:47:37 2006 +0100"
      },
      "message": "[BLOCK] elevator: Make elevator\u003das work again for anticipatory\n\nSigned-off-by: Chuck Ebbert \u003c76306.1226@compuserve.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "1bc691d357c646700b9523d2aeca02847d3fb3f4",
      "tree": "430e13982f894c44e4a33dee188b3c718ec989ed",
      "parents": [
        "593195f9b2309693f27b402f34573f7920b82c3e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 12 15:39:26 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jan 12 09:05:39 2006 -0800"
      },
      "message": "[PATCH] fix queue stalling while barrier sequencing\n\nIf ordered tag isn\u0027t supported, request ordering for barrier\nsequencing is performed by queue draining, which basically hangs the\nrequest queue until elv_completed_request() reports completion of all\nprevious fs requests.\n\nThe condition check in elv_completed_request() was only performed for\nfs requests.  If a special request is queued between the last\nto-be-drained request and the barrier sequence, draining is never\ncompleted and the queue is stalled forever.\n\nThis patch moves the end-of-draining condition check such that it\u0027s\nperformed for all requests.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "769db45b73896a88d6b40e3e648dfc50a155ec93",
      "tree": "773ffec86ddf1ab3ddaf1de5959ec3b94807e395",
      "parents": [
        "1abee6d2d1b6366df96fce1d43eefd1819e1b055"
      ],
      "author": {
        "name": "Coywolf Qi Hunt",
        "email": "qiyong@fc-cn.com",
        "time": "Wed Dec 28 10:55:49 2005 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Jan 09 14:44:15 2006 +0100"
      },
      "message": "make elv_try_merge() static, kill the dead declaration of\n\nelv_try_last_merge().\n\nSigned-off-by: Coywolf Qi Hunt \u003cqiyong@fc-cn.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "797e7dbbee0a91fa1349192f18ad5c454997d876",
      "tree": "c0d5974f469dd2d3d4f9b15d87d201b61e248f54",
      "parents": [
        "52d9e675361261a1eb1716b02222ec6177ec342b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Jan 06 09:51:03 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Fri Jan 06 09:51:03 2006 +0100"
      },
      "message": "[BLOCK] reimplement handling of barrier request\n\nReimplement handling of barrier requests.\n\n* Flexible handling to deal with various capabilities of\n  target devices.\n* Retry support for falling back.\n* Tagged queues which don\u0027t support ordered tag can do ordered.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "8ffdc6550c47f75ca4e6c9f30a2a89063e035cf2",
      "tree": "a478b9acef5c66242a964154f7ad3a0ea750ef0f",
      "parents": [
        "64100099ed22f71cce656c5c2caecf5c9cf255dc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Jan 06 09:49:03 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Fri Jan 06 09:49:03 2006 +0100"
      },
      "message": "[BLOCK] add @uptodate to end_that_request_last() and @error to rq_end_io_fn()\n\nadd @uptodate argument to end_that_request_last() and @error\nto rq_end_io_fn().  there\u0027s no generic way to pass error code\nto request completion function, making generic error handling\nof non-fs request difficult (rq-\u003eerrors is driver-specific and\neach driver uses it differently).  this patch adds @uptodate\nto end_that_request_last() and @error to rq_end_io_fn().\n\nfor fs requests, this doesn\u0027t really matter, so just using the\nsame uptodate argument used in the last call to\nend_that_request_first() should suffice.  imho, this can also\nhelp the generic command-carrying request jens is working on.\n\nSigned-off-by: tejun heo \u003chtejun@gmail.com\u003e\nSigned-Off-By: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "eb97b73d75d5c9af7c78c05106de9e3fdc4455ab",
      "tree": "b5e87f732a72cb3cdff96f7116906ed6a2f9643e",
      "parents": [
        "811803c5572b296e0031e0099203de90d77c7bcf"
      ],
      "author": {
        "name": "Coywolf Qi Hunt",
        "email": "qiyong@fc-cn.com",
        "time": "Wed Nov 16 15:27:24 2005 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Nov 18 21:59:31 2005 +0100"
      },
      "message": "[BLOCK] new block/ directory comment tidy\n\nSome leftover comments referring to drivers/block that are now block/.\nThey don\u0027t add any information we don\u0027t already have, so kill them.\n\nSigned-off-by: Coywolf Qi Hunt \u003cqiyong@fc-cn.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "3beb2077125d8457118140653e75efc998ac6630",
      "tree": "130dd33c810471790554d21eab32f5f859715fd7",
      "parents": [
        "5a7c47eefb31f6b4982add7473ef3e551b058ea4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Nov 10 18:22:36 2005 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Nov 12 10:57:05 2005 +0100"
      },
      "message": "[BLOCK] elevator: elv_latter/former_request update\n\nWith generic dispatch queue update, implicit former/latter request\nhandling using rq-\u003equeuelist.prev/next doesn\u0027t work as expected\nanymore.  Also, the only iosched dependent on this feature was\nnoop-iosched and it has been reimplemented to have its own\nlatter/former methods.  This patch removes implicit former/latter\nhandling.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "be56123568072d223263a6a70a087d1e7faabb83",
      "tree": "e6044bff3c9dba3392dfe1a4b172d87081d55334",
      "parents": [
        "15853af9f07673680439b224519c692f1352b959"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Nov 10 08:55:01 2005 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Nov 12 10:56:21 2005 +0100"
      },
      "message": "[BLOCK] fix string handling in elv_iosched_store\n\nelv_iosched_store doesn\u0027t terminate string passed from userspace if\nit\u0027s too long.  Also, if the written length is zero (probably not\npossible), it accesses elevator_name[-1].  This patch fixes both bugs.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "15853af9f07673680439b224519c692f1352b959",
      "tree": "e6a8fc1cd34dec568883cd62102e1e626d9241d9",
      "parents": [
        "1b5ed5e1f1315e37380e55102f58bcae3344d2a7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Nov 10 08:52:05 2005 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Nov 12 10:56:06 2005 +0100"
      },
      "message": "[BLOCK] Implement elv_drain_elevator for improved switch error detection\n\nThis patch adds request_queue-\u003enr_sorted which keeps the number of\nrequests in the iosched and implement elv_drain_elevator which\nperforms forced dispatching.  elv_drain_elevator checks whether\niosched actually dispatches all requests it has and prints error\nmessage if it doesn\u0027t.  As buggy forced dispatching can result in\nwrong barrier operations, I think this extra check is worthwhile.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    }
  ],
  "next": "407df2aa29a33fe16f6ee4bac8cdfa414783b9f1"
}
