)]}'
{
  "log": [
    {
      "commit": "ada3fa15057205b7d3f727bba5cd26b5912e350f",
      "tree": "60962fc9e4021b92f484d1a58e72cd3906d4f3db",
      "parents": [
        "2f82af08fcc7dc01a7e98a49a5995a77e32a2925",
        "5579fd7e6aed8860ea0c8e3f11897493153b10ad"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 15 09:39:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 15 09:39:44 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (46 commits)\n  powerpc64: convert to dynamic percpu allocator\n  sparc64: use embedding percpu first chunk allocator\n  percpu: kill lpage first chunk allocator\n  x86,percpu: use embedding for 64bit NUMA and page for 32bit NUMA\n  percpu: update embedding first chunk allocator to handle sparse units\n  percpu: use group information to allocate vmap areas sparsely\n  vmalloc: implement pcpu_get_vm_areas()\n  vmalloc: separate out insert_vmalloc_vm()\n  percpu: add chunk-\u003ebase_addr\n  percpu: add pcpu_unit_offsets[]\n  percpu: introduce pcpu_alloc_info and pcpu_group_info\n  percpu: move pcpu_lpage_build_unit_map() and pcpul_lpage_dump_cfg() upward\n  percpu: add @align to pcpu_fc_alloc_fn_t\n  percpu: make @dyn_size mandatory for pcpu_setup_first_chunk()\n  percpu: drop @static_size from first chunk allocators\n  percpu: generalize first chunk allocator selection\n  percpu: build first chunk allocators selectively\n  percpu: rename 4k first chunk allocator to page\n  percpu: improve boot messages\n  percpu: fix pcpu_reclaim() locking\n  ...\n\nFix trivial conflict as by Tejun Heo in kernel/sched.c\n"
    },
    {
      "commit": "06d2188644c85c56d243efab914f368d1d23c4a3",
      "tree": "5ee4a4c5b6343a33573fac6a3a66015238e5b1d6",
      "parents": [
        "a9327cac440be4d8333bba975cbbf76045096275"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Fri Sep 11 17:08:59 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Sep 14 08:24:52 2009 +0200"
      },
      "message": "cfq: choose a new next_req when a request is dispatched\n\nThis patch addresses http://bugzilla.kernel.org/show_bug.cgi?id\u003d13401, a\nregression introduced in 2.6.30.\n\nFrom the bug report:\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b217a903ab6581cba04f88c44284dcdd2a752561",
      "tree": "4cb565ead13823c45ed325b20b83ecd78f52a565",
      "parents": [
        "49b3a3cbc0311f8f809183696b1f2ab824b18a51"
      ],
      "author": {
        "name": "Shan Wei",
        "email": "shanwei@cn.fujitsu.com",
        "time": "Tue Sep 01 10:06:42 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:34:33 2009 +0200"
      },
      "message": "cfq: fix the log message after dispatched a request\n\nThe blktrace tools can show process id when cfq dispatched a request,\nusing cfq_log_cfqq() instead of cfq_log().\n\nSigned-off-by: Shan Wei \u003cshanwei@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1b379d8daf4e981b2220f057683e35af022d45bc",
      "tree": "cc8e704bc9248c750375b23576d4659bbdc1322d",
      "parents": [
        "a33dac26d42d6f156b3b05a929961bd8d904f6e2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Aug 11 08:26:11 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:32 2009 +0200"
      },
      "message": "cfq-iosched: get rid of must_alloc flag\n\nIt\u0027s not currently used, as pointed out by\nGui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e. We already check the\nwait_request flag to allow an idling queue priority allocation access,\nso we don\u0027t need this extra flag.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1f98a13f623e0ef666690a18c1250335fc6d7ef1",
      "tree": "15ca2dddffaa18a0d1844957f4f8cc707cbb8117",
      "parents": [
        "e7e503aedb1f4d165081cb8d47a58c38f80f0cb4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:32:04 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:31 2009 +0200"
      },
      "message": "bio: first step in sanitizing the bio-\u003ebi_rw flag testing\n\nGet rid of any functions that test for these bits and make callers\nuse bio_rw_flagged() directly. Then it is at least directly apparent\nwhat variable and flag they check.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d58b85e1e891cd842d6e183f5d94d06a4fd0122c",
      "tree": "32a77721594c79610b8dba9026ff9f9928545d17",
      "parents": [
        "5ad531db6e0f3c3c985666e83d3c1c4d53acccf9"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Jul 10 10:20:30 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:30 2009 +0200"
      },
      "message": "cfq-iosched: no need to keep track of busy_rt_queues\n\no Get rid of busy_rt_queues infrastructure. Looks like it is redundant.\n\no Once an RT queue gets request it will preempt any of the BE or IDLE queues\n  immediately. Otherwise this queue will be put on service tree and scheduler\n  will anyway select this queue before any of the BE or IDLE queue. Hence\n  looks like there is no need to keep track of how many busy RT queues are\n  currently on service tree.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5ad531db6e0f3c3c985666e83d3c1c4d53acccf9",
      "tree": "f5bd394c493f425e12fc6991d2b7adf2121ba506",
      "parents": [
        "da6c5c720c52cc717124f8f0830b710ea6a092fd"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 03 12:57:48 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:30 2009 +0200"
      },
      "message": "cfq-iosched: drain device queue before switching to a sync queue\n\nTo lessen the impact of async IO on sync IO, let the device drain of\nany async IO in progress when switching to a sync cfqq that has idling\nenabled.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "384be2b18a5f9475eab9ca2bdfa95cc1a04ef59c",
      "tree": "04c93f391a1b65c8bf8d7ba8643c07d26c26590a",
      "parents": [
        "a76761b621bcd8336065c4fe3a74f046858bc34c",
        "142d44b0dd6741a64a7bdbe029110e7c1dcf1d23"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 14:41:02 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 14:45:31 2009 +0900"
      },
      "message": "Merge branch \u0027percpu-for-linus\u0027 into percpu-for-next\n\nConflicts:\n\tarch/sparc/kernel/smp_64.c\n\tarch/x86/kernel/cpu/perf_counter.c\n\tarch/x86/kernel/setup_percpu.c\n\tdrivers/cpufreq/cpufreq_ondemand.c\n\tmm/percpu.c\n\nConflicts in core and arch percpu codes are mostly from commit\ned78e1e078dd44249f88b1dd8c76dafb39567161 which substituted many\nnum_possible_cpus() with nr_cpu_ids.  As for-next branch has moved all\nthe first chunk allocators into mm/percpu.c, the changes are moved\nfrom arch code to mm/percpu.c.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "32f2e807a3938b24d0831211e6094f9e44b2fc83",
      "tree": "80baac86022bc36bc07a787008642149fa205642",
      "parents": [
        "ecb554a846f8e9d2a58f6d6c118168a63ac065aa"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Jul 09 22:13:16 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.(none)",
        "time": "Fri Jul 10 20:31:54 2009 +0200"
      },
      "message": "cfq-iosched: reset oom_cfqq in cfq_set_request()\n\nIn case memory is scarce, we now default to oom_cfqq. Once memory is\navailable again, we should allocate a new cfqq and stop using oom_cfqq for\na particular io context.\n\nOnce a new request comes in, check if we are using oom_cfqq, and if yes,\ntry to allocate a new cfqq.\n\nTested the patch by forcing the use of oom_cfqq and upon next request thread\nrealized that it was using oom_cfqq and it allocated a new cfqq.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c43768cbb7655ea5ff782ae250f6e2ef4297cf98",
      "tree": "3982e41dde3eecaa3739a5d1a8ed18d04bd74f01",
      "parents": [
        "1a8dd307cc0a2119be4e578c517795464e6dabba",
        "746a99a5af60ee676afa2ba469ccd1373493c7e7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 07:13:18 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 07:13:18 2009 +0900"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nPull linus#master to merge PER_CPU_DEF_ATTRIBUTES and alpha build fix\nchanges.  As alpha in percpu tree uses \u0027weak\u0027 attribute instead of\ninline assembly, there\u0027s no need for __used attribute.\n\nConflicts:\n\tarch/alpha/include/asm/percpu.h\n\tarch/mn10300/kernel/vmlinux.lds.S\n\tinclude/linux/percpu-defs.h\n"
    },
    {
      "commit": "b706f64281b24d8b1fdc8ae883700131d365c412",
      "tree": "3eed31b51cdcb2787ff2d90eaf39b19fba242a9f",
      "parents": [
        "db64f680ba4b5c56c4be59f0698000df89ff0281"
      ],
      "author": {
        "name": "Shan Wei",
        "email": "shanwei@cn.fujitsu.com",
        "time": "Wed Jul 01 12:41:14 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Jul 01 12:41:14 2009 +0200"
      },
      "message": "cfq-iosched: remove redundant check for NULL cfqq in cfq_set_request()\n\nWith the changes for falling back to an oom_cfqq, we never fail\nto find/allocate a queue in cfq_get_queue(). So remove the check.\n\nSigned-off-by: Shan Wei \u003cshanwei@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6118b70b3a0b4c583439bb77600194c82f220ce3",
      "tree": "6966f1b059f1bdadc0d679067796d9b4bf9a22c3",
      "parents": [
        "d5036d770f871bd34c9cfd955e6dee692e1e8e81"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 30 09:34:12 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Jul 01 10:56:25 2009 +0200"
      },
      "message": "cfq-iosched: get rid of the need for __GFP_NOFAIL in cfq_find_alloc_queue()\n\nSetup an emergency fallback cfqq that we allocate at IO scheduler init\ntime. If the slab allocation fails in cfq_find_alloc_queue(), we\u0027ll just\npunt IO to that cfqq instead. This ensures that cfq_find_alloc_queue()\nnever fails without having to ensure free memory.\n\nOn cfqq lookup, always try to allocate a new cfqq if the given cfq io\ncontext has the oom_cfqq assigned. This ensures that we only temporarily\npunt to this shared queue.\n\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d5036d770f871bd34c9cfd955e6dee692e1e8e81",
      "tree": "d0718922511121e96bdd385d6c28a254cfc93519",
      "parents": [
        "61fd21670d048017c81e62f60894ef1b04b481db"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 26 10:44:34 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Jul 01 10:56:25 2009 +0200"
      },
      "message": "cfq-iosched: move cfqq initialization out of cfq_find_alloc_queue()\n\nWe\u0027re going to be needing that init code outside of that function\nto get rid of the __GFP_NOFAIL in cfqq allocation.\n\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "245b2e70eabd797932adb263a65da0bab3711753",
      "tree": "30f0b790dadd2b70bf06e534abcf66a76e97b05a",
      "parents": [
        "b9bf3121af348d9255f1c917830fe8c2df52efcb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 24 15:13:48 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 24 15:13:48 2009 +0900"
      },
      "message": "percpu: clean up percpu variable definitions\n\nPercpu variable definition is about to be updated such that all percpu\nsymbols including the static ones must be unique.  Update percpu\nvariable definitions accordingly.\n\n* as,cfq: rename ioc_count uniquely\n\n* cpufreq: rename cpu_dbs_info uniquely\n\n* xen: move nesting_count out of xen_evtchn_do_upcall() and rename it\n\n* mm: move ratelimits out of balance_dirty_pages_ratelimited_nr() and\n  rename it\n\n* ipv4,6: rename cookie_scratch uniquely\n\n* x86 perf_counter: rename prev_left to pmc_prev_left, irq_entry to\n  pmc_irq_entry and nmi_entry to pmc_nmi_entry\n\n* perf_counter: rename disable_count to perf_disable_count\n\n* ftrace: rename test_event_disable to ftrace_test_event_disable\n\n* kmemleak: rename test_pointer to kmemleak_test_pointer\n\n* mce: rename next_interval to mce_next_interval\n\n[ Impact: percpu usage cleanups, no duplicate static percpu var names ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: linux-mm \u003clinux-mm@kvack.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\n"
    },
    {
      "commit": "6923715ae39ed39ac2fc1993e5061668f4f71ad0",
      "tree": "98810062c76a07bf6914a192806ba2f927b3cb41",
      "parents": [
        "a979eff1811a07f5fd331c5f6f727370747b42ad"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Fri Jun 12 15:29:30 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 16 08:21:04 2009 +0200"
      },
      "message": "cfq: remove extraneous \u0027\\n\u0027 in blktrace output\n\nI noticed a blank line in blktrace output.  This patch fixes that.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "81be834713a7d6b9463663145d493fe9daee2d61",
      "tree": "1f70583e9148554abaf4b6128bdb7d9bd8bacb6c",
      "parents": [
        "03347e2592078a90df818670fddf97a33eec70fb"
      ],
      "author": {
        "name": "Gui Jianfeng",
        "email": "guijianfeng@cn.fujitsu.com",
        "time": "Fri Jun 12 15:27:50 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 16 08:21:03 2009 +0200"
      },
      "message": "cfq: cleanup for last_end_request in cfq_data\n\nActually, last_end_request in cfq_data isn\u0027t used now. So lets\njust remove it.\n\nSigned-off-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d9c7d394a8ebacb60097b192939ae9f15235225e",
      "tree": "4fbf9c7677acb03c23d05faba1a4b0bcfb6702b4",
      "parents": [
        "1d589bb16b825b3a7b4edd34d997f1f1f953033d"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@novell.com",
        "time": "Wed Jun 10 12:57:06 2009 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Jun 10 23:07:15 2009 +0200"
      },
      "message": "block: prevent possible io_context-\u003erefcount overflow\n\nCurrently io_context has an atomic_t(32-bit) as refcount.  In the case of\ncfq, for each device against whcih a task does I/O, a reference to the\nio_context would be taken.  And when there are multiple process sharing\nio_contexts(CLONE_IO) would also have a reference to the same io_context.\n\nTheoretically the possible maximum number of processes sharing the same\nio_context + the number of disks/cfq_data referring to the same io_context\ncan overflow the 32-bit counter on a very high-end machine.\n\nEven though it is an improbable case, let us make it atomic_long_t.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2e46e8b27aa57c6bd34b3102b40ee4d0144b4fab",
      "tree": "134f560f66c2af277f0f25e5b85f6c1acaddfc06",
      "parents": [
        "9780e2dd8254351f6cbe11304849126b51dbd561"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:41 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:54 2009 +0200"
      },
      "message": "block: drop request-\u003ehard_* and *nr_sectors\n\nstruct request has had a few different ways to represent some\nproperties of a request.  -\u003ehard_* represent block layer\u0027s view of the\nrequest progress (completion cursor) and the ones without the prefix\nare supposed to represent the issue cursor and allowed to be updated\nas necessary by the low level drivers.  The thing is that as block\nlayer supports partial completion, the two cursors really aren\u0027t\nnecessary and only cause confusion.  In addition, manual management of\nrequest detail from low level drivers is cumbersome and error-prone at\nthe very least.\n\nAnother interesting duplicate fields are rq-\u003e[hard_]nr_sectors and\nrq-\u003e{hard_cur|current}_nr_sectors against rq-\u003edata_len and\nrq-\u003ebio-\u003ebi_size.  This is more convoluted than the hard_ case.\n\nrq-\u003e[hard_]nr_sectors are initialized for requests with bio but\nblk_rq_bytes() uses it only for !pc requests.  rq-\u003edata_len is\ninitialized for all request but blk_rq_bytes() uses it only for pc\nrequests.  This causes good amount of confusion throughout block layer\nand its drivers and determining the request length has been a bit of\nblack magic which may or may not work depending on circumstances and\nwhat the specific LLD is actually doing.\n\nrq-\u003e{hard_cur|current}_nr_sectors represent the number of sectors in\nthe contiguous data area at the front.  This is mainly used by drivers\nwhich transfers data by walking request segment-by-segment.  This\nvalue always equals rq-\u003ebio-\u003ebi_size \u003e\u003e 9.  However, data length for\npc requests may not be multiple of 512 bytes and using this field\nbecomes a bit confusing.\n\nIn general, having multiple fields to represent the same property\nleads only to confusion and subtle bugs.  With recent block low level\ndriver cleanups, no driver is accessing or manipulating these\nduplicate fields directly.  Drop all the duplicates.  Now rq-\u003esector\nmeans the current sector, rq-\u003edata_len the current total length and\nrq-\u003ebio-\u003ebi_size the current segment length.  Everything else is\ndefined in terms of these three and available only through accessors.\n\n* blk_recalc_rq_sectors() is collapsed into blk_update_request() and\n  now handles pc and fs requests equally other than rq-\u003esector update.\n  This means that now pc requests can use partial completion too (no\n  in-kernel user yet tho).\n\n* bio_cur_sectors() is replaced with bio_cur_bytes() as block layer\n  now uses byte count as the primary data length.\n\n* blk_rq_pos() is now guranteed to be always correct.  In-block users\n  converted.\n\n* blk_rq_bytes() is now guaranteed to be always valid as is\n  blk_rq_sectors().  In-block users converted.\n\n* blk_rq_sectors() is now guaranteed to equal blk_rq_bytes() \u003e\u003e 9.\n  More convenient one is used.\n\n* blk_rq_bytes() and blk_rq_cur_bytes() are now inlined and take const\n  pointer to request.\n\n[ Impact: API cleanup, single way to represent one property of a request ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "83096ebf1263b2c1ee5e653ba37d993d02e3eb7b",
      "tree": "2226b71a616ec1cb2d37511c6a09ba9507a1cd69",
      "parents": [
        "5b93629b4509c03ffa87a9316412fedf6f58cb37"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:39 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:54 2009 +0200"
      },
      "message": "block: convert to pos and nr_sectors accessors\n\nWith recent cleanups, there is no place where low level driver\ndirectly manipulates request fields.  This means that the \u0027hard\u0027\nrequest fields always equal the !hard fields.  Convert all\nrq-\u003esectors, nr_sectors and current_nr_sectors references to\naccessors.\n\nWhile at it, drop superflous blk_rq_pos() \u003c 0 test in swim.c.\n\n[ Impact: use pos and nr_sectors accessors ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nTested-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAcked-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nTested-by: Adrian McMenamin \u003cadrian@mcmen.demon.co.uk\u003e\nAcked-by: Adrian McMenamin \u003cadrian@mcmen.demon.co.uk\u003e\nAcked-by: Mike Miller \u003cmike.miller@hp.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Borislav Petkov \u003cpetkovbb@googlemail.com\u003e\nCc: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nCc: Eric Moore \u003cEric.Moore@lsi.com\u003e\nCc: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Pete Zaitcev \u003czaitcev@redhat.com\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Paul Clements \u003cpaul.clements@steeleye.com\u003e\nCc: Tim Waugh \u003ctim@cyberelk.net\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Alex Dubov \u003coakad@yahoo.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Dario Ballabio \u003cballabio_dario@emc.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: unsik Kim \u003cdonari75@gmail.com\u003e\nCc: Laurent Vivier \u003cLaurent@lvivier.info\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5b93629b4509c03ffa87a9316412fedf6f58cb37",
      "tree": "ad5ceda3f718361b8df3057b4f9edcc79aa4cd9d",
      "parents": [
        "c3a4d78c580de4edc9ef0f7c59812fb02ceb037f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:38 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:53 2009 +0200"
      },
      "message": "block: implement blk_rq_pos/[cur_]sectors() and convert obvious ones\n\nImplement accessors - blk_rq_pos(), blk_rq_sectors() and\nblk_rq_cur_sectors() which return rq-\u003ehard_sector, rq-\u003ehard_nr_sectors\nand rq-\u003ehard_cur_sectors respectively and convert direct references of\nthe said fields to the accessors.\n\nThis is in preparation of request data length handling cleanup.\n\nGeert\t: suggested adding const to struct request * parameter to accessors\nSergei\t: spotted error in patch description\n\n[ Impact: cleanup ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nAcked-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nTested-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAcked-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAckec-by: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Borislav Petkov \u003cpetkovbb@googlemail.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a7f557923441186a3cdbabc54f1bcacf42b63bf5",
      "tree": "48e37802174cb98be43d89eb8bc4e466f4d79a02",
      "parents": [
        "a538cd03be6f363d039daa94199c28cfbd508455"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:17 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:33 2009 +0200"
      },
      "message": "block: kill blk_start_queueing()\n\nblk_start_queueing() is identical to __blk_run_queue() except that it\ndoesn\u0027t check for recursion.  None of the current users depends on\nblk_start_queueing() running request_fn directly.  Replace usages of\nblk_start_queueing() with [__]blk_run_queue() and kill it.\n\n[ Impact: removal of mostly duplicate interface function ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "f2d1f0ae7851be5ebd9613a80dac139270938809",
      "tree": "91efc4740f854b94ea84583a2cd6c34d14eafc8e",
      "parents": [
        "3ac6c9f8a66726745136e46f63600550c3eb6cec"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 23 12:19:38 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 24 08:54:22 2009 +0200"
      },
      "message": "cfq-iosched: cache prio_tree root in cfqq-\u003ep_root\n\nCurrently we look it up from -\u003eioprio, but -\u003eioprio can change if\neither the process gets its IO priority changed explicitly, or if\ncfq decides to temporarily boost it. So if we are unlucky, we can\nend up attempting to remove a node from a different rbtree root than\nwhere it was added.\n\nFix this by using -\u003eorg_ioprio as the prio_tree index, since that\nwill only change for explicit IO priority settings (not for a boost).\nAdditionally cache the rbtree root inside the cfqq, then we don\u0027t have\nto add code to reinsert the cfqq in the prio_tree if IO priority changes.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "3ac6c9f8a66726745136e46f63600550c3eb6cec",
      "tree": "93d3217dc15a8183c8e6b29b36862caef01546d7",
      "parents": [
        "26a2ac009c2b07e1959c8864ca23486c1c485587"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 23 12:14:56 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 24 08:54:22 2009 +0200"
      },
      "message": "cfq-iosched: fix bug with aliased request and cooperation detection\n\ncfq_prio_tree_lookup() should return the direct match, yet it always\nreturns zero. Fix that.\n\ncfq_prio_tree_add() assumes that we don\u0027t get a direct match, while\nit is very possible that we do. Using O_DIRECT, you can have different\ncfqq with matching requests, since you don\u0027t have the page cache\nto serialize things for you. Fix this bug by only adding the cfqq if\nthere isn\u0027t an existing match.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "26a2ac009c2b07e1959c8864ca23486c1c485587",
      "tree": "f3c0ae95578cd454f04dc48226b3b6f1ebd1d345",
      "parents": [
        "17d5c8ca7572124c9623045f24b0c21d4aa2b47f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 23 12:13:27 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 24 08:54:22 2009 +0200"
      },
      "message": "cfq-iosched: clear -\u003eprio_trees[] on cfqd alloc\n\nNot strictly needed, but we should make it clear that we init the\nrbtree roots here.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "04dc6e71a28d4815bf9431efcafc107bb0ad2792",
      "tree": "dd51f2491b984d9f8f571f2bdc6b51cadb8c686d",
      "parents": [
        "4d00aa47e2337dcfe2d8a7215dbde3765b507167"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Tue Apr 21 07:31:56 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 22 08:35:11 2009 +0200"
      },
      "message": "cfq-iosched: use the default seek distance when there aren\u0027t enough seek samples\n\nIf the cfq io context doesn\u0027t have enough samples yet to provide a mean\nseek distance, then use the default threshold we have for seeky IO instead\nof defaulting to 0.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4d00aa47e2337dcfe2d8a7215dbde3765b507167",
      "tree": "069f0c202e6a3f3017b0a8b4320b31172bcc1071",
      "parents": [
        "b759113499d6c7cb75fab04f56772579308bc0f8"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Tue Apr 21 07:25:04 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 22 08:35:11 2009 +0200"
      },
      "message": "cfq-iosched: make seek_mean converge more quickly\n\nRight now, depending on the first sector to which a process issues I/O,\nthe seek time may start out way out of whack. So make sure we start\nwith 0 sectors in seek, instead of the offset of the first request\nissued.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a36e71f996e25d6213f57951f7ae1874086ec57e",
      "tree": "1673eeb55b4d84a3d38dda9009ad7ac6f31c5a89",
      "parents": [
        "9481ffdc61738a91baf0f8b7fb20922768ae1b8e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:15:11 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:15:11 2009 +0200"
      },
      "message": "cfq-iosched: add close cooperator code\n\nIf we have processes that are working in close proximity to each\nother on disk, we don\u0027t want to idle wait. Instead allow the close\nprocess to issue a request, getting better aggregate bandwidth.\nThe anticipatory scheduler has similar checks, noop and deadline do\nnot need it since they don\u0027t care about process \u003c-\u003e io mappings.\n\nThe code for CFQ is a little more involved though, since we split\nrequest queues into per-process contexts.\n\nThis fixes a performance problem with eg dump(8), since it uses\nseveral processes in some silly attempt to speed IO up. Even if\ndump(8) isn\u0027t really a valid case (it should be fixed by using\nCLONE_IO), there are other cases where we see close processes\nand where idling ends up hurting performance.\n\nCredit goes to Jeff Moyer \u003cjmoyer@redhat.com\u003e for writing the\ninitial implementation.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9481ffdc61738a91baf0f8b7fb20922768ae1b8e",
      "tree": "3c53ee9144366bf21fe6b9e72d13d453c1012e40",
      "parents": [
        "2d870722965211de072bb36b446a4df99dae07e1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:14:13 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:14:13 2009 +0200"
      },
      "message": "cfq-iosched: log responsible \u0027cfqq\u0027 in idle timer arm\n\nMakes it easier to read the traces.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2d870722965211de072bb36b446a4df99dae07e1",
      "tree": "e9b884d9969157f87e6a88a0de147af4022301e5",
      "parents": [
        "40bb54d197a10fe86d73073ee8202ba2812a05fa"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:12:46 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:12:46 2009 +0200"
      },
      "message": "cfq-iosched: tweak kick logic a bit more\n\nWe only kick the dispatch for an idling queue, if we think it\u0027s a\n(somewhat) fully merged request. Also allow a kick if we have other\nbusy queues in the system, since we don\u0027t want to risk waiting for\na potential merge in that case. It\u0027s better to get some work done and\nproceed.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "40bb54d197a10fe86d73073ee8202ba2812a05fa",
      "tree": "b0555a89cd9e40abbcdd420cdfb4a9113cd67042",
      "parents": [
        "c2572f2b4ffc27ba79211aceee3bef53a59bb5cd"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:11:10 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:11:10 2009 +0200"
      },
      "message": "cfq-iosched: no need to save interrupts in cfq_kick_queue()\n\nIt\u0027s called from the workqueue handlers from process context, so\nwe always have irqs enabled when entered.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d6ceb25e8d8bccf826848c2621a50d02c0a7f4ae",
      "tree": "31dec01cb624b27a1c29a5886dd801a67bba525e",
      "parents": [
        "053c525fcf976810f023d96472f414c0d5e6339b"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 14 14:18:16 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 08:28:12 2009 +0200"
      },
      "message": "cfq-iosched: don\u0027t delay queue kick for a merged request\n\n\"Zhang, Yanmin\" \u003cyanmin_zhang@linux.intel.com\u003e reports that commit\nb029195dda0129b427c6e579a3bb3ae752da3a93 introduced a regression\nof about 50% with sequential threaded read workloads. The test\ncase is:\n\ntiotest -k0 -k1 -k3 -f 80 -t 32\n\nwhich starts 32 threads each reading a 80MB file. Twiddle the kick\nqueue logic so that we do start IO immediately, if it appears to be\na fully merged request. We can\u0027t really detect that, so just check\nif the request is bigger than a page or not. The assumption is that\nsince single bio issues will first queue a single request with just\none page attached and then later do merges on that, if we already\nhave more than a page worth of data in the request, then the request\nis most likely good to go.\n\nVerified that this doesn\u0027t cause a regression with the test case that\ncommit b029195dda0129b427c6e579a3bb3ae752da3a93 was fixing. It does not,\nwe still see maximum sized requests for the queue-then-merge cases.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ff6657c6c8ac99444e5dd4c4f7c1dc9271173382",
      "tree": "ee970d04347ea49c85ba3f7f783798ee26fb1a36",
      "parents": [
        "b0b78f81a5a3bfe9442fcc3a9c13e298a742556a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 08 10:58:57 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 08:28:10 2009 +0200"
      },
      "message": "cfq-iosched: get rid of private SYNC/ASYNC defines\n\nWe can just use the block layer BLK_RW_SYNC/ASYNC defines now.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b0b78f81a5a3bfe9442fcc3a9c13e298a742556a",
      "tree": "bd920e9db9da9d90b892ba073ddb07209bdba8a9",
      "parents": [
        "48e70bc18ac81881dedd3aa327c55b924fc41ecf"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 08 10:56:08 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 08:28:10 2009 +0200"
      },
      "message": "cfq-iosched: use rw_is_sync() to see if rw flags are sync or not\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b029195dda0129b427c6e579a3bb3ae752da3a93",
      "tree": "7f8752d2fefac40b0b25720cc1b0fbbd8aed173a",
      "parents": [
        "2385327725419a76cfbca7258abd95908b8ba9eb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 11:38:31 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 11:38:31 2009 +0200"
      },
      "message": "cfq-iosched: don\u0027t let idling interfere with plugging\n\nWhen CFQ is waiting for a new request from a process, currently it\u0027ll\nimmediately restart queuing when it sees such a request. This doesn\u0027t\nwork very well with streamed IO, since we then end up splitting IO\nthat would otherwise have been merged nicely. For a simple dd test,\nthis causes 10x as many requests to be issued as we should have.\nNormally this goes unnoticed due to the low overhead of requests\nat the device side, but some hardware is very sensitive to request\nsizes and there it can cause big slow downs.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "75e50984f062de2abc4bd84c642923e2c48ce2ae",
      "tree": "57da8b176f77f0823f4a7b42cbf4e25f76bd98a6",
      "parents": [
        "2f5cb7381b737e24c8046fd4aeab571fb71315f5"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 08:56:14 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 08:56:14 2009 +0200"
      },
      "message": "cfq-iosched: kill two unused cfqq flags\n\nWe only manipulate the must_dispatch and queue_new flags, they are not\ntested anymore. So get rid of them.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2f5cb7381b737e24c8046fd4aeab571fb71315f5",
      "tree": "27b82d748bdf99296b8a914c51dad2fbea90aea3",
      "parents": [
        "3fbed4c61abd8458896e38633d10110cb5a589d4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 08:51:19 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 08:51:19 2009 +0200"
      },
      "message": "cfq-iosched: change dispatch logic to deal with single requests at the time\n\nThe IO scheduler core calls into the IO scheduler dispatch_request hook\nto move requests from the IO scheduler and into the driver dispatch\nlist. It only does so when the dispatch list is empty. CFQ moves several\nrequests to the dispatch list, which can cause higher latencies if we\nsuddenly have to switch to some important sync IO. Change the logic to\nmove one request at the time instead.\n\nThis should almost be functionally equivalent to what we did before,\nexcept that we now honor \u0027quantum\u0027 as the maximum queue depth at the\ndevice side from any single cfqq. If there\u0027s just a single active\ncfqq, we allow up to 4 times the normal quantum.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "aeb6fafb8fa53266d70ca7474fcda2bdaf96524a",
      "tree": "ebe8e0c616a9dbfdfe5184b64d0150ea02d3d1b2",
      "parents": [
        "644b2d99b7a8677a56909a7b1fde31677eba4471"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 06 14:48:07 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 08:04:54 2009 -0700"
      },
      "message": "block: Add flag for telling the IO schedulers NOT to anticipate more IO\n\nBy default, CFQ will anticipate more IO from a given io context if the\npreviously completed IO was sync. This used to be fine, since the only\nsync IO was reads and O_DIRECT writes. But with more \"normal\" sync writes\nbeing used now, we don\u0027t want to anticipate for those.\n\nAdd a bio/request flag that informs the IO scheduler that this is a sync\nrequest that we should not idle for. Introduce WRITE_ODIRECT specifically\nfor O_DIRECT writes, and make sure that the other sync writes set this\nflag.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3a9a3f6cc55418dd1525e636dccbbe13c394f652",
      "tree": "b23c46b8ecec0a338e4e81454e482f7dcd3ded0c",
      "parents": [
        "bc58ba9468d94d62c56ab9b47173583ec140b165"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Fri Jan 30 12:46:41 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 30 12:47:33 2009 +0100"
      },
      "message": "cfq-iosched: Allow RT requests to pre-empt ongoing BE timeslice\n\nThis patch adds the ability to pre-empt an ongoing BE timeslice when a RT\nrequest is waiting for the current timeslice to complete. This reduces the\nwait time to disk for RT requests from an upper bound of 4 (current value\nof cfq_quantum) to 1 disk request.\n\nApplied Jens\u0027 suggeested changes to avoid the rb lookup and use !cfq_class_rt()\nand retested.\n\nLatency(secs) for the RT task when doing sequential reads from 10G file.\n                       | only RT | RT + BE | RT + BE + this patch\nsmall (512 byte) reads | 143     | 163     | 145\nlarge (1Mb) reads      | 142     | 158     | 146\n\nSigned-off-by: Divyesh Shah \u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "62c1fe9d9f0a676fce89185b1513f0e5f473c72c",
      "tree": "28085a657fa93ed63b7dda20b5a84885e67d429e",
      "parents": [
        "8ae30b895805a6e2bb725b1d78b12daabd7eadfe"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 15 21:19:25 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:29:52 2008 +0100"
      },
      "message": "cfq-iosched: fix race between exiting queue and exiting task\n\nOriginal patch from Nikanth Karthikesan \u003cknikanth@suse.de\u003e\n\nWhen a queue exits the queue lock is taken and cfq_exit_queue() would free all\nthe cic\u0027s associated with the queue.\n\nBut when a task exits, cfq_exit_io_context() gets cic one by one and then\nlocks the associated queue to call __cfq_exit_single_io_context. It looks like\nbetween getting a cic from the ioc and locking the queue, the queue might have\nexited on another cpu.\n\nFix this by rechecking the cfq_io_context queue key inside the queue lock\nagain, and not calling into __cfq_exit_single_io_context() if somebody\nbeat us to it.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "30e0dc28bff9dc456cdfc2aae4aca78b8b1a1cec",
      "tree": "cb72eba9e27bf893928189c832d29e97bbe132ad",
      "parents": [
        "31dcfab0ae6eb0340d456931df4d478e17efc65d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Oct 20 15:44:28 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:29:51 2008 +0100"
      },
      "message": "cfq-iosched: remove limit of dispatch depth of max 4 times quantum\n\nThis basically limits the hardware queue depth to 4*quantum at any\npoint in time, which is 16 with the default settings. As CFQ uses\nother means to shrink the hardware queue when necessary in the first\nplace, there\u0027s really no need for this extra heuristic. Additionally,\nit ends up hurting performance in some cases.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b374d18a4bfce705e4a99ae9f501b53e86ecb283",
      "tree": "7e773464725a78e96a2017fa36cf9d4a4e29f73b",
      "parents": [
        "abf137dd7712132ee56d5b3143c2ff61a72a5faa"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Oct 31 10:05:07 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:29:50 2008 +0100"
      },
      "message": "block: get rid of elevator_t typedef\n\nJust use struct elevator_queue everywhere instead.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "64d01dc9e1927e6535627d73f2336c75d1dd3fe2",
      "tree": "1813333970f6ed1c1959edfc2842b00ed2b3a70e",
      "parents": [
        "08bafc0341f2f7920e9045bc32c40299cac8c21b"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Wed Dec 03 12:41:39 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:28:44 2008 +0100"
      },
      "message": "block: use cancel_work_sync() instead of kblockd_flush_work()\n\nAfter many improvements on kblockd_flush_work, it is now identical to\ncancel_work_sync, so a direct call to cancel_work_sync is suggested.\n\nThe only difference is that cancel_work_sync is a GPL symbol,\nso no non-GPL modules anymore.\n\nSigned-off-by: Cheng Renquan \u003ccrquan@gmail.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "99f9628aba4d8fb3b8d955c9efded0d0a1995fad"
}
