)]}'
{
  "log": [
    {
      "commit": "8ad6a56f5679a987bfeacad1bd818a2a381aa98e",
      "tree": "945959995bd601627b300db0971deb4648770718",
      "parents": [
        "09f40f98bfa2ac22a332a713629a2f8f92896834"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Wed Sep 14 09:31:01 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Sep 14 09:31:01 2011 +0200"
      },
      "message": "block: Don\u0027t check QUEUE_FLAG_SAME_COMP in __blk_complete_request\n\nIn __blk_complete_request, we check both QUEUE_FLAG_SAME_COMP and req-\u003ecpu\nto decide whether we should use req-\u003ecpu. Actually the user can also\nselect the complete cpu by either setting BIO_CPU_AFFINE or by calling\nbio_set_completion_cpu. Current solution makes these 2 ways don\u0027t work\nany more. So we\u0027d better just check req-\u003ecpu.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "bcf30e75b773b60379338768677a1301ef602ff9",
      "tree": "2e3e657fe4c5bbf65ffb16198e4a416429c8c173",
      "parents": [
        "c09c47caedc9854d59378d6e34c989e51cfdd2b4"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Aug 11 10:39:04 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Aug 11 10:39:04 2011 +0200"
      },
      "message": "block: improve rq_affinity placement\n\nThis patch reverts commit 35ae66e0a09ab70ed(block: Make rq_affinity \u003d 1\nwork as expected). The purpose is to avoid an unnecessary IPI.\nLet\u0027s take an example. My test box has cpu 0-7, one socket. Say request is\nadded from CPU 1, blk_complete_request() occurs at CPU 7. Without the reverted\npatch, softirq will be done at CPU 7. With it, an IPI will be directed to CPU\n0, and softirq will be done at CPU 0. In this case, doing softirq at CPU 0 and\nCPU 7 have no difference from cache sharing point view and we can avoid an\nipi if doing it in CPU 7.\nAn immediate concern is this is just like QUEUE_FLAG_SAME_FORCE, but actually\nnot. blk_complete_request() is running in interrupt handler, and currently\nI/O controller doesn\u0027t support multiple interrupts (I checked several LSI\ncards and AHCI), so only one CPU can run blk_complete_request(). This is\nstill quite different as QUEUE_FLAG_SAME_FORCE.\nSince only one CPU runs softirq, the only difference with below patch is\nsoftirq not always runs at the first CPU of a group.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "35ae66e0a09ab70ed588e65f26b4c725cd1656b6",
      "tree": "10f866f13a32109f7fa23ab8ab392fab759c9f6d",
      "parents": [
        "f41c53a569c4cf0556893ec9cfcf697d069799e1"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Fri Aug 05 09:37:10 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Aug 05 09:37:47 2011 +0200"
      },
      "message": "block: Make rq_affinity \u003d 1 work as expected\n\nCommit 5757a6d76c introduced a new rq_affinity \u003d 2 so as to make\nthe request completed in the __make_request cpu. But it makes the\nold rq_affinity \u003d 1 not work any more. The root cause is that\nif the \u0027cpu\u0027 and \u0027req-\u003ecpu\u0027 is in the same group and cpu !\u003d req-\u003ecpu,\nccpu will be the same as group_cpu, so the completion will be\nexcuted in the \u0027cpu\u0027 not \u0027group_cpu\u0027.\n\nThis patch fix problem by simpling removing group_cpu and the codes\nare more explicit now. If ccpu \u003d\u003d cpu, we complete in cpu, otherwise\nwe raise_blk_irq to ccpu.\n\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Roland Dreier \u003croland@purestorage.com\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Jens Axboe \u003cjaxboe@fusionio.com\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nReviewed-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5757a6d76cdf6dda2a492c09b985c015e86779b1",
      "tree": "6356a6353639eb473dd917a1b2062f9e7e20de22",
      "parents": [
        "ef3230880abd36553ab442363d3c9a0661f00769"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jul 23 20:44:25 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Jul 23 20:44:25 2011 +0200"
      },
      "message": "block: strict rq_affinity\n\nSome systems benefit from completions always being steered to the strict\nrequester cpu rather than the looser \"per-socket\" steering that\nblk_cpu_to_group() attempts by default. This is because the first\nCPU in the group mask ends up being completely overloaded with work,\nwhile the others (including the original submitter) has power left\nto spare.\n\nAllow the strict mode to be set by writing \u00272\u0027 to the sysfs control\nfile. This is identical to the scheme used for the nomerges file,\nwhere \u00272\u0027 is a more aggressive setting than just being turned on.\n\necho 2 \u003e /sys/block/\u003cbdev\u003e/queue/rq_affinity\n\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Roland Dreier \u003croland@purestorage.com\u003e\nTested-by: Dave Jiang \u003cdave.jiang@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "6e2756376c706e4da3454a272947983f92e80a7e",
      "tree": "3a54c5dd97921ae869bb6122a69af42d9161ee3e",
      "parents": [
        "8969a5ede0f9e17da4b943712429aef2c9bcd82b"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Feb 25 13:59:48 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 14:13:44 2009 +0100"
      },
      "message": "generic-ipi: remove CSD_FLAG_WAIT\n\nOleg noticed that we don\u0027t strictly need CSD_FLAG_WAIT, rework\nthe code so that we can use CSD_FLAG_LOCK for both purposes.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3c18ce71af754cefae75103dbae28817e04b2db4",
      "tree": "74e9ccf6478972c23f63c3304594dccaba7cd35b",
      "parents": [
        "18af8b2ca34b831c32c6fa01e7ce33143c33bb63"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Wed Dec 10 15:47:33 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:29:51 2008 +0100"
      },
      "message": "block: make blk_softirq_init() static\n\nSparse asked whether these could be static.\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "581d4e28d9195aa8b2231383dbabc288988d615e",
      "tree": "093bcac9a538ef67edcf91826f7532bdb88e6248",
      "parents": [
        "0a0d96b03a1f3bfd6bc3ea08008699e8e59fccd9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Sep 14 05:56:33 2008 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:17 2008 +0200"
      },
      "message": "block: add fault injection mechanism for faking request timeouts\n\nOnly works for the generic request timer handling. Allows one to\nsporadically ignore request completions, thus exercising the timeout\nhandling.\n\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": "c7c22e4d5c1fdebfac4dba76de7d0338c2b0d832",
      "tree": "ecc3d2517b3471ccc35d4cb4e3b48d4b57205061",
      "parents": [
        "18887ad910e56066233a07fd3cfb2fa11338b782"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sat Sep 13 20:26:01 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:09 2008 +0200"
      },
      "message": "block: add support for IO CPU affinity\n\nThis patch adds support for controlling the IO completion CPU of\neither all requests on a queue, or on a per-request basis. We export\na sysfs variable (rq_affinity) which, if set, migrates completions\nof requests to the CPU that originally submitted it. A bio helper\n(bio_set_completion_cpu()) is also added, so that queuers can ask\nfor completion on that specific CPU.\n\nIn testing, this has been show to cut the system time by as much\nas 20-40% on synthetic workloads where CPU affinity is desired.\n\nThis requires a little help from the architecture, so it\u0027ll only\nwork as designed for archs that are using the new generic smp\nhelper infrastructure.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b646fc59b332ef307895558c9cd1359dc2d25813",
      "tree": "47d703053144c099abee8326e52ed0d3b05920c6",
      "parents": [
        "0835da67c11e879ed5dc23160934d8970470a2ce"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jul 28 13:06:00 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:09 2008 +0200"
      },
      "message": "block: split softirq handling into blk-softirq.c\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    }
  ]
}
