)]}'
{
  "log": [
    {
      "commit": "f7d7b7a7a3db6526a84ea755c1c54a051e9a52de",
      "tree": "4d02c3abfca1c6175527473dff12769b09b630bb",
      "parents": [
        "8bff7c6b0f63c7ee9c5e3a076338d74125b8debb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Sep 25 11:37:50 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:19 2008 +0200"
      },
      "message": "block: as/cfq ssd idle check update\n\nWe really need to know about the hardware tagging support as well,\nsince if the SSD does not do tagging then we still want to idle.\nOtherwise have the same dependent sync IO vs flooding async IO\nproblem as on rotational media.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a68bbddba486020c9c74825ce90c4c1ec463e0e8",
      "tree": "ce0acea1e609185968310316d3d1ac6f730db983",
      "parents": [
        "9e49184c82e9ec3ab4d45f9ea5a17ccaf43869f0"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 24 13:03:33 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:19 2008 +0200"
      },
      "message": "block: add queue flag for SSD/non-rotational devices\n\nWe don\u0027t want to idle in AS/CFQ if the device doesn\u0027t have a seek\npenalty. So add a QUEUE_FLAG_NONROT to indicate a non-rotational\ndevice, low level drivers should set this flag upon discovery of\nan SSD or similar device type.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "45333d5a31296d0af886d94f1d08f128231cab8e",
      "tree": "ea5b1afb70fb17935128bac6df588e6b5ae764b4",
      "parents": [
        "605401618ce4409045bc4db86e88d4b38f2ad585"
      ],
      "author": {
        "name": "Aaron Carroll",
        "email": "aaronc@gelato.unsw.edu.au",
        "time": "Tue Aug 26 15:52:36 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:09 2008 +0200"
      },
      "message": "cfq-iosched: fix queue depth detection\n\nCFQ\u0027s detection of queueing devices assumes a non-queuing device and detects\nif the queue depth reaches a certain threshold.  Under some workloads (e.g.\nsynchronous reads), CFQ effectively forces a unit queue depth, thus defeating\nthe detection logic.  This leads to poor performance on queuing hardware,\nsince the idle window remains enabled.\n\nThis patch inverts the sense of the logic: assume a queuing-capable device,\nand detect if the depth does not exceed the threshold.\n\nSigned-off-by: Aaron Carroll \u003caaronc@gelato.unsw.edu.au\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "18887ad910e56066233a07fd3cfb2fa11338b782",
      "tree": "a8d14ba47f15c58e36b26c82fa4ae4ad7526c80a",
      "parents": [
        "b646fc59b332ef307895558c9cd1359dc2d25813"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jul 28 13:08:45 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:09 2008 +0200"
      },
      "message": "block: make kblockd_schedule_work() take the queue as parameter\n\nPreparatory patch for checking queuing affinity.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c265a7f41706cee20508de5b4a919214cfd7a11b",
      "tree": "b7738a542ae9bd1cc261a3a96513a8298fa45945",
      "parents": [
        "0b07de85a76e1346e675f0e98437378932473df7"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 26 13:49:33 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 03 13:21:14 2008 +0200"
      },
      "message": "cfq-iosched: get rid of enable_idle being unused warning\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7b679138b3237a9a3d45a4fda23a58ac79cd279c",
      "tree": "4afe2fa4805e4b2211842abf7829ee4fb9ee9acf",
      "parents": [
        "863fddcb4b0caee4c2d5bd6e3b28779920516db3"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 30 12:23:07 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 03 13:21:12 2008 +0200"
      },
      "message": "cfq-iosched: add message logging through blktrace\n\nNow that blktrace has the ability to carry arbitrary messages in\nits stream, use that for some CFQ logging.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9a11b4ed0e7c44bca7c939aa544c3c47aae40c12",
      "tree": "438312dda8a63e0704c2ddbdea958f0d729c6c7e",
      "parents": [
        "c461a973118346d5c103aaaddd62e53939fd7c67"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu May 29 09:32:08 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 03 13:21:12 2008 +0200"
      },
      "message": "cfq-iosched: properly protect ioc_gone and ioc count\n\nIf we have multiple tasks freeing cfq_io_contexts when cfq-iosched\nis being unloaded, we could complete() ioc_gone twice. Fix that by\nprotecting ioc_gone complete() and clearing with a spinlock for\njust that purpose. Doesn\u0027t matter from a performance perspective,\nsince it\u0027ll only enter that path when ioc_gone !\u003d NULL (when cfq-iosched\nis being rmmod\u0027ed).\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d6de8be711b28049a5cb93c954722c311c7d3f7f",
      "tree": "001dfc1147a64bd05798e29b15ce5d995486a6fa",
      "parents": [
        "64565911cdb57c2f512a9715b985b5617402cc67"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 28 14:46:59 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 28 14:49:28 2008 +0200"
      },
      "message": "cfq-iosched: fix RCU problem in cfq_cic_lookup()\n\ncfq_cic_lookup() needs to properly protect ioc-\u003eioc_data before\ndereferencing it and also exclude updaters of ioc-\u003eioc_data as well.\n\nAlso add a number of comments documenting why the existing RCU usage\nis OK.\n\nThanks a lot to \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e for\nreview and comments!\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "be754d2c2161c0cce11d62727016985ecb76831b",
      "tree": "4e8c62060ca8fc0ff1ab34bd2d3667581f8208b3",
      "parents": [
        "05caf8dbc1880415df3378cfd114d832c9618b60"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Fri May 23 06:52:00 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 28 14:49:27 2008 +0200"
      },
      "message": "block: reorder cfq_queue to save space on 64bit builds\n\nsaves 8 bytes of padding \u0026 increases objects/slab from 30 to 32 on my\nAMD64 config\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6d63c275572d1e6f00d4fa154f16fbb0d8c2d2bf",
      "tree": "715f4bab902f117c958a929e44cd0b2257e3be29",
      "parents": [
        "dbaf2c003e151ad9231778819b0977f95e20e06f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 07 09:51:23 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 07 09:51:23 2008 +0200"
      },
      "message": "cfq-iosched: make io priorities inherit CPU scheduling class as well as nice\n\nWe currently set all processes to the best-effort scheduling class,\nregardless of what CPU scheduling class they belong to. Improve that\nso that we correctly track idle and rt scheduling classes as well.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "07416d29bcf608257f1e5280642dcbe0021518a3",
      "tree": "6b88b2b043cac10b34234320c68e06848c00127c",
      "parents": [
        "aa94b5371f6f898558d9fa5690cc6e4bf917a572"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 07 09:17:12 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 07 09:28:57 2008 +0200"
      },
      "message": "cfq-iosched: fix RCU race in the cfq io_context destructor handling\n\nput_io_context() drops the RCU read lock before calling into cfq_dtor(),\nhowever we need to hold off freeing there before grabbing and\ndereferencing the first object on the list.\n\nSo extend the rcu_read_lock() scope to cover the calling of cfq_dtor(),\nand optimize cfq_free_io_context() to use a new variant for\ncall_for_each_cic() that assumes the RCU read lock is already held.\n\nHit in the wild by Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4faa3c8150c1d4f7b38d962eda7851083e218e3f",
      "tree": "a9110e7d49bc5f76d51d437a684844b47c31be3a",
      "parents": [
        "8191ecd1d14c6914c660dfa007154860a7908857"
      ],
      "author": {
        "name": "Fabio Checconi",
        "email": "fabio@gandalf.sssup.i",
        "time": "Thu Apr 10 08:28:01 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 10 08:28:01 2008 +0200"
      },
      "message": "cfq-iosched: do not leak ioc_data across iosched switches\n\nWhen switching scheduler from cfq, cfq_exit_queue() does not clear\nioc-\u003eioc_data, leaving a dangling pointer that can deceive the following\nlookups when the iosched is switched back to cfq.  The pattern that can\ntrigger that is the following:\n\n    - elevator switch from cfq to something else;\n    - module unloading, with elv_unregister() that calls cfq_free_io_context()\n      on ioc freeing the cic (via the .trim op);\n    - module gets reloaded and the elevator switches back to cfq;\n    - reallocation of a cic at the same address as before (with a valid key).\n\nTo fix it just assign NULL to ioc_data in __cfq_exit_single_io_context(),\nthat is called from the regular exit path and from the elevator switching\ncode.  The only path that frees a cic and is not covered is the error handling\none, but cic\u0027s freed in this way are never cached in ioc_data.\n\nSigned-off-by: Fabio Checconi \u003cfabio@gandalf.sssup.it\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "34e6bbf23c8f43e8713d9bd092680f1660494b4a",
      "tree": "908e97ac3d43882cb42bf57c41926852d3bc2f6e",
      "parents": [
        "00d61e3e8c12d5f395b167856d2b3c430816afb0"
      ],
      "author": {
        "name": "Fabio Checconi",
        "email": "fabio@gandalf.sssup.i",
        "time": "Wed Apr 02 14:31:02 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 02 15:42:20 2008 +0200"
      },
      "message": "cfq-iosched: fix rcu freeing of cfq io contexts\n\nSLAB_DESTROY_BY_RCU is not a direct substitute for normal call_rcu()\nfreeing, since it\u0027ll page freeing but NOT object freeing. So change\ncfq to do the freeing on its own.\n\nSigned-off-by: Fabio Checconi \u003cfabio@gandalf.sssup.it\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ffc4e7595734cf768fa60cea8a4d545dfef8231a",
      "tree": "9b95aca67ea7c9e87254da501f73cca64504051d",
      "parents": [
        "84e9e03c55c2456799ab19f1d577e72f721fdd39"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Feb 19 10:02:29 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Feb 19 10:04:00 2008 +0100"
      },
      "message": "cfq-iosched: add hlist for browsing parallel to the radix tree\n\nIt\u0027s cumbersome to browse a radix tree from start to finish, especially\nsince we modify keys when a process exits. So add a hlist for the single\npurpose of browsing over all known cfq_io_contexts, used for exit,\nio prio change, etc.\n\nThis fixes http://bugzilla.kernel.org/show_bug.cgi?id\u003d9948\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fe094d98e79351344c9e0e2c1446794240d247a4",
      "tree": "6ca11d4d0c2b0c338159b02a412c8bb9fd08f2a6",
      "parents": [
        "6728cb0e6343d4068ccec13f07212e6382d3ff33"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jan 31 13:08:54 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 01 09:26:33 2008 +0100"
      },
      "message": "cfq-iosched: make checkpatch compliant\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "febffd61816ef6d4f84189468c1d47f1df55921e",
      "tree": "96654c4e1d41bd3f4d5f685eee7dd0a3505e7092",
      "parents": [
        "0871714e08fed7ba66cadad11b2e4f85a9dc9b96"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 28 13:19:43 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 28 13:19:43 2008 +0100"
      },
      "message": "cfq-iosched: kill some big inlines\n\nUse of inlines were a bit over the top, trim them down a bit.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0871714e08fed7ba66cadad11b2e4f85a9dc9b96",
      "tree": "3b0bcb433294bb144b778ae97296ad4d8626ad47",
      "parents": [
        "fadad878cc0640cc9cd5569998bf54b693f7b38b"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 28 11:38:15 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 28 11:38:15 2008 +0100"
      },
      "message": "cfq-iosched: relax IOPRIO_CLASS_IDLE restrictions\n\nCurrently you must be root to set idle io prio class on a process. This\nis due to the fact that the idle class is implemented as a true idle\nclass, meaning that it will not make progress if someone else is\nrequesting disk access. Unfortunately this means that it opens DOS\nopportunities by locking down file system resources, hence it is root\nonly at the moment.\n\nThis patch relaxes the idle class a little, by removing the truly idle\npart (which entals a grace period with associated timer). The\nmodifications make the idle class as close to zero impact as can be done\nwhile still guarenteeing progress. This means we can relax the root only\ncriteria as well.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4ac845a2e9a816ed5a7b301f56dcc0a3d0b1ba4d",
      "tree": "602f15808d0f3dcdfcd7cc4491b2cc2ccd266fd2",
      "parents": [
        "66dac98ed0de7a1125fb0dd7907f238f6b9d2f60"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jan 24 08:44:49 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 28 10:50:33 2008 +0100"
      },
      "message": "block: cfq: make the io contect sharing lockless\n\nThe io context sharing introduced a per-ioc spinlock, that would protect\nthe cfq io context lookup. That is a regression from the original, since\nwe never needed any locking there because the ioc/cic were process private.\n\nThe cic lookup is changed from an rbtree construct to a radix tree, which\nwe can then use RCU to make the reader side lockless. That is the performance\ncritical path, modifying the radix tree is only done on process creation\n(when that process first does IO, actually) and on process exit (if that\nprocess has done IO).\n\nAs it so happens, radix trees are also much faster for this type of\nlookup where the key is a pointer. It\u0027s a very sparse tree.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "66dac98ed0de7a1125fb0dd7907f238f6b9d2f60",
      "tree": "321184ce78e41f2cf25c3154fe320dd5504f57bc",
      "parents": [
        "d38ecf935fcb10264a6bc190855d9595165e6eeb"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "KNikanth@novell.com",
        "time": "Tue Nov 27 12:47:04 2007 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 28 10:50:32 2008 +0100"
      },
      "message": "io_context sharing - cfq changes\n\nchanges in the cfq for io_context sharing\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fd0928df98b9578be8a786ac0cb78a47a5e17a20",
      "tree": "70a34cf207bea1bec28e59cf0dba7d20e7f8b0f1",
      "parents": [
        "91525300baf162e83e923b09ca286f9205e21522"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jan 24 08:52:45 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 28 10:50:29 2008 +0100"
      },
      "message": "ioprio: move io priority from task_struct to io_context\n\nThis is where it belongs and then it doesn\u0027t take up space for a\nprocess that doesn\u0027t do IO.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\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": "0e7be9edb9134f833278c381b6feabb54b875208",
      "tree": "a4eca4110f1b672f78191c8a8f92086b1b6ade7a",
      "parents": [
        "b70c864d3ce706571d2f3cac1d35d4fba01d6072"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Nov 07 13:51:35 2007 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Nov 07 13:51:35 2007 +0100"
      },
      "message": "cfq_idle_class_timer: add paranoid checks for jiffies overflow\n\nIn theory, if the queue was idle long enough, cfq_idle_class_timer may have\na false (and very long) timeout because jiffies can wrap into the past wrt\n-\u003elast_end_request.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b70c864d3ce706571d2f3cac1d35d4fba01d6072",
      "tree": "fbdab2c4ddf484e5344b8cc00e4bc24b6e443191",
      "parents": [
        "2389d1ef172fc9df01f58265a436919d233fbc27"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Nov 07 09:46:13 2007 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Nov 07 09:46:13 2007 +0100"
      },
      "message": "cfq: fix IOPRIO_CLASS_IDLE delays\n\nAfter the fresh boot:\n\n\tionice -c3 -p $$\n\techo cfq \u003e\u003e /sys/block/XXX/queue/scheduler\n\tdd if\u003d/dev/XXX of\u003d/dev/null bs\u003d512 count\u003d1\n\nNow dd hangs in D state and the queue is completely stalled for approximately\nINITIAL_JIFFIES + CFQ_IDLE_GRACE jiffies. This is because cfq_init_queue()\nforgets to initialize cfq_data-\u003elast_end_request.\n\n(I guess this patch is not complete, overflow is still possible)\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2389d1ef172fc9df01f58265a436919d233fbc27",
      "tree": "a59a1768a953ba27cf370c6634473679580c505d",
      "parents": [
        "dbeeb816e805091e7cfc03baf36dc40b4adb2bbd"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Mon Nov 05 08:58:05 2007 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Nov 07 09:45:00 2007 +0100"
      },
      "message": "cfq: fix IOPRIO_CLASS_IDLE accounting\n\nSpotted by Nick \u003cgentuu@gmail.com\u003e, hopefully can explain the second trace in\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d9180.\n\nIf -\u003easync_idle_cfqq !\u003d NULL cfq_put_async_queues() puts it IOPRIO_BE_NR times\nin a loop. Fix this.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0a0836a09ca7a27341703ef154c82e2e7f3e96f4",
      "tree": "d4fb7c2a848e7160945405dd3d1bdcf9ae6efd33",
      "parents": [
        "abbeb88d00bef294ce661a9229c1dc31be064545"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Oct 23 15:08:21 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Oct 29 11:33:05 2007 +0100"
      },
      "message": "cfq_get_queue: fix possible NULL pointer access\n\ncfq_get_queue()-\u003ecfq_find_alloc_queue() can fail, check the returned value.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\n\nNote that this isn\u0027t a bug at the moment, since the regular IO path\ndoes not call this path without __GFP_WAIT set. However, it could be a\nfuture bug, so I\u0027ve applied it.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4310864b9d17714e64446bfb8bc7dbcb96454475",
      "tree": "b3a1efec204dc7eeb05ccdb28a954efe6ec8f621",
      "parents": [
        "b238b3d4be04d3acf1f86ff8ad0b0e803def67ff"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Oct 23 15:08:18 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Oct 29 11:33:05 2007 +0100"
      },
      "message": "cfq_exit_queue() should cancel cfq_data-\u003eunplug_work\n\nSpotted by Nick \u003cgentuu@gmail.com\u003e, perhaps explains the first trace in\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d9180.\n\ncfq_exit_queue() should cancel cfqd-\u003eunplug_work before freeing cfqd.\nblk_sync_queue() seems unneeded, removed.\n\nQ: why cfq_exit_queue() calls cfq_shutdown_timer_wq() twice?\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\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": "8350163a90f6003c9e60e8ebc0e00f654657645f",
      "tree": "8b6f2fe6c36e6b7e542530363f253a74cfc12e98",
      "parents": [
        "c2dea2d1fdbce86942dba0a968c523d8b7858bb5"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Fri Jul 20 10:07:50 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 20 10:07:50 2007 +0200"
      },
      "message": "cfq: Write-only stuff in CFQ data structures\n\nThere are some leftover bits from the task cooperator patch, that was\nyanked out again. While it will get reintroduced, no point in having\nthis write-only stuff in the tree. So yank it.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c2dea2d1fdbce86942dba0a968c523d8b7858bb5",
      "tree": "c876b93785ee3b25c341be0dd5080a5176f27736",
      "parents": [
        "9a79b2274186fade17134929d4f85b70d59a3840"
      ],
      "author": {
        "name": "Vasily Tarasov",
        "email": "vtaras@openvz.org",
        "time": "Fri Jul 20 10:06:38 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 20 10:06:38 2007 +0200"
      },
      "message": "cfq: async queue allocation per priority\n\nIf we have two processes with different ioprio_class, but the same\nioprio_data, their async requests will fall into the same queue. I guess\nsuch behavior is not expected, because it\u0027s not right to put real-time\nrequests and best-effort requests in the same queue.\n\nThe attached patch fixes the problem by introducing additional *cfqq\nfields on cfqd, pointing to per-(class,priority) async queues.\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": "15c31be4d5bd2402c6f5a288d56a24edc9252b71",
      "tree": "0fca6e97186080d83ff3f36bb359bcb4ef06a9e2",
      "parents": [
        "72d3a38ee083a96c09032e608a4c7e047ce26760"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 10 13:43:25 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 10 13:43:25 2007 +0200"
      },
      "message": "cfq-iosched: fix async queue behaviour\n\nWith the cfq_queue hash removal, we inadvertently got rid of the\nasync queue sharing. This was not intentional, in fact CFQ purposely\nshares the async queue per priority level to get good merging for\nasync writes.\n\nSo put some logic in cfq_get_queue() to track the shared queues.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0a31bd5f2bbb6473ef9d24f0063ca91cfa678b64",
      "tree": "a945e829bf6bf7a93bf844b2ee9f2a3a2fa17c5d",
      "parents": [
        "5af60839909b8e3b28ca7cd7912fa0b23475617f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "KMEM_CACHE(): simplify slab cache creation\n\nThis patch provides a new macro\n\nKMEM_CACHE(\u003cstruct\u003e, \u003cflags\u003e)\n\nto simplify slab creation. KMEM_CACHE creates a slab with the name of the\nstruct, with the size of the struct and with the alignment of the struct.\nAdditional slab flags may be specified if necessary.\n\nExample\n\nstruct test_slab {\n\tint a,b,c;\n\tstruct list_head;\n} __cacheline_aligned_in_smp;\n\ntest_slab_cache \u003d KMEM_CACHE(test_slab, SLAB_PANIC)\n\nwill create a new slab named \"test_slab\" of the size sizeof(struct\ntest_slab) and aligned to the alignment of test slab.  If it fails then we\npanic.\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": "597bc485d6906359ad667fc8ead5e5f0ede03a0a",
      "tree": "f59303df8b17f51781adedc6320c9a14130a650e",
      "parents": [
        "4e521c27eee33cebd618c26649e2c93803004647"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 24 21:23:53 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:23 2007 +0200"
      },
      "message": "cfq-iosched: speedup cic rb lookup\n\nWe often lookup the same queue many times in succession, so cache\nthe last looked up queue to avoid browsing the rbtree.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "91fac317a34859986a2359a5a5c0e37dc17a9c3d",
      "tree": "353b8e5d3415e6244b8d2de67020bbbc94f2032c",
      "parents": [
        "cc19747977824ece6aa1c56a29e974fef5ec2b32"
      ],
      "author": {
        "name": "Vasily Tarasov",
        "email": "vtaras@openvz.org",
        "time": "Wed Apr 25 12:29:51 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:23 2007 +0200"
      },
      "message": "cfq-iosched: get rid of cfqq hash\n\ncfq hash is no more necessary.  We always can get cfqq from io context.\ncfq_get_io_context_noalloc() function is introduced, because we don\u0027t\nwant to allocate cic on merging and checking may_queue.  In order to\nidentify sync queue we\u0027ve used hash key \u003d CFQ_KEY_ASYNC. Since hash is\neliminated we need to use other criterion: sync flag for queue is added.\nIn all places where we dig in rb_tree we\u0027re in current context, so no\nadditional locking is required.\n\nAdvantages of this patch: no additional memory for hash, no seeking in\nhash, code is cleaner. But it is necessary now to seek cic in per-ioc\nrbtree, but it is faster:\n- most processes work only with few devices\n- most systems have only few block devices\n- it is a rb-tree\n\nSigned-off-by: Vasily Tarasov \u003cvtaras@openvz.org\u003e\n\nChanges by me:\n\n- Merge into CFQ devel branch\n- Get rid of cfq_get_io_context_noalloc()\n- Fix various bugs with dereferencing cic-\u003ecfqq[] with offset other\n  than 0 or 1.\n- Fix bug in cfqq setup, is_sync condition was reversed.\n- Fix bug where only bio_sync() is used, we need to check for a READ too\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cc19747977824ece6aa1c56a29e974fef5ec2b32",
      "tree": "bbb07231a1323ddd007a11eb2683188492d2e26e",
      "parents": [
        "3ed9a2965c47636bc0ebafab31a39f1c105492ca"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 20 20:45:39 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:23 2007 +0200"
      },
      "message": "cfq-iosched: tighten queue request overlap condition\n\nFor tagged devices, allow overlap of requests if the idle window\nisn\u0027t enabled on the current active queue.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "3ed9a2965c47636bc0ebafab31a39f1c105492ca",
      "tree": "952c5f93f93b88c747f6e1fb15b87a973e7c5b8b",
      "parents": [
        "1be92f2fc7b563db3a8909d2d1c6a6520aeca323"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 23 08:33:33 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:23 2007 +0200"
      },
      "message": "cfq-iosched: improve sync vs async workloads\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1be92f2fc7b563db3a8909d2d1c6a6520aeca323",
      "tree": "b3a7fa91a9483315cd86f423925946b3c38cc3c7",
      "parents": [
        "20e493a8d03b3b2f51b619a453f7bbbebedd6bda"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 19 14:32:26 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:22 2007 +0200"
      },
      "message": "cfq-iosched: never allow an async queue idling\n\nWe don\u0027t enable it by default, don\u0027t let it get enabled during\nruntime.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "20e493a8d03b3b2f51b619a453f7bbbebedd6bda",
      "tree": "766d1cccd84acac99a806f181a6f68682f5f0aec",
      "parents": [
        "6084cdda0ea4561feb68e00a8c50068bba98006d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 23 08:26:36 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:22 2007 +0200"
      },
      "message": "cfq-iosched: get rid of -\u003edispatch_slice\n\nWe can track it fairly accurately locally, let the slice handling\ntake care of the rest.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6084cdda0ea4561feb68e00a8c50068bba98006d",
      "tree": "dbd67a2f12793c279bab18931389b9e45f33c3f7",
      "parents": [
        "edd75ffd92a5b7f6244431e8ff6c32b846f9ba86"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 23 08:25:00 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:22 2007 +0200"
      },
      "message": "cfq-iosched: don\u0027t pass unused preemption variable around\n\nWe don\u0027t use it anymore in the slice expiry handling.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "edd75ffd92a5b7f6244431e8ff6c32b846f9ba86",
      "tree": "a6b8d9be552f7eeb36a66693339d3ea840f2904e",
      "parents": [
        "67e6b49e39e9b9bf5ce1351ef21dad391856183f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 19 12:03:34 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:22 2007 +0200"
      },
      "message": "cfq-iosched: get rid of -\u003ecur_rr and -\u003ecfq_list\n\nIt\u0027s only used for preemption now that the IDLE and RT queues also\nuse the rbtree. If we pass an \u0027add_front\u0027 variable to\ncfq_service_tree_add(), we can set -\u003erb_key to 0 to force insertion\nat the front of the tree.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "67e6b49e39e9b9bf5ce1351ef21dad391856183f",
      "tree": "d76faecedf52358b30d2e4de8cc0d0f0946763a3",
      "parents": [
        "498d3aa2b4f791059acd8c942ee8fa15c2ce36c2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 20 14:18:00 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:22 2007 +0200"
      },
      "message": "cfq-iosched: slice offset should take ioprio into account\n\nUse the max_slice-cur_slice as the multipler for the insertion offset.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "498d3aa2b4f791059acd8c942ee8fa15c2ce36c2",
      "tree": "4223b993fe6eb11a0ab57cec3961c237605362a2",
      "parents": [
        "67060e37994444ee9c0bd2413c8baa6cc58e7adb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 26 12:54:48 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:22 2007 +0200"
      },
      "message": "[PATCH] cfq-iosched: style cleanups and comments\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "67060e37994444ee9c0bd2413c8baa6cc58e7adb",
      "tree": "bdb012bf9a3527c73cc73fc43069c0abeb767b75",
      "parents": [
        "0c534e0a463e2eeafc97ba25ab23c14f3cdf2bdb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 18 20:13:32 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:22 2007 +0200"
      },
      "message": "cfq-iosched: sort IDLE queues into the rbtree\n\nSame treatment as the RT conversion, just put the sorted idle\nbranch at the end of the tree.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0c534e0a463e2eeafc97ba25ab23c14f3cdf2bdb",
      "tree": "20f3b12b05a853e9e52eaabead16a195d519501b",
      "parents": [
        "cc09e2990fdd96d25fdbb9db6bc9b4c82d9e4a3c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 18 20:01:57 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:22 2007 +0200"
      },
      "message": "cfq-iosched: sort RT queues into the rbtree\n\nCurrently CFQ does a linked insert into the current list for RT\nqueues. We can just factor the class into the rb insertion,\nand then we don\u0027t have to treat RT queues in a special way. It\u0027s\nfaster, too.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cc09e2990fdd96d25fdbb9db6bc9b4c82d9e4a3c",
      "tree": "89c538c6182335592a981ded03fc120b616aef47",
      "parents": [
        "d9e7620e60bc6648c3dcabbc8d1a320b69c846f9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 26 12:53:50 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:21 2007 +0200"
      },
      "message": "[PATCH] cfq-iosched: speed up rbtree handling\n\nFor cases where the rbtree is mainly used for sorting and min retrieval,\na nice speedup of the rbtree code is to maintain a cache of the leftmost\nnode in the tree.\n\nAlso spotted in the CFS CPU scheduler code.\n\nImproved by Alan D. Brunelle \u003cAlan.Brunelle@hp.com\u003e by updating the\nleftmost hint in cfq_rb_first() if it isn\u0027t set, instead of only\nupdating it on insert.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d9e7620e60bc6648c3dcabbc8d1a320b69c846f9",
      "tree": "450d0f92533184d85ac00ab1625460fe0be4cda7",
      "parents": [
        "1afba0451c83cbff622a08f2d86fbb2e680dfd5f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 20 14:27:50 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:21 2007 +0200"
      },
      "message": "cfq-iosched: rework the whole round-robin list concept\n\nDrawing on some inspiration from the CFS CPU scheduler design, overhaul\nthe pending cfq_queue concept list management. Currently CFQ uses a\ndoubly linked list per priority level for sorting and service uses.\nKill those lists and maintain an rbtree of cfq_queue\u0027s, sorted by when\nto service them.\n\nThis unfortunately means that the ionice levels aren\u0027t as strong\nanymore, will work on improving those later. We only scale the slice\ntime now, not the number of times we service. This means that latency\nis better (for all priority levels), but that the distinction between\nthe highest and lower levels aren\u0027t as big.\n\nThe diffstat speaks for itself.\n\n cfq-iosched.c |  363 +++++++++++++++++---------------------------------\n 1 file changed, 125 insertions(+), 238 deletions(-)\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1afba0451c83cbff622a08f2d86fbb2e680dfd5f",
      "tree": "7da7b97114b73d6d9788cf8663cd3aa28433c0dd",
      "parents": [
        "6d048f5310aa2dda2b5acd947eab3598c25e269f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 17 12:47:55 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:21 2007 +0200"
      },
      "message": "cfq-iosched: minor updates\n\n- Move the queue_new flag clear to when the queue is selected\n- Only select the non-first queue in cfq_get_best_queue(), if there\u0027s\n  a substantial difference between the best and first.\n- Get rid of -\u003ebusy_rr\n- Only select a close cooperator, if the current queue is known to take\n  a while to \"think\".\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6d048f5310aa2dda2b5acd947eab3598c25e269f",
      "tree": "4f0dbcd21b82dd015a908139fb4de3601b3d834a",
      "parents": [
        "1e3335de05da3dfbe48b8caa03db1834a2133256"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 25 12:44:27 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:21 2007 +0200"
      },
      "message": "cfq-iosched: development update\n\n- Implement logic for detecting cooperating processes, so we\n  choose the best available queue whenever possible.\n\n- Improve residual slice time accounting.\n\n- Remove dead code: we no longer see async requests coming in on\n  sync queues. That part was removed a long time ago. That means\n  that we can also remove the difference between cfq_cfqq_sync()\n  and cfq_cfqq_class_sync(), they are now indentical. And we can\n  kill the on_dispatch array, just make it a counter.\n\n- Allow a process to go into the current list, if it hasn\u0027t been\n  serviced in this scheduler tick yet.\n\nPossible future improvements including caching the cfqq lookup\nin cfq_close_cooperator(), so we don\u0027t have to look it up twice.\ncfq_get_best_queue() should just use that last decision instead\nof doing it again.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1e3335de05da3dfbe48b8caa03db1834a2133256",
      "tree": "3783ea1ef788f564a78754906dc508ac66595b75",
      "parents": [
        "b9099ff63c75216d6ca10bce5a1abcd9293c27e6"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Feb 14 19:59:49 2007 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Apr 30 09:01:21 2007 +0200"
      },
      "message": "cfq-iosched: improve preemption for cooperating tasks\n\nWhen testing the syslet async io approach, I discovered that CFQ\nsometimes didn\u0027t perform as well as expected. cfq_should_preempt()\nneeds to better check for cooperating tasks, so fix that by allowing\npreemption of an equal priority queue if the recently queued request\nis as good a candidate for IO as the one we are currently waiting for.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5044eed48886b105a123333fe7ca97c6bd496120",
      "tree": "76233c2b177d9be75d3e1278b89ea5d3f7d87fcf",
      "parents": [
        "a23cf14b161b8deeb0f701d577a0e8be6365e247"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 25 11:53:48 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Apr 25 08:41:48 2007 -0700"
      },
      "message": "cfq-iosched: fix alias + front merge bug\n\nThere\u0027s a really rare and obscure bug in CFQ, that causes a crash in\ncfq_dispatch_insert() due to rq \u003d\u003d NULL.  One example of the resulting\noops is seen here:\n\n\thttp://lkml.org/lkml/2007/4/15/41\n\nNeil correctly diagnosed the situation for how this can happen: if two\nconcurrent requests with the exact same sector number (due to direct IO\nor aliasing between MD and the raw device access), the alias handling\nwill add the request to the sortlist, but next_rq remains NULL.\n\nRead the more complete analysis at:\n\n\thttp://lkml.org/lkml/2007/4/25/57\n\nThis looks like it requires md to trigger, even though it should\npotentially be possible to due with O_DIRECT (at least if you edit the\nkernel and doctor some of the unplug calls).\n\nThe fix is to move the -\u003enext_rq update to when we add a request to the\nrbtree. Then we remove the possibility for a request to exist in the\nrbtree code, but not have -\u003enext_rq correctly updated.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a993800655ee516b6f6a6fc4c2ee13fedfb0590b",
      "tree": "023b362b4b30bddf2232ade83d162a84ac88f74b",
      "parents": [
        "46fcc86dd71d70211e965102fb69414c90381880"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 20 08:55:52 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Apr 20 22:56:29 2007 -0700"
      },
      "message": "cfq-iosched: fix sequential write regression\n\nWe have a 10-15% performance regression for sequential writes on TCQ/NCQ\nenabled drives in 2.6.21-rcX after the CFQ update went in.  It has been\nreported by Valerie Clement \u003cvalerie.clement@bull.net\u003e and the Intel\ntesting folks.  The regression is because of CFQ\u0027s now more aggressive\nqueue control, limiting the depth available to the device.\n\nThis patches fixes that regression by allowing a greater depth when only\none queue is busy.  It has been tested to not impact sync-vs-async\nworkloads too much - we still do a lot better than 2.6.20.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9ede209e83693cf3f6b64f61ab4b65f2f809cb50",
      "tree": "a91ad6e7fd1b8589ecf4c8e5e027a397d89ccd6f",
      "parents": [
        "28f95cbc3ec01f2c7d248e1a4a384f37e9c2ab16"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 19 12:11:44 2007 +1100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Sun Feb 11 23:14:45 2007 +0100"
      },
      "message": "cfq-iosched: improve continue or break logic in cfq_dispatch\n\nThis improves performance considerably for sync requests when you\nhave command queuing enabled.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "28f95cbc3ec01f2c7d248e1a4a384f37e9c2ab16",
      "tree": "81981dbecdfbf657bb0b099cd23fb794789b3cc2",
      "parents": [
        "3c6bd2f879d2c12ce369fe5f75e608ac7bacf01a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 19 12:09:53 2007 +1100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Sun Feb 11 23:14:45 2007 +0100"
      },
      "message": "cfq-iosched: remove the implicit queue kicking in slice expire\n\nWe only really need it for a process going away, so move it to\nthose locations.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "3c6bd2f879d2c12ce369fe5f75e608ac7bacf01a",
      "tree": "b4fe059420762d542c14acc29ca0638c514410d9",
      "parents": [
        "cb8874119e9a3ec38c45942808c91cfbc014f402"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 19 12:06:33 2007 +1100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Sun Feb 11 23:14:45 2007 +0100"
      },
      "message": "cfq-iosched: check whether a queue timed out in accounting\n\nMakes it more fair for the residual slice count.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cb8874119e9a3ec38c45942808c91cfbc014f402",
      "tree": "410562c9c72499ab208b5526fb35736c48520638",
      "parents": [
        "1792669cc1acc2069869b7ca41a0195240de05e0"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 19 12:01:16 2007 +1100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Sun Feb 11 23:14:45 2007 +0100"
      },
      "message": "cfq-iosched: tweak the FIFO checking\n\nWe currently check the FIFO once per slice. Optimize that a bit and\nonly do it as the first thing for a new slice, so we don\u0027t end up\ndoing a single request and then seek to the FIFO requests.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1792669cc1acc2069869b7ca41a0195240de05e0",
      "tree": "9ad405045d3ea65d15cae2c795e97280d072bb66",
      "parents": [
        "c5b680f3b7593f2b066c683df799d19f807fb23d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 19 11:59:30 2007 +1100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Sun Feb 11 23:14:45 2007 +0100"
      },
      "message": "cfq-iosched: don\u0027t pass in queue for cfq_arm_slice_timer()\n\nIt must always be the active queue, otherwise it\u0027s a bug. So just\nuse the active_queue, don\u0027t pass it in explicitly.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c5b680f3b7593f2b066c683df799d19f807fb23d",
      "tree": "657df453cdf7b872f5ea713e66f2e090048a6c1f",
      "parents": [
        "44f7c16065c83060cbb9dd9b367141682a6e2b8e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 19 11:56:49 2007 +1100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Sun Feb 11 23:14:45 2007 +0100"
      },
      "message": "cfq-iosched: account for slice over/under time\n\nIf a slice uses less than it is entitled to (or perhaps more), include\nthat in the decision on how much time to give it the next time it\ngets serviced.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "44f7c16065c83060cbb9dd9b367141682a6e2b8e",
      "tree": "5ed1af3ed6a98edf2d17eaa5047807764a04988c",
      "parents": [
        "99f9628aba4d8fb3b8d955c9efded0d0a1995fad"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 19 11:51:58 2007 +1100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Sun Feb 11 23:14:45 2007 +0100"
      },
      "message": "cfq-iosched: defer slice activation to first request being active\n\nThis better matches what time the queue is actually spending doing\nIO.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "99f9628aba4d8fb3b8d955c9efded0d0a1995fad",
      "tree": "e1f0547190c0872bdb99a31d6750d739739d2ffe",
      "parents": [
        "b0b8d74941b7bc67edec26e4c114d27827edfd09"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 05 11:56:25 2007 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Sun Feb 11 23:14:45 2007 +0100"
      },
      "message": "[PATCH] cfq-iosched: use last service point as the fairness criteria\n\nRight now we use slice_start, which gives async queues an unfair\nadvantage. Chance that to service_last, and base the resorter\non that.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b0b8d74941b7bc67edec26e4c114d27827edfd09",
      "tree": "622cc98d113eac9d34e0ce02ff9eed77fbaf033b",
      "parents": [
        "98e41c7dfc90c0e9a1086502d4c4d367e1ad74db"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 19 11:35:30 2007 +1100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Sun Feb 11 23:14:44 2007 +0100"
      },
      "message": "cfq-iosched: document the cfqq flags\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "98e41c7dfc90c0e9a1086502d4c4d367e1ad74db",
      "tree": "c064f21aec474eb76de222175f042035640de290",
      "parents": [
        "aaf1228ddfb44f04c87d1e7dfc5ccffdba74363d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 05 11:55:35 2007 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Sun Feb 11 23:14:44 2007 +0100"
      },
      "message": "[PATCH] cfq-iosched: move on_rr check into cfq_resort_rr_list()\n\nMove the on_rr check into cfq_resort_rr_list(), every call site\nneeds to check it anyway.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "aaf1228ddfb44f04c87d1e7dfc5ccffdba74363d",
      "tree": "fb57e223b97e52e78f88f87e7aefdb5a557985eb",
      "parents": [
        "783660b2f60418144e168ab75a06786f9695fc70"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 19 11:30:16 2007 +1100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Sun Feb 11 23:14:44 2007 +0100"
      },
      "message": "cfq-iosched: remove cfq_io_context last_queue\n\nIt hasn\u0027t been used for a while, kill it off and remove the old\nif 0 code chunk.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ec8acb6904fabb8e741f741ec99bb1c18f2b3dee",
      "tree": "9d4da59b2ccc4b1424b90497c7b26778c272ca5a",
      "parents": [
        "dc3c3377f03634d351fafdfe35b237b283586c04"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jan 02 18:32:11 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Tue Jan 02 09:46:16 2007 -0800"
      },
      "message": "[PATCH] cfq-iosched: merging problem\n\nTwo issues:\n\n- The final return 1 should be a return 0, otherwise comparing cfqq is\n  a noop.\n\n- bio_sync() only checks the sync flag, while rq_is_sync() checks both\n  for READ and sync. The latter is what we want. Expand the bio check\n  to include reads, and relax the restriction to allow merging of async\n  io into sync requests.\n\nIn the future we want to clean up the SYNC logic, right now it means\nboth sync request (such as READ and O_DIRECT WRITE) and unplug-on-issue.\nLeave that for later.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "719d34027e1a186e46a3952e8a24bf91ecc33837",
      "tree": "f0b9074069777c430045e7be803d8c5a2187ecc9",
      "parents": [
        "c2fda5fed81eea077363b285b66eafce20dfd45a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 22 09:38:53 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 14:13:08 2006 -0800"
      },
      "message": "[PATCH] cfq-iosched: tighten allow merge criteria\n\nThe logic in cfq_allow_merge() wasn\u0027t clear enough - basically allow\nmerging for the same queues only.  Do a fast check for \u0027rq and bio both\nsync/async\u0027 before doing the cfqq hash lookup.\n\nThis is verified to work with the fixed elv_try_merge() from commit\nbb4067e34159648d394943d5e2a011f838bff22f.\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": "7749a8d423c483a51983b666613acda1a4dd9c1b",
      "tree": "5a2a20640cca9ca519324b7933005f6fd9c4a6a5",
      "parents": [
        "445722f97a0ecd3aed3f53d9f0dcaacaef8c6223"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 13 13:02:26 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 13 13:02:26 2006 +0100"
      },
      "message": "[PATCH] Propagate down request sync flag\n\nWe need to do this, otherwise the io schedulers don\u0027t get access to the\nsync flag. Then they cannot tell the difference between a regular write\nand an O_DIRECT write, which can cause a performance loss.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4c1ac1b49122b805adfa4efc620592f68dccf5db",
      "tree": "87557f4bc2fd4fe65b7570489c2f610c45c0adcd",
      "parents": [
        "c4028958b6ecad064b1a6303a6a5906d4fe48d73",
        "d916faace3efc0bf19fe9a615a1ab8fa1a24cd93"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Dec 05 14:37:56 2006 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@warthog.cambridge.redhat.com",
        "time": "Tue Dec 05 14:37:56 2006 +0000"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n\nConflicts:\n\n\tdrivers/infiniband/core/iwcm.c\n\tdrivers/net/chelsio/cxgb2.c\n\tdrivers/net/wireless/bcm43xx/bcm43xx_main.c\n\tdrivers/net/wireless/prism54/islpci_eth.c\n\tdrivers/usb/core/hub.h\n\tdrivers/usb/input/hid-core.c\n\tnet/core/netpoll.c\n\nFix up merge failures with Linus\u0027s head and fix new compilation failures.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.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": "65f27f38446e1976cc98fd3004b110fedcddd189",
      "tree": "68f8be93feae31dfa018c22db392a05546b63ee1",
      "parents": [
        "365970a1ea76d81cb1ad2f652acb605f06dae256"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:55:48 2006 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:55:48 2006 +0000"
      },
      "message": "WorkStruct: Pass the work_struct pointer instead of context data\n\nPass the work_struct pointer to the work function rather than context data.\nThe work function can use container_of() to work out the data.\n\nFor the cases where the container of the work_struct may go away the moment the\npending bit is cleared, it is made possible to defer the release of the\nstructure by deferring the clearing of the pending bit.\n\nTo make this work, an extra flag is introduced into the management side of the\nwork_struct.  This governs auto-release of the structure upon execution.\n\nOrdinarily, the work queue executor would release the work_struct for further\nscheduling or deallocation by clearing the pending bit prior to jumping to the\nwork function.  This means that, unless the driver makes some guarantee itself\nthat the work_struct won\u0027t go away, the work function may not access anything\nelse in the work_struct or its container lest they be deallocated..  This is a\nproblem if the auxiliary data is taken away (as done by the last patch).\n\nHowever, if the pending bit is *not* cleared before jumping to the work\nfunction, then the work function *may* access the work_struct and its container\nwith no problems.  But then the work function must itself release the\nwork_struct by calling work_release().\n\nIn most cases, automatic release is fine, so this is the default.  Special\ninitiators exist for the non-auto-release case (ending in _NAR).\n\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "5fccbf61be2a7f32d2002b04afca4c5009612a58",
      "tree": "1a7a09dcbf4b518cf5d695fa8dbe41e21a1ab413",
      "parents": [
        "eafa6cb18ec7e5424ce54017b5ce6d11dff58b79"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 31 14:21:55 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 31 08:12:45 2006 -0800"
      },
      "message": "[PATCH] CFQ: request \u003c-\u003e request merging rr_list fixup\n\nIn very rare circumstances would we be pruning a merged request and at\nthe same time delete the implicated cfqq from the rr_list, and not readd\nit when the merged request got added. This could cause io stalls until\nthat process issued io again.\n\nFix it up by putting the rr_list add handling into cfq_add_rq_rb(),\nidentical to how pruning is handled in cfq_del_rq_rb(). This fixes a\nhang reproducible with fsx-linux.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c1b707d253fe918b92882cff1dbd926b47e14fd2",
      "tree": "849001799adfad5741cdfe952fadbafd66fb97e1",
      "parents": [
        "0261d6886eb5822867a5310dc1e4479b940a1942"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Oct 30 19:54:23 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 30 11:01:50 2006 -0800"
      },
      "message": "[PATCH] CFQ: bad locking in changed_ioprio()\n\nWhen the ioprio code recently got juggled a bit, a bug was introduced.\nchanged_ioprio() is no longer called with interrupts disabled, so using\nplain spin_lock() on the queue_lock is a bug.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0261d6886eb5822867a5310dc1e4479b940a1942",
      "tree": "e1abc43a23dce3a2250eed8732e68fd6e8a92053",
      "parents": [
        "209ad53bc19667a128d9c51beba873a5c62bff6e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Oct 30 19:07:48 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 30 10:21:58 2006 -0800"
      },
      "message": "[PATCH] CFQ: use irq safe locking in cfq_cic_link()\n\nIf cfq_set_request() is called for a new process AND a non-fs io\nrequest (so that __GFP_WAIT may not be set), cfq_cic_link() may\nuse spin_lock_irq() and spin_unlock_irq() with interrupts already\ndisabled.\n\nFix is to always use irq safe locking in cfq_cic_link()\n\nAcked-By: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6e9a4738c9fadb7cbdcabc1e3b415159f3741ed9",
      "tree": "0e470bb8cd431d59698da5a6999ff35a347619a3",
      "parents": [
        "397d6140e93156ecb9cafcd9be0db10ff3c12ab3"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sat Sep 30 23:28:10 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:24 2006 -0700"
      },
      "message": "[PATCH] completions: lockdep annotate on stack completions\n\nAll on stack DECLARE_COMPLETIONs should be replaced by:\nDECLARE_COMPLETION_ONSTACK\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\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": "374f84ac39ec7829a57a66efd5125d3561ff0e00",
      "tree": "a1303aba1804f621ebea8304ba94e02c16a70a5c",
      "parents": [
        "caa38fb0f481a3cb732b115cb59bfa6b59b6daaf"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sun Jul 23 01:42:19 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:29:43 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: use metadata read flag\n\nGive meta data reads preference over regular reads, as the process\noften needs to get that out of the way to do the io it was actually\ninterested in.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "bf57225670bcbeb357182d800736b4782cde7295",
      "tree": "c86d71fefff36090fc5c2ea3694f95d0162cdc2c",
      "parents": [
        "dc72ef4ae35c2016fb594bcc85ce871376682174"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Jul 19 20:29:12 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:29:41 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: improve queue preemption\n\nDon\u0027t touch the current queues, just make sure that the wanted queue\nis selected next. Simplifies the logic.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "dc72ef4ae35c2016fb594bcc85ce871376682174",
      "tree": "c0c78879addf0d65adcc8f8cce01165fa2502dac",
      "parents": [
        "981a79730d586335ef8f942c83bdf2b1de6d4e3d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Jul 20 14:54:05 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:29:40 2006 +0200"
      },
      "message": "[PATCH] Add blk_start_queueing() helper\n\nCFQ implements this on its own now, but it\u0027s really block layer\nknowledge. Tells a device queue to start dispatching requests to\nthe driver, taking care to unplug if needed. Also fixes the issue\nwhere as/cfq will invoke a stopped queue, which we really don\u0027t\nwant.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "981a79730d586335ef8f942c83bdf2b1de6d4e3d",
      "tree": "0dec9ba389ed1fbfb8adb842f86a27e9be643559",
      "parents": [
        "53b03744e5699832e6c5b04f2ec506d8b0c50c38"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Jul 19 14:56:28 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:29:40 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: kill the empty_list\n\nNo point in having a place holder list just for empty queues, so remove\nit. It\u0027s not used for anything other than to keep -\u003ecfq_list busy.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "53b03744e5699832e6c5b04f2ec506d8b0c50c38",
      "tree": "7205d972bf6f25be3a3f2c360130b269dadcb3b2",
      "parents": [
        "b5deef901282628d88c784f4c9d2f0583ec3b355"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Fri Jul 28 09:48:51 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:29:39 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: Kill O(N) runtime of cfq_resort_rr_list()\n\nCurrently it scales with number of processes in that priority group,\nwhich is potentially not very nice as it\u0027s called quite often.\nBasically we always need to do tail inserts, except for the case of a\nnew process. So just mark/detect a queue as such.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\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": "1ea25ecb7256978947c258f08a30c878eebe9edb",
      "tree": "d0dd75162f20afdf97a086bb22604d2aeb9c263e",
      "parents": [
        "4050cf1674c632c73801a561689543d4887df2ef"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Jul 18 22:24:11 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:29:38 2006 +0200"
      },
      "message": "[PATCH] Audit block layer inlines\n\nKill a few inlines that bring in too much code to more than one location\nShrinks kernel text by about 300 bytes on 32-bit x86.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "4050cf1674c632c73801a561689543d4887df2ef",
      "tree": "f7a3e55857e917bb129d16d27458c2ff897a1864",
      "parents": [
        "e4313dd423148fa729571b50c06cbc0bedf5c494"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Jul 19 05:07:12 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:29:37 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: use new io context counting mechanism\n\nIt\u0027s ok if the read path is a lot more costly, as long as inc/dec is\nreally cheap. The inc/dec will happen for each created/freed io context,\nwhile the reading only happens when a disk queue exits.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "fc46379daf90dce57bf765c81d3b39f55150aac2",
      "tree": "43aa28f0db6c73f137550b0b2e2ec29b9f9a1fc6",
      "parents": [
        "89850f7ee905410c89f9295e89dc4c33502a34ac"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Aug 29 09:05:44 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:29:36 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: kill cfq_exit_lock\n\ncfq_exit_lock is protecting two things now:\n\n- The per-ioc rbtree of cfq_io_contexts\n\n- The per-cfqd linked list of cfq_io_contexts\n\nThe per-cfqd linked list can be protected by the queue lock, as it is (by\ndefinition) per cfqd as the queue lock is.\n\nThe per-ioc rbtree is mainly used and updated by the process itself only.\nThe only outside use is the io priority changing. If we move the\npriority changing to not browsing the rbtree, we can remove any locking\nfrom the rbtree updates and lookup completely. Let the sys_ioprio syscall\njust mark processes as having the iopriority changed and lazily update\nthe private cfq io contexts the next time io is queued, and we can\nremove this locking as well.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "89850f7ee905410c89f9295e89dc4c33502a34ac",
      "tree": "c499b53c052a6e515ec232fdbde4537f20f1d23d",
      "parents": [
        "e6a1c874a064e7d07f24986aba7cd537b7f4a25d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Sat Jul 22 16:48:31 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:29:35 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: cleanups, fixes, dead code removal\n\nA collection of little fixes and cleanups:\n\n- We don\u0027t use the \u0027queued\u0027 sysfs exported attribute, since the\n  may_queue() logic was rewritten. So kill it.\n\n- Remove dead defines.\n\n- cfq_set_active_queue() can be rewritten cleaner with else if conditions.\n\n- Several places had cfq_exit_cfqq() like logic, abstract that out and\n  use that.\n\n- Annotate the cfqq kmem_cache_alloc() so the allocator knows that this\n  is a repeat allocation if it fails with __GFP_WAIT set. Allows the\n  allocator to start freeing some memory, if needed. CFQ already loops for\n  this condition, so might as well pass the hint down.\n\n- Remove cfqd-\u003erq_starved logic. It\u0027s not needed anymore after we dropped\n  the crq allocation in cfq_set_request().\n\n- Remove uneeded parameter passing.\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": "5e705374796e72b36e7bb9c59c8d46d2dc5db36a",
      "tree": "94b365b5b56d08dfa1eb127285f7da9019bbf670",
      "parents": [
        "ff7d145fd911266ae42af7552edc32681c01addb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Jul 13 12:39:25 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:27:02 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: kill crq\n\nGet rid of the cfq_rq request type. With the added elevator_private2, we\nhave enough room in struct request to get rid of any crq allocation/free\nfor each request.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "5380a101d33d1d3a32c6b6bd2e17e5dd835842b0",
      "tree": "26cce0604f8c5860f3616d00bd6af18e11fadaa9",
      "parents": [
        "8840faa1eebba22a9e2f86acddc0cf5145937df4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Jul 13 12:37:56 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:27:01 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: remove the crq flag functions/variable\n\nThere\u0027s just one flag currently (SYNC), and that one can be grabbed from\nthe request.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "95e8810b283cfac50789126de4207f9909299de9",
      "tree": "5fc74242c9cc3e2a753f7b7e54fd08a3653f65bd",
      "parents": [
        "1fbfdfcddff4df188b24d9d05271a76a85064583"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Jul 11 21:30:31 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:26:59 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: convert to using the FIFO elevator defines\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "21183b07ee4be405362af8454f3647781c77df1b",
      "tree": "753d327a8e6d1e0fc7b41eecd68ea52dbb8b24dc",
      "parents": [
        "e37f346e347e5035c80760df2be0fcb2824f6c16"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Jul 13 12:33:14 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:26:58 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: migrate to using the elevator rb functions\n\nThis removes the rbtree handling from CFQ.\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": "be33c3a67bb717508ab1eab0f2fa570fabcbc4d2",
      "tree": "a3ed181d91d97487b5918a8e8c4eab05166978f1",
      "parents": [
        "e014ff8d4285b81f0de0719d8eee72bc50bfd4be"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Mon Aug 21 08:36:12 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Mon Aug 21 10:02:54 2006 +0200"
      },
      "message": "[PATCH] cfq_cic_link: fix usage of wrong cfq_io_context\n\nObviously, cfq_cic_link() shouldn\u0027t free a just allocated cfq_io_context?\nThe dead key is from __cic, so drop that.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "44eb123126d289bac398cac0232309c228386671",
      "tree": "129504f649195d5cff96c4c94a345d459f770896",
      "parents": [
        "ad01b1ca797e5898cd40bb32cf0dc8c85aa9f7e8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Jul 25 15:05:21 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Jul 25 15:05:21 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: don\u0027t use a hard jiffies value, translate from msecs\n\nThe CIC_SEEKY() test really wants to use the minimum of either:\n\n- 2 msecs (not jiffies)\n\n- or, the pending slice time\n\nSo code it like that.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\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": "dd67d051529387f6e44d22d1d5540ef281965fdd",
      "tree": "80457f9a2ad3e562b179e40f5c8d51b4f24d6d9e",
      "parents": [
        "9e94cd4fd1812bab45237f998b3c6fa1b24023fd"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Jun 21 09:36:18 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Jun 23 17:10:39 2006 +0200"
      },
      "message": "[PATCH] rbtree: support functions used by the io schedulers\n\nThey all duplicate macros to check for empty root and/or node, and\nclearing a node. So put those in rbtree.h.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "fd61af0384014ca29428ace7c17a978b755aeddd",
      "tree": "c7aa5ca9b91383b7c97199189214fa86a6a51b4f",
      "parents": [
        "caaa5f9f0a75d1dc5e812e69afdbb8720e077fd3"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Fri Jun 16 15:35:39 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Jun 23 17:10:39 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: rq update fixes\n\n- Remember to set -\u003elast_sector so that the cfq_choose_req() logic\n  works correctly.\n\n- Remove redundant call to cfq_choose_req()\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "caaa5f9f0a75d1dc5e812e69afdbb8720e077fd3",
      "tree": "07aba6bac5a57cb3efd23762acfd719e255775ab",
      "parents": [
        "35e6077cb16f93517ba5a51ba849b186d2474d60"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Fri Jun 16 11:23:00 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Jun 23 17:10:39 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: many performance fixes\n\nThis is a collection of patches that greatly improve CFQ performance\nin some circumstances.\n\n- Change the idling logic to only kick in after a request is done and we\n  are deciding what to do. Before the idling included the request service\n  time, so it was hard to adjust. Now it\u0027s true think/idle time.\n\n- Take advantage of TCQ/NCQ/queueing for seeky sync workloads, but keep\n  it in control for sync and sequential (or close to) workloads.\n\n- Expire queues immediately and move on to other busy queues, if we are\n  not going to idle after the current one finishes.\n\n- Don\u0027t rearm idle timer if there are no busy queues. Just leave the\n  system idle.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "35e6077cb16f93517ba5a51ba849b186d2474d60",
      "tree": "215bcf3548d80365b3cd3673feddf6a8f8ba9fbc",
      "parents": [
        "b17fd9bceb99610f6dc7998c9a4ed6b71520be2b"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Wed Jun 14 09:10:45 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Jun 23 17:10:39 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: correctly set ioprio on both targets\n\nPatch originally from Vasily Tarasov \u003cvtaras@sw.ru\u003e\n\nIf you set io-priority of process 1 using sys_ioprio_set system call by\nanother process 2 (like ionice do), then cfq_init_prio_data() function\nsets priority of process 2 (current) on queue of process 1 and clears\nthe flag, that designates change of ioprio.  So the process  1 will work\nlike with priority of process 2.\n\nI propose not to call cfq_init_prio_data() on io-priority change, but\nonly mark queue as queue with changed prority.  Every time when new\nrequest comes cfq-scheduler checks for this flag and atomaticaly changes\npriority of queue to new value.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "b31dc66a54ad986b6b73bdc49c8efc17cbad1833",
      "tree": "5591383c1cbffe11512da889c971f899333f1a44",
      "parents": [
        "271f18f102c789f59644bb6c53a69da1df72b2f4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Jun 13 08:26:10 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Jun 23 17:10:39 2006 +0200"
      },
      "message": "[PATCH] Kill PF_SYNCWRITE flag\n\nA process flag to indicate whether we are doing sync io is incredibly\nugly. It also causes performance problems when one does a lot of async\nio and then proceeds to sync it. Part of the io will go out as async,\nand the other part as sync. This causes a disconnect between the\npreviously submitted io and the synced io. For io schedulers such as CFQ,\nthis will cause us lost merges and suboptimal behaviour in scheduling.\n\nRemove PF_SYNCWRITE completely from the fsync/msync paths, and let\nthe O_DIRECT path just directly indicate that the writes are sync\nby using WRITE_SYNC instead.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "271f18f102c789f59644bb6c53a69da1df72b2f4",
      "tree": "f3593b5dbc90da69a91a69fb170c2600775703f7",
      "parents": [
        "acf421755593f7d7bd9352d57eda796c6eb4fa43"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Jun 13 08:08:38 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Jun 23 17:10:38 2006 +0200"
      },
      "message": "[PATCH] cfq-iosched: Don\u0027t set the queue batching limits\n\nWe cannot update them if the user changes nr_requests, so don\u0027t\nset it in the first place. The gains are pretty questionable as\nwell. The batching loss has been shown to decrease throughput.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    }
  ],
  "next": "6b41fd1785f4effe2f3bd40da864415812f5b8c9"
}
