)]}'
{
  "log": [
    {
      "commit": "e8989fae38d9831c72b20375a206a919ca468c52",
      "tree": "2eeb1320e526cd0ba187465c0e6e19799dc1b956",
      "parents": [
        "03aa264ac15637b6f98374270bcdf31400965505"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Mar 05 13:15:20 2012 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Mar 06 21:27:23 2012 +0100"
      },
      "message": "blkcg: unify blkg\u0027s for blkcg policies\n\nCurrently, blkg is per cgroup-queue-policy combination.  This is\nunnatural and leads to various convolutions in partially used\nduplicate fields in blkg, config / stat access, and general management\nof blkgs.\n\nThis patch make blkg\u0027s per cgroup-queue and let them serve all\npolicies.  blkgs are now created and destroyed by blkcg core proper.\nThis will allow further consolidation of common management logic into\nblkcg core and API with better defined semantics and layering.\n\nAs a transitional step to untangle blkg management, elvswitch and\npolicy [de]registration, all blkgs except the root blkg are being shot\ndown during elvswitch and bypass.  This patch adds blkg_root_update()\nto update root blkg in place on policy change.  This is hacky and racy\nbut should be good enough as interim step until we get locking\nsimplified and switch over to proper in-place update for all blkgs.\n\n-v2: Root blkgs need to be updated on elvswitch too and blkg_alloc()\n     comment wasn\u0027t updated according to the function change.  Fixed.\n     Both pointed out by Vivek.\n\n-v3: v2 updated blkg_destroy_all() to invoke update_root_blkg_pd() for\n     all policies.  This freed root pd during elvswitch before the\n     last queue finished exiting and led to oops.  Directly invoke\n     update_root_blkg_pd() only on BLKIO_POLICY_PROP from\n     cfq_exit_queue().  This also is closer to what will be done with\n     proper in-place blkg update.  Reported by Vivek.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "5efd611351d1a847c72d74fb12ff4bd187c0cb2c",
      "tree": "bac28206d088426ab872eea98155cc100bd8d9b1",
      "parents": [
        "7ee9c5620504906e98451dc9a1945b2b9e892cb8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Mar 05 13:15:12 2012 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Mar 06 21:27:23 2012 +0100"
      },
      "message": "blkcg: add blkcg_{init|drain|exit}_queue()\n\nCurrently block core calls directly into blk-throttle for init, drain\nand exit.  This patch adds blkcg_{init|drain|exit}_queue() which wraps\nthe blk-throttle functions.  This is to give more control and\nvisiblity to blkcg core layer for proper layering.  Further patches\nwill add logic common to blkcg policies to the functions.\n\nWhile at it, collapse blk_throtl_release() into blk_throtl_exit().\nThere\u0027s no reason to keep them separate.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "7e5a8794492e43e9eebb68a98a23be055888ccd0",
      "tree": "cc049a23b2c994f910d3101860bc1c2ecb7aa35f",
      "parents": [
        "3d3c2379feb177a5fd55bb0ed76776dc9d4f3243"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:42 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:42 2011 +0100"
      },
      "message": "block, cfq: move io_cq exit/release to blk-ioc.c\n\nWith kmem_cache managed by blk-ioc, io_cq exit/release can be moved to\nblk-ioc too.  The odd -\u003eio_cq-\u003eexit/release() callbacks are replaced\nwith elevator_ops-\u003eelevator_exit_icq_fn() with unlinking from both ioc\nand q, and freeing automatically handled by blk-ioc.  The elevator\noperation only need to perform exit operation specific to the elevator\n- in cfq\u0027s case, exiting the cfqq\u0027s.\n\nAlso, clearing of io_cq\u0027s on q detach is moved to block core and\nautomatically performed on elevator switch and q release.\n\nBecause the q io_cq points to might be freed before RCU callback for\nthe io_cq runs, blk-ioc code should remember to which cache the io_cq\nneeds to be freed when the io_cq is released.  New field\nio_cq-\u003e__rcu_icq_cache is added for this purpose.  As both the new\nfield and rcu_head are used only after io_cq is released and the\nq/ioc_node fields aren\u0027t, they are put into unions.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "a73f730d013ff2788389fd0c46ad3e5510f124e6",
      "tree": "773987c8cbec56745d46f46382ad268ed91adf98",
      "parents": [
        "8ba61435d73f2274e12d4d823fde06735e8f6a54"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:37 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:37 2011 +0100"
      },
      "message": "block, cfq: move cfqd-\u003ecic_index to q-\u003eid\n\ncfq allocates per-queue id using ida and uses it to index cic radix\ntree from io_context.  Move it to q-\u003eid and allocate on queue init and\nfree on queue release.  This simplifies cfq a bit and will allow for\nfurther improvements of io context life-cycle management.\n\nThis patch doesn\u0027t introduce any functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "34f6055c80285e4efb3f602a9119db75239744dc",
      "tree": "eb05185976c1941d196d259c3dfc2a4cfa7469d1",
      "parents": [
        "1ba64edef6051d2ec79bb2fbd3a0c8f0df00ab55"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:37 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:37 2011 +0100"
      },
      "message": "block: add blk_queue_dead()\n\nThere are a number of QUEUE_FLAG_DEAD tests.  Add blk_queue_dead()\nmacro and use it.\n\nThis patch doesn\u0027t introduce any functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "c9a929dde3913780b5c416f4bb9d9ed804f509ce",
      "tree": "1acadc374d8f1faebdf07f08fae0993a38a8fd0d",
      "parents": [
        "bd87b5898a72b1aef6acf3705c61c9f6372adf0c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Oct 19 14:42:16 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:42:16 2011 +0200"
      },
      "message": "block: fix request_queue lifetime handling by making blk_queue_cleanup() properly shutdown\n\nrequest_queue is refcounted but actually depdends on lifetime\nmanagement from the queue owner - on blk_cleanup_queue(), block layer\nexpects that there\u0027s no request passing through request_queue and no\nnew one will.\n\nThis is fundamentally broken.  The queue owner (e.g. SCSI layer)\ndoesn\u0027t have a way to know whether there are other active users before\ncalling blk_cleanup_queue() and other users (e.g. bsg) don\u0027t have any\nguarantee that the queue is and would stay valid while it\u0027s holding a\nreference.\n\nWith delay added in blk_queue_bio() before queue_lock is grabbed, the\nfollowing oops can be easily triggered when a device is removed with\nin-flight IOs.\n\n sd 0:0:1:0: [sdb] Stopping disk\n ata1.01: disabled\n general protection fault: 0000 [#1] PREEMPT SMP\n CPU 2\n Modules linked in:\n\n Pid: 648, comm: test_rawio Not tainted 3.1.0-rc3-work+ #56 Bochs Bochs\n RIP: 0010:[\u003cffffffff8137d651\u003e]  [\u003cffffffff8137d651\u003e] elv_rqhash_find+0x61/0x100\n ...\n Process test_rawio (pid: 648, threadinfo ffff880019efa000, task ffff880019ef8a80)\n ...\n Call Trace:\n  [\u003cffffffff8137d774\u003e] elv_merge+0x84/0xe0\n  [\u003cffffffff81385b54\u003e] blk_queue_bio+0xf4/0x400\n  [\u003cffffffff813838ea\u003e] generic_make_request+0xca/0x100\n  [\u003cffffffff81383994\u003e] submit_bio+0x74/0x100\n  [\u003cffffffff811c53ec\u003e] dio_bio_submit+0xbc/0xc0\n  [\u003cffffffff811c610e\u003e] __blockdev_direct_IO+0x92e/0xb40\n  [\u003cffffffff811c39f7\u003e] blkdev_direct_IO+0x57/0x60\n  [\u003cffffffff8113b1c5\u003e] generic_file_aio_read+0x6d5/0x760\n  [\u003cffffffff8118c1ca\u003e] do_sync_read+0xda/0x120\n  [\u003cffffffff8118ce55\u003e] vfs_read+0xc5/0x180\n  [\u003cffffffff8118cfaa\u003e] sys_pread64+0x9a/0xb0\n  [\u003cffffffff81afaf6b\u003e] system_call_fastpath+0x16/0x1b\n\nThis happens because blk_queue_cleanup() destroys the queue and\nelevator whether IOs are in progress or not and DEAD tests are\nsprinkled in the request processing path without proper\nsynchronization.\n\nSimilar problem exists for blk-throtl.  On queue cleanup, blk-throtl\nis shutdown whether it has requests in it or not.  Depending on\ntiming, it either oopses or throttled bios are lost putting tasks\nwhich are waiting for bio completion into eternal D state.\n\nThe way it should work is having the usual clear distinction between\nshutdown and release.  Shutdown drains all currently pending requests,\nmarks the queue dead, and performs partial teardown of the now\nunnecessary part of the queue.  Even after shutdown is complete,\nreference holders are still allowed to issue requests to the queue\nalthough they will be immmediately failed.  The rest of teardown\nhappens on release.\n\nThis patch makes the following changes to make blk_queue_cleanup()\nbehave as proper shutdown.\n\n* QUEUE_FLAG_DEAD is now set while holding both q-\u003eexit_mutex and\n  queue_lock.\n\n* Unsynchronized DEAD check in generic_make_request_checks() removed.\n  This couldn\u0027t make any meaningful difference as the queue could die\n  after the check.\n\n* blk_drain_queue() updated such that it can drain all requests and is\n  now called during cleanup.\n\n* blk_throtl updated such that it checks DEAD on grabbing queue_lock,\n  drains all throttled bios during cleanup and free td when queue is\n  released.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "5c04b426f2e8b46cfc7969a35b2631063a3c646c",
      "tree": "2d27d9f5d2fe5d5e8fbc01a467ec58bcb50235c1",
      "parents": [
        "499337bb6511e665a236a6a947f819d98ea340c6",
        "899e3ee404961a90b828ad527573aaaac39f0ab1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "message": "Merge branch \u0027v3.1-rc10\u0027 into for-3.2/core\n\nConflicts:\n\tblock/blk-core.c\n\tinclude/linux/blkdev.h\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "777eb1bf15b8532c396821774bf6451e563438f5",
      "tree": "8363e63bae76eb049f4c8d0460ef8e1f74f0ca91",
      "parents": [
        "a102a9ece5489e1718cd7543aa079082450ac3a2"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Wed Sep 28 08:07:01 2011 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 28 08:07:01 2011 -0600"
      },
      "message": "block: Free queue resources at blk_release_queue()\n\nA kernel crash is observed when a mounted ext3/ext4 filesystem is\nphysically removed. The problem is that blk_cleanup_queue() frees up\nsome resources eg by calling elevator_exit(), which are not checked for\nin normal operation. So we should rather move these calls to the\ndestructor function blk_release_queue() as at that point all remaining\nreferences are gone. However, in doing so we have to ensure that any\nexternally supplied queue_lock is disconnected as the driver might free\nup the lock after the call of blk_cleanup_queue(),\n\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "499337bb6511e665a236a6a947f819d98ea340c6",
      "tree": "40ec21dd59a8108a731c991d9d590540d42d23ff",
      "parents": [
        "75df713627f28f88b901b329c8857747545fd4ab"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Sep 21 10:01:22 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 21 10:01:22 2011 +0200"
      },
      "message": "block/blk-sysfs.c: fix kerneldoc references\n\nThe kerneldoc for blk_release_queue() is referring to blk_cleanup_queue().\n\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@google.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "e8037d49835482c9534a9a07bed0d0ea831135ae",
      "tree": "f4d7f714c8a4165cacdcc83e9c6bfe7efb527a24",
      "parents": [
        "89c63a8ef36a621cb6790c1a56c737e6805ad8f4"
      ],
      "author": {
        "name": "Eric Seppanen",
        "email": "eric@purestorage.com",
        "time": "Tue Aug 23 21:25:12 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Aug 24 08:51:34 2011 +0200"
      },
      "message": "block: Fix queue_flag update when rq_affinity goes from 2 to 1\n\nCommit 5757a6d76cdf added the QUEUE_FLAG_SAME_FORCE flag, but fails to\nclear that flag when the current state is \u00272\u0027 (SAME_COMP + SAME_FORCE)\nand the new state is \u00271\u0027 (SAME_COMP).\n\nAcked-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nReviewed-by: Roland Dreier \u003croland@purestorage.com\u003e\nSigned-off-by: Eric Seppanen \u003ceric@purestorage.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5757a6d76cdf6dda2a492c09b985c015e86779b1",
      "tree": "6356a6353639eb473dd917a1b2062f9e7e20de22",
      "parents": [
        "ef3230880abd36553ab442363d3c9a0661f00769"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jul 23 20:44:25 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Jul 23 20:44:25 2011 +0200"
      },
      "message": "block: strict rq_affinity\n\nSome systems benefit from completions always being steered to the strict\nrequester cpu rather than the looser \"per-socket\" steering that\nblk_cpu_to_group() attempts by default. This is because the first\nCPU in the group mask ends up being completely overloaded with work,\nwhile the others (including the original submitter) has power left\nto spare.\n\nAllow the strict mode to be set by writing \u00272\u0027 to the sysfs control\nfile. This is identical to the scheme used for the nomerges file,\nwhere \u00272\u0027 is a more aggressive setting than just being turned on.\n\necho 2 \u003e /sys/block/\u003cbdev\u003e/queue/rq_affinity\n\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Roland Dreier \u003croland@purestorage.com\u003e\nTested-by: Dave Jiang \u003cdave.jiang@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "698567f3fa790fea37509a54dea855302dd88331",
      "tree": "7a1df976a0eb12cab03e82c18809a30d5482fee4",
      "parents": [
        "d70d0711edd8076ec2ce0ed109106e2df950681b",
        "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:33:15 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri May 20 20:33:15 2011 +0200"
      },
      "message": "Merge commit \u0027v2.6.39\u0027 into for-2.6.40/core\n\nSince for-2.6.40/core was forked off the 2.6.39 devel tree, we\u0027ve\nhad churn in the core area that makes it difficult to handle\npatches for eg cfq or blk-throttle. Instead of requiring that they\nbe based in older versions with bugs that have been fixed later\nin the rc cycle, merge in 2.6.39 final.\n\nAlso fixes up conflicts in the below files.\n\nConflicts:\n\tdrivers/block/paride/pcd.c\n\tdrivers/cdrom/viocd.c\n\tdrivers/ide/ide-cd.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a934a00a69e940b126b9bdbf83e630ef5fe43523",
      "tree": "b3f82d7b0a6c34c4d449debd2d1d242bdbf84b56",
      "parents": [
        "bbdd304cf66fbf2b4b2d28418dc619d443635e83"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed May 18 10:37:35 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed May 18 10:37:35 2011 +0200"
      },
      "message": "block: Fix discard topology stacking and reporting\n\nIn some cases we would end up stacking discard_zeroes_data incorrectly.\nFix this by enabling the feature by default for stacking drivers and\nclearing it for low-level drivers. Incorporating a device that does not\nsupport dzd will then cause the feature to be disabled in the stacking\ndriver.\n\nAlso ensure that the maximum discard value does not overflow when\nexported in sysfs and return 0 in the alignment and dzd fields for\ndevices that don\u0027t support discard.\n\nReported-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "60735b6362f29b52b5635a2dfa9ab5ad39948345",
      "tree": "e590ce1697965a4ccb48af5cb729c64452cdcc6f",
      "parents": [
        "ed5302d3c25006a9edc7a7fbea97a30483f89ef7"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Tue Apr 19 13:50:40 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 19 13:51:53 2011 +0200"
      },
      "message": "block: Remove the extra check in queue_requests_store\n\nIn queue_requests_store, the code looks like\n\tif (rl-\u003ecount[BLK_RW_SYNC] \u003e\u003d q-\u003enr_requests) {\n\t\tblk_set_queue_full(q, BLK_RW_SYNC);\n\t} else if (rl-\u003ecount[BLK_RW_SYNC]+1 \u003c\u003d q-\u003enr_requests) {\n\t\tblk_clear_queue_full(q, BLK_RW_SYNC);\n\t\twake_up(\u0026rl-\u003ewait[BLK_RW_SYNC]);\n\t}\nIf we don\u0027t satify the situation of \"if\", we can get that\nrl-\u003ecount[BLK_RW_SYNC} \u003c q-\u003enr_quests. It is the same as\nrl-\u003ecount[BLK_RW_SYNC]+1 \u003c\u003d q-\u003enr_requests.\nAll the \"else\" should satisfy the \"else if\" check so it isn\u0027t\nneeded actually.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "ed5302d3c25006a9edc7a7fbea97a30483f89ef7",
      "tree": "7322cdd2607d7d8ffaf8a6539ca001771928363f",
      "parents": [
        "d350e6b6e819df0a383ff34465720bfaa0f91c79"
      ],
      "author": {
        "name": "Liu Yuan",
        "email": "tailai.ly@taobao.com",
        "time": "Tue Apr 19 13:47:58 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 19 13:51:53 2011 +0200"
      },
      "message": "block, blk-sysfs: Fix an err return path in blk_register_queue()\n\nWe do not call blk_trace_remove_sysfs() in err return path\nif kobject_add() fails. This path fixes it.\n\nCc: stable@kernel.org\nSigned-off-by: Liu Yuan \u003ctailai.ly@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "80656b67b3988f83edd86a280d9937124fe62050",
      "tree": "58d23b396fa17262b697134cf2a58651f26d3460",
      "parents": [
        "f4af3c3d077a004762aaad052049c809fd8c6f0c"
      ],
      "author": {
        "name": "Liu Yuan",
        "email": "tailai.ly@taobao.com",
        "time": "Wed Apr 13 22:14:54 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Apr 13 22:14:54 2011 +0200"
      },
      "message": "block, blk-sysfs: Use the variable directly instead of a function call\n\nIn the function blk_register_queue(), var _dev_ is already assigned by\ndisk_to_dev().So use it directly instead of calling disk_to_dev() again.\n\nSigned-off-by: Liu Yuan \u003ctailai.ly@taobao.com\u003e\n\nModified by me to delete an empty line in the same function while\nin there anyway.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "da527770007fce8e4541947d47918248286da875",
      "tree": "fc518172887409133e8dea827067209adfdb1c3c",
      "parents": [
        "cd25f54961273c2e4cbd47441e04832468382a5e"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Mar 02 19:05:33 2011 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Mar 02 19:06:49 2011 -0500"
      },
      "message": "block: Move blk_throtl_exit() call to blk_cleanup_queue()\n\nMove blk_throtl_exit() in blk_cleanup_queue() as blk_throtl_exit() is\nwritten in such a way that it needs queue lock. In blk_release_queue()\nthere is no gurantee that -\u003equeue_lock is still around.\n\nInitially blk_throtl_exit() was in blk_cleanup_queue() but Ingo reported\none problem.\n\n  https://lkml.org/lkml/2010/10/23/86\n\n  And a quick fix moved blk_throtl_exit() to blk_release_queue().\n\n        commit 7ad58c028652753814054f4e3ac58f925e7343f4\n        Author: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n        Date:   Sat Oct 23 20:40:26 2010 +0200\n\n        block: fix use-after-free bug in blk throttle code\n\nThis patch reverts above change and does not try to shutdown the\nthrotl work in blk_sync_queue(). By avoiding call to\nthrotl_shutdown_timer_wq() from blk_sync_queue(), we should also avoid\nthe problem reported by Ingo.\n\nblk_sync_queue() seems to be used only by md driver and it seems to be\nusing it to make sure q-\u003eunplug_fn is not called as md registers its\nown unplug functions and it is about to free up the data structures\nused by unplug_fn(). Block throttle does not call back into unplug_fn()\nor into md. So there is no need to cancel blk throttle work.\n\nIn fact I think cancelling block throttle work is bad because it might\nhappen that some bios are throttled and scheduled to be dispatched later\nwith the help of pending work and if work is cancelled, these bios might\nnever be dispatched.\n\nBlock layer also uses blk_sync_queue() during blk_cleanup_queue() and\nblk_release_queue() time. That should be safe as we are also calling\nblk_throtl_exit() which should make sure all the throttling related\ndata structures are cleaned up.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e692cb668fdd5a712c6ed2a2d6f2a36ee83997b4",
      "tree": "accf682fe5e1388f305b5fc364a931dfda5f3fb9",
      "parents": [
        "04a6b516cdc6efc2500b52a540cf65be8c5aaf9e"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Dec 01 19:41:49 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Dec 17 08:35:53 2010 +0100"
      },
      "message": "block: Deprecate QUEUE_FLAG_CLUSTER and use queue_limits instead\n\nWhen stacking devices, a request_queue is not always available. This\nforced us to have a no_cluster flag in the queue_limits that could be\nused as a carrier until the request_queue had been set up for a\nmetadevice.\n\nThere were several problems with that approach. First of all it was up\nto the stacking device to remember to set queue flag after stacking had\ncompleted. Also, the queue flag and the queue limits had to be kept in\nsync at all times. We got that wrong, which could lead to us issuing\ncommands that went beyond the max scatterlist limit set by the driver.\n\nThe proper fix is to avoid having two flags for tracking the same thing.\nWe deprecate QUEUE_FLAG_CLUSTER and use the queue limit directly in the\nblock layer merging functions. The queue_limit \u0027no_cluster\u0027 is turned\ninto \u0027cluster\u0027 to avoid double negatives and to ease stacking.\nClustering defaults to being enabled as before. The queue flag logic is\nremoved from the stacking function, and explicitly setting the cluster\nflag is no longer necessary in DM and MD.\n\nReported-by: Ed Lin \u003ced.lin@promise.com\u003e\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7ad58c028652753814054f4e3ac58f925e7343f4",
      "tree": "2e3bc1c5e3c98078b970483cd49a49d7c1ae0dcf",
      "parents": [
        "7f3883962870dd28b5f2322ac44a9d03640ef448"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Oct 23 20:40:26 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Oct 23 20:40:26 2010 +0200"
      },
      "message": "block: fix use-after-free bug in blk throttle code\n\nblk_throtl_exit() frees the throttle data hanging off the queue\nin blk_cleanup_queue(), but blk_put_queue() will indirectly\ndereference this data when calling blk_sync_queue() which in\nturns calls throtl_shutdown_timer_wq().\n\nFix this by moving the freeing of the throttle data to when\nthe queue is truly being released, and post the call to\nblk_sync_queue().\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nTested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e9dd2b6837e26fe202708cce5ea4bb4ee3e3482e",
      "tree": "f42fd892495bfc4cbb740d06b016d267c9c42d00",
      "parents": [
        "4f3a29dadaf999a273f1e7fe2476595d0283eef3",
        "b4627321e18582dcbdeb45d77df29d3177107c65"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:00:32 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:00:32 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/core\u0027 of git://git.kernel.dk/linux-2.6-block: (39 commits)\n  cfq-iosched: Fix a gcc 4.5 warning and put some comments\n  block: Turn bvec_k{un,}map_irq() into static inline functions\n  block: fix accounting bug on cross partition merges\n  block: Make the integrity mapped property a bio flag\n  block: Fix double free in blk_integrity_unregister\n  block: Ensure physical block size is unsigned int\n  blkio-throttle: Fix possible multiplication overflow in iops calculations\n  blkio-throttle: limit max iops value to UINT_MAX\n  blkio-throttle: There is no need to convert jiffies to milli seconds\n  blkio-throttle: Fix link failure failure on i386\n  blkio: Recalculate the throttled bio dispatch time upon throttle limit change\n  blkio: Add root group to td-\u003etg_list\n  blkio: deletion of a cgroup was causes oops\n  blkio: Do not export throttle files if CONFIG_BLK_DEV_THROTTLING\u003dn\n  block: set the bounce_pfn to the actual DMA limit rather than to max memory\n  block: revert bad fix for memory hotplug causing bounces\n  Fix compile error in blk-exec.c for !CONFIG_DETECT_HUNG_TASK\n  block: set the bounce_pfn to the actual DMA limit rather than to max memory\n  block: Prevent hang_check firing during long I/O\n  cfq: improve fsync performance for small files\n  ...\n\nFix up trivial conflicts due to __rcu sparse annotation in include/linux/genhd.h\n"
    },
    {
      "commit": "13f05c8d8e98bbdce89158bfdb2e380940695a88",
      "tree": "055215e7e2b1bdc684ead64daa61b30b35eaa3c5",
      "parents": [
        "c8bf1336824ebd698d37b71763e1c43190f2229a"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Sep 10 20:50:10 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Fri Sep 10 20:50:10 2010 +0200"
      },
      "message": "block/scsi: Provide a limit on the number of integrity segments\n\nSome controllers have a hardware limit on the number of protection\ninformation scatter-gather list segments they can handle.\n\nIntroduce a max_integrity_segments limit in the block layer and provide\na new scsi_host_template setting that allows HBA drivers to provide a\nvalue suitable for the hardware.\n\nAdd support for honoring the integrity segment limit when merging both\nbios and requests.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@carl.home.kernel.dk\u003e\n"
    },
    {
      "commit": "c87ffbb812cf6150097a5095b031f4013a8f78a5",
      "tree": "f22328b7cbaac2166024d9e0fdac9332b9b1115e",
      "parents": [
        "4ee69851cd4880f574d22f5ce08bec35b01c94e3"
      ],
      "author": {
        "name": "Xiaotian Feng",
        "email": "dfeng@redhat.com",
        "time": "Mon Aug 23 12:30:29 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 12:30:29 2010 +0200"
      },
      "message": "block: put dev-\u003ekobj in blk_register_queue fail path\n\nkernel needs to kobject_put on dev-\u003ekobj if elv_register_queue fails.\n\nSigned-off-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nCc: \"Martin K. Petersen\" \u003cmartin.petersen@oracle.com\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nCc: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nCc: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "956bcb7c1a9a73c6d5db66e83f32c785d06dc8fc",
      "tree": "dca3c08c3bff512c9d47a78c6762b006e165cc5d",
      "parents": [
        "e2e1a148bc45855816ae6b4692ce29d0020fa22e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:13:50 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:13:50 2010 +0200"
      },
      "message": "block: add helpers for the trivial queue flag sysfs show/store entries\n\nThe code for nonrot, random, and io stats are completely identical.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e2e1a148bc45855816ae6b4692ce29d0020fa22e",
      "tree": "fd5ec8a580d4333b471acfe50f6f92b4cc880087",
      "parents": [
        "841fdffdd382722d33579a6aa1487e8a4e526dbd"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Jun 09 10:42:09 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:13:00 2010 +0200"
      },
      "message": "block: add sysfs knob for turning off disk entropy contributions\n\nThere are two reasons for doing this:\n\n- On SSD disks, the completion times aren\u0027t as random as they\n  are for rotational drives. So it\u0027s questionable whether they\n  should contribute to the random pool in the first place.\n\n- Calling add_disk_randomness() has a lot of overhead.\n\nThis adds /sys/block/\u003cdev\u003e/queue/add_random that will allow you to\nswitch off on a per-device basis. The default setting is on, so there\nshould be no functional changes from this patch.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2f4084209adc77f9a1c9f38db3019a509e167882",
      "tree": "775657114c885505ecc46605e29ea1470e986f76",
      "parents": [
        "2f10ffcfb28beb35137d9e86992c771b4a6c5f2a",
        "3440c49f5c5ecb4f29b0544aa87da71888404f8f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 09 11:50:29 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 09 11:50:29 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block: (34 commits)\n  cfq-iosched: Fix the incorrect timeslice accounting with forced_dispatch\n  loop: Update mtime when writing using aops\n  block: expose the statistics in blkio.time and blkio.sectors for the root cgroup\n  backing-dev: Handle class_create() failure\n  Block: Fix block/elevator.c elevator_get() off-by-one error\n  drbd: lc_element_by_index() never returns NULL\n  cciss: unlock on error path\n  cfq-iosched: Do not merge queues of BE and IDLE classes\n  cfq-iosched: Add additional blktrace log messages in CFQ for easier debugging\n  i2o: Remove the dangerous kobj_to_i2o_device macro\n  block: remove 16 bytes of padding from struct request on 64bits\n  cfq-iosched: fix a kbuild regression\n  block: make CONFIG_BLK_CGROUP visible\n  Remove GENHD_FL_DRIVERFS\n  block: Export max number of segments and max segment size in sysfs\n  block: Finalize conversion of block limits functions\n  block: Fix overrun in lcm() and move it to lib\n  vfs: improve writeback_inodes_wb()\n  paride: fix off-by-one test\n  drbd: fix al-to-on-disk-bitmap for 4k logical_block_size\n  ...\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "b4b7a4ef097f288f724420b473dbf92a89c0ab7e",
      "tree": "23ad8101e3e77c32a8d1e1b95a9c1cd7f7a475b7",
      "parents": [
        "e9ce335df51ff782035a15c261a3c0c9892a1767",
        "a3d3203e4bb40f253b1541e310dc0f9305be7c84"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Mar 19 08:05:10 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Mar 19 08:05:10 2010 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-linus\n\nConflicts:\n\tblock/Kconfig\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c77a5710b7e23847bfdb81fcaa10b585f65c960a",
      "tree": "52a09887c6396d71545e321f508a511cfb9cdb0f",
      "parents": [
        "ee714f2dd33e726346e34f5cda12543162f4753e"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Mar 10 00:48:33 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Mar 15 12:48:00 2010 +0100"
      },
      "message": "block: Export max number of segments and max segment size in sysfs\n\nThese two values are useful when debugging issues surrounding maximum\nI/O size.  Put them in sysfs with the rest of the queue limits.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "52cf25d0ab7f78eeecc59ac652ed5090f69b619e",
      "tree": "031d1ffb3890bd69c0260c864c512e0be62ac05c",
      "parents": [
        "6c1733aca0b48db4d0e660d54976a1cca25b5eaf"
      ],
      "author": {
        "name": "Emese Revfy",
        "email": "re.emese@gmail.com",
        "time": "Tue Jan 19 02:58:23 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Sun Mar 07 17:04:49 2010 -0800"
      },
      "message": "Driver core: Constify struct sysfs_ops in struct kobj_type\n\nConstify struct sysfs_ops.\n\nThis is part of the ops structure constification\neffort started by Arjan van de Ven et al.\n\nBenefits of this constification:\n\n * prevents modification of data that is shared\n   (referenced) by many other structure instances\n   at runtime\n\n * detects/prevents accidental (but not intentional)\n   modification attempts on archs that enforce\n   read-only kernel data at runtime\n\n * potentially better optimized code as the compiler\n   can assume that the const data cannot be changed\n\n * the compiler/linker move const data into .rodata\n   and therefore exclude them from false sharing\n\nSigned-off-by: Emese Revfy \u003cre.emese@gmail.com\u003e\nAcked-by: David Teigland \u003cteigland@redhat.com\u003e\nAcked-by: Matt Domsch \u003cMatt_Domsch@dell.com\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nAcked-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nAcked-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "488991e28e55b4fbca8067edf0259f69d1a6f92c",
      "tree": "fea5e0aca42e338137cc050e66aaeb5f539e3d21",
      "parents": [
        "47483e25205f1f8d79784f0f7c733941bc080ec0"
      ],
      "author": {
        "name": "Alan D. Brunelle",
        "email": "Alan.Brunelle@hp.com",
        "time": "Fri Jan 29 09:04:08 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 29 09:04:08 2010 +0100"
      },
      "message": "block: Added in stricter no merge semantics for block I/O\n\nUpdated \u0027nomerges\u0027 tunable to accept a value of \u00272\u0027 - indicating that _no_\nmerges at all are to be attempted (not even the simple one-hit cache).\n\nThe following table illustrates the additional benefit - 5 minute runs of\na random I/O load were applied to a dozen devices on a 16-way x86_64 system.\n\nnomerges        Throughput      %System         Improvement (tput / %sys)\n--------        ------------    -----------     -------------------------\n0               12.45 MB/sec    0.669365609\n1               12.50 MB/sec    0.641519199     0.40% / 2.71%\n2               12.52 MB/sec    0.639849750     0.56% / 2.96%\n\nSigned-off-by: Alan D. Brunelle \u003calan.brunelle@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "98262f2762f0067375f83824d81ea929e37e6bfe",
      "tree": "a26618d5c305eed975501c80cb02bc0f1b6e4524",
      "parents": [
        "464191c65b85a8ec68a6e1a6293af625287c807e"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Thu Dec 03 09:24:48 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 09:24:48 2009 +0100"
      },
      "message": "block: Allow devices to indicate whether discarded blocks are zeroed\n\nThe discard ioctl is used by mkfs utilities to clear a block device\nprior to putting metadata down.  However, not all devices return zeroed\nblocks after a discard.  Some drives return stale data, potentially\ncontaining old superblocks.  It is therefore important to know whether\ndiscarded blocks are properly zeroed.\n\nBoth ATA and SCSI drives have configuration bits that indicate whether\nzeroes are returned after a discard operation.  Implement a block level\ninterface that allows this information to be bubbled up the stack and\nqueried via a new block device ioctl.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "86b37281411cf1e9bc0a6b5406c45edb7bd9ea5d",
      "tree": "729db57dd52054af1bc16b4afb131093dfc9d255",
      "parents": [
        "cf7c25cf91f632a3528669fc0876e1fc8355ff9b"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Nov 10 11:50:21 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Nov 10 11:50:21 2009 +0100"
      },
      "message": "block: Expose discard granularity\n\nWhile SSDs track block usage on a per-sector basis, RAID arrays often\nhave allocation blocks that are bigger.  Allow the discard granularity\nand alignment to be set and teach the topology stacking logic how to\nhandle them.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "48c0d4d4c04dd520c55e0fd756fa4e7c83de3d13",
      "tree": "24994d5202e9cbe7ffcedf0f826a827e78d4e146",
      "parents": [
        "1e6f2dc11984b81c6438ff6cd45cdf15a02e3dfd"
      ],
      "author": {
        "name": "Zdenek Kabelac",
        "email": "zdenek.kabelac@gmail.com",
        "time": "Fri Sep 25 06:19:26 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 01 21:15:46 2009 +0200"
      },
      "message": "Add missing blk_trace_remove_sysfs to be in pair with blk_trace_init_sysfs\n\nAdd missing blk_trace_remove_sysfs to be in pair with blk_trace_init_sysfs\nintroduced in commit 1d54ad6da9192fed5dd3b60224d9f2dfea0dcd82.\nRelease kobject also in case the request_fn is NULL.\n\nProblem was noticed via kmemleak backtrace when some sysfs entries were\nnote properly destroyed during  device removal:\n\nunreferenced object 0xffff88001aa76640 (size 80):\n  comm \"lvcreate\", pid 2120, jiffies 4294885144\n  hex dump (first 32 bytes):\n    01 00 00 00 00 00 00 00 f0 65 a7 1a 00 88 ff ff  .........e......\n    90 66 a7 1a 00 88 ff ff 86 1d 53 81 ff ff ff ff  .f........S.....\n  backtrace:\n    [\u003cffffffff813f9cc6\u003e] kmemleak_alloc+0x26/0x60\n    [\u003cffffffff8111d693\u003e] kmem_cache_alloc+0x133/0x1c0\n    [\u003cffffffff81195891\u003e] sysfs_new_dirent+0x41/0x120\n    [\u003cffffffff81194b0c\u003e] sysfs_add_file_mode+0x3c/0xb0\n    [\u003cffffffff81197c81\u003e] internal_create_group+0xc1/0x1a0\n    [\u003cffffffff81197d93\u003e] sysfs_create_group+0x13/0x20\n    [\u003cffffffff810d8004\u003e] blk_trace_init_sysfs+0x14/0x20\n    [\u003cffffffff8123f45c\u003e] blk_register_queue+0x3c/0xf0\n    [\u003cffffffff812447e4\u003e] add_disk+0x94/0x160\n    [\u003cffffffffa00d8b08\u003e] dm_create+0x598/0x6e0 [dm_mod]\n    [\u003cffffffffa00de951\u003e] dev_create+0x51/0x350 [dm_mod]\n    [\u003cffffffffa00de823\u003e] ctl_ioctl+0x1a3/0x240 [dm_mod]\n    [\u003cffffffffa00de8f2\u003e] dm_compat_ctl_ioctl+0x12/0x20 [dm_mod]\n    [\u003cffffffff81177bfd\u003e] compat_sys_ioctl+0xcd/0x4f0\n    [\u003cffffffff81036ed8\u003e] sysenter_dispatch+0x7/0x2c\n    [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\nSigned-off-by: Zdenek Kabelac \u003czkabelac@redhat.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b8a9ae779f2c7049071034661e09cb7e1e82250c",
      "tree": "e7063b668cc68f4337f1d6545e71d1f881d57e21",
      "parents": [
        "3c5820c743479285ce2678fd3c12b1fd39fe998f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 22:44:29 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Sep 14 08:24:53 2009 +0200"
      },
      "message": "block: don\u0027t assume device has a request list backing in nr_requests store\n\nStacked devices do not. For now, just error out with -EINVAL. Later\nwe could make the limit apply on stacked devices too, for throttling\nreasons.\n\nThis fixes\n\n5a54cd13353bb3b88887604e2c980aa01e314309\n\nand should go into 2.6.31 stable as well.\n\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c295fc05789653ef24f296299df7c5f92fe74dce",
      "tree": "f1b14e69ba862d41baafbb30212e918e35ba626a",
      "parents": [
        "adda766193ea1cf3137484a9521972d080d0b7af"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Tue Sep 01 22:40:15 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Sep 01 22:40:15 2009 +0200"
      },
      "message": "block: Allow changing max_sectors_kb above the default 512\n\nThe patch \"block: Use accessor functions for queue limits\"\n(ae03bf639a5027d27270123f5f6e3ee6a412781d) changed queue_max_sectors_store()\nto use blk_queue_max_sectors() instead of directly assigning the value.\n\nBut blk_queue_max_sectors() differs a bit\n1. It sets both max_sectors_kb, and max_hw_sectors_kb\n2. Never allows one to change max_sectors_kb above BLK_DEF_MAX_SECTORS. If one\nspecifies a value greater then max_hw_sectors is set to that value but\nmax_sectors is set to BLK_DEF_MAX_SECTORS\n\nI am not sure whether blk_queue_max_sectors() should be changed, as it seems\nto be that way for a long time. And there may be callers dependent on that\nbehaviour.\n\nThis patch simply reverts to the older way of directly assigning the value to\nmax_sectors as it was before.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9cb308ce8d32a1fb3600acab6034e19a90228743",
      "tree": "774c9b00be1b417cc805895b4da83dd59ea144c9",
      "parents": [
        "8f47428704c2fd6f787a6f340071b9c338b65803"
      ],
      "author": {
        "name": "Xiaotian Feng",
        "email": "dfeng@redhat.com",
        "time": "Fri Jul 17 15:26:26 2009 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 17 16:54:15 2009 +0900"
      },
      "message": "block: sysfs fix mismatched queue_var_{store,show} in 64bit kernel\n\nIn blk-sysfs.c, queue_var_store uses unsigned long to store data,\nbut queue_var_show uses unsigned int to show data.  This causes,\n\n\t# echo 70000000000 \u003e /sys/block/\u003cdev\u003e/queue/read_ahead_kb\n\t# cat /sys/block/\u003cdev\u003e/queue/read_ahead_kb \u003d\u003e get wrong value\n\nFix it by using unsigned long.\n\nWhile at it, convert queue_rq_affinity_show() such that it uses bool\nvariable instead of explicit !\u003d 0 testing.\n\nSigned-off-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "c9059598ea8981d02356eead3188bf7fa4d717b8",
      "tree": "03e73b20a30e988da7c6a3e0ad93b2dc5843274d",
      "parents": [
        "0a33f80a8373eca7f4bea3961d1346c3815fa5ed",
        "b0fd271d5fba0b2d00888363f3869e3f9b26caa9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 10:52:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 11:10:35 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block: (153 commits)\n  block: add request clone interface (v2)\n  floppy: fix hibernation\n  ramdisk: remove long-deprecated \"ramdisk\u003d\" boot-time parameter\n  fs/bio.c: add missing __user annotation\n  block: prevent possible io_context-\u003erefcount overflow\n  Add serial number support for virtio_blk, V4a\n  block: Add missing bounce_pfn stacking and fix comments\n  Revert \"block: Fix bounce limit setting in DM\"\n  cciss: decode unit attention in SCSI error handling code\n  cciss: Remove no longer needed sendcmd reject processing code\n  cciss: change SCSI error handling routines to work with interrupts enabled.\n  cciss: separate error processing and command retrying code in sendcmd_withirq_core()\n  cciss: factor out fix target status processing code from sendcmd functions\n  cciss: simplify interface of sendcmd() and sendcmd_withirq()\n  cciss: factor out core of sendcmd_withirq() for use by SCSI error handling code\n  cciss: Use schedule_timeout_uninterruptible in SCSI error handling code\n  block: needs to set the residual length of a bidi request\n  Revert \"block: implement blkdev_readpages\"\n  block: Fix bounce limit setting in DM\n  Removed reference to non-existing file Documentation/PCI/PCI-DMA-mapping.txt\n  ...\n\nManually fix conflicts with tracing updates in:\n\tblock/blk-sysfs.c\n\tdrivers/ide/ide-atapi.c\n\tdrivers/ide/ide-cd.c\n\tdrivers/ide/ide-floppy.c\n\tdrivers/ide/ide-tape.c\n\tinclude/trace/events/block.h\n\tkernel/trace/blktrace.c\n"
    },
    {
      "commit": "c72758f33784e5e2a1a4bb9421ef3e6de8f9fcf3",
      "tree": "a83f7540cc894caafe74db911cba3998d6a9a164",
      "parents": [
        "cd43e26f071524647e660706b784ebcbefbd2e44"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:53 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:55 2009 +0200"
      },
      "message": "block: Export I/O topology for block devices and partitions\n\nTo support devices with physical block sizes bigger than 512 bytes we\nneed to ensure proper alignment.  This patch adds support for exposing\nI/O topology characteristics as devices are stacked.\n\n  logical_block_size is the smallest unit the device can address.\n\n  physical_block_size indicates the smallest I/O the device can write\n  without incurring a read-modify-write penalty.\n\n  The io_min parameter is the smallest preferred I/O size reported by\n  the device.  In many cases this is the same as the physical block\n  size.  However, the io_min parameter can be scaled up when stacking\n  (RAID5 chunk size \u003e physical block size).\n\n  The io_opt characteristic indicates the optimal I/O size reported by\n  the device.  This is usually the stripe width for arrays.\n\n  The alignment_offset parameter indicates the number of bytes the start\n  of the device/partition is offset from the device\u0027s natural alignment.\n  Partition tools and MD/DM utilities can use this to pad their offsets\n  so filesystems start on proper boundaries.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cd43e26f071524647e660706b784ebcbefbd2e44",
      "tree": "11625a25ba8a7c5cd4fe41b54d53506a7982433b",
      "parents": [
        "025146e13b63483add912706c101fb0fb6f015cc"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:52 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:55 2009 +0200"
      },
      "message": "block: Expose stacked device queues in sysfs\n\nCurrently stacking devices do not have a queue directory in sysfs.\nHowever, many of the I/O characteristics like sector size, maximum\nrequest size, etc. are queue properties.\n\nThis patch enables the queue directory for MD/DM devices.  The elevator\ncode has been modified to deal with queues that do not have an I/O\nscheduler.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ae03bf639a5027d27270123f5f6e3ee6a412781d",
      "tree": "d705f41a188ad656b1f47f7952626a9f992e3b8f",
      "parents": [
        "e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:50 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:54 2009 +0200"
      },
      "message": "block: Use accessor functions for queue limits\n\nConvert all external users of queue limits to using wrapper functions\ninstead of poking the request queue variables directly.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1",
      "tree": "d60d15a082171c58ac811d547d51a9c3119f23e3",
      "parents": [
        "9bd7de51ee8537094656149eaf45338cadb7d7d4"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:49 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:54 2009 +0200"
      },
      "message": "block: Do away with the notion of hardsect_size\n\nUntil now we have had a 1:1 mapping between storage device physical\nblock size and the logical block sized used when addressing the device.\nWith SATA 4KB drives coming out that will no longer be the case.  The\nsector size will be 4KB but the logical block size will remain\n512-bytes.  Hence we need to distinguish between the physical block size\nand the logical ditto.\n\nThis patch renames hardsect_size to logical_block_size.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "44347d947f628060b92449702071bfe1d31dfb75",
      "tree": "c6ed74610d5b3295df4296659f80f5feb94b28cc",
      "parents": [
        "d94fc523f3c35bd8013f04827e94756cbc0212f4",
        "413f81eba35d6ede9289b0c8a920c013a84fac71"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 11:17:13 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 11:17:34 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into tracing/core\n\nMerge reason: tracing/core was on a .30-rc1 base and was missing out on\n              on a handful of tracing fixes present in .30-rc5-almost.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "42dad7647aec49b3ad20dd0cb832b232a6ae514f",
      "tree": "b70d4cb7706f2647e65426e24f078ddf14d6e139",
      "parents": [
        "097102c2d04974bdfcfa16a5f3062d499842139c"
      ],
      "author": {
        "name": "Jerome Marchand",
        "email": "jmarchan@redhat.com",
        "time": "Wed Apr 22 14:01:49 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 24 08:54:21 2009 +0200"
      },
      "message": "block: simplify I/O stat accounting\n\nThis simplifies I/O stat accounting switching code and separates it\ncompletely from I/O scheduler switch code.\n\nRequests are accounted according to the state of their request queue\nat the time of the request allocation. There is no need anymore to\nflush the request queue when switching I/O accounting state.\n\nSigned-off-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1d54ad6da9192fed5dd3b60224d9f2dfea0dcd82",
      "tree": "fd5917f144ec820b933795bedd7eddea96bee374",
      "parents": [
        "9908c30997b8a73c95f836170b9998dae9aa3f4a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Apr 14 14:00:05 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 16 10:10:59 2009 +0200"
      },
      "message": "blktrace: add trace/ to /sys/block/sda\n\nImpact: allow ftrace-plugin blktrace to trace device-mapper devices\n\nTo trace a single partition:\n  # echo 1 \u003e /sys/block/sda/sda1/enable\n\nTo trace the whole sda instead:\n  # echo 1 \u003e /sys/block/sda/enable\n\nThus we also fix an issue reported by Ted, that ftrace-plugin blktrace\ncan\u0027t be used to trace device-mapper devices.\n\nNow:\n\n  # echo 1 \u003e /sys/block/dm-0/trace/enable\n  echo: write error: No such device or address\n  # mount -t ext4 /dev/dm-0 /mnt\n  # echo 1 \u003e /sys/block/dm-0/trace/enable\n  # echo blk \u003e /debug/tracing/current_tracer\n\nReported-by: Theodore Tso \u003ctytso@mit.edu\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Shawn Du \u003cduyuyang@gmail.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nLKML-Reference: \u003c49E42665.6020506@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f600abe2de81628c40effbb3f8eaf5af0d291e57",
      "tree": "db8e27854110b68bac454d8dc79c756800dc4afb",
      "parents": [
        "8f3d8ba20e67991b531e9c0227dcd1f99271a32c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 08 14:22:01 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 08:28:09 2009 +0200"
      },
      "message": "block: fix bad spelling of quiesce\n\nCredit goes to Andrew Morton for spotting this one.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "26308eab69aa193f7b3fb50764a64ae14544a39b",
      "tree": "758f6100395a23228d042c3a9d6f7dc1922d7530",
      "parents": [
        "6c7e8cee6a9128eeb7f83c3ad1cb243f77f5cb16"
      ],
      "author": {
        "name": "Jerome Marchand",
        "email": "jmarchan@redhat.com",
        "time": "Fri Mar 27 10:31:51 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 08:12:38 2009 +0200"
      },
      "message": "block: fix inconsistency in I/O stat accounting code\n\nThis forces in_flight to be zero when turning off or on the I/O stat\naccounting and stops updating I/O stats in attempt_merge() when\naccounting is turned off.\n\nSigned-off-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1faa16d22877f4839bd433547d770c676d1d964c",
      "tree": "9a0d50be1ef0358c1f53d7107413100904e7d526",
      "parents": [
        "0221c81b1b8eb0cbb6b30a0ced52ead32d2b4e4c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 06 14:48:01 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 08:04:53 2009 -0700"
      },
      "message": "block: change the request allocation/congestion logic to be sync/async based\n\nThis makes sure that we never wait on async IO for sync requests, instead\nof doing the split on writes vs reads.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bc58ba9468d94d62c56ab9b47173583ec140b165",
      "tree": "e31bee7a5001efdd40ed568151d5fdfa8b1a746a",
      "parents": [
        "7598909e3ee2a08726276d6415b69dadb52d0d76"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 23 10:54:44 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 30 12:34:38 2009 +0100"
      },
      "message": "block: add sysfs file for controlling io stats accounting\n\nThis allows us to turn off disk stat accounting completely, for the cases\nwhere the 0.5-1% reduction in system time is important.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1308835ffffe6d61ad1f48c5c381c9cc47f683ec",
      "tree": "5430cde36604537fdc3c597f53f65cba990f08fd",
      "parents": [
        "16642eb68216d8e0e136a99e514e9166e7125838"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Wed Jan 07 12:22:39 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 30 12:34:37 2009 +0100"
      },
      "message": "block: export SSD/non-rotational queue flag through sysfs\n\nFor some devices (i.e. CFA ATA) we can\u0027t reliably detect whether\nthe device is of rotational or non-rotational type so we need to\nleave the final decision about this setting to the user-space.\n\nAs a bonus do a minor CodingStyle fixup in queue_nomerges_store().\n\nSuggested-by: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7c239517d9f18427fc2e7ed259fb3b866595f5af",
      "tree": "cd2149cc2f2eb0faa83d38fe64e1228f7c703a85",
      "parents": [
        "42364690992e592c05f85c76fda4055820b48c1b"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Nov 25 09:08:39 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:28:43 2008 +0100"
      },
      "message": "block: don\u0027t take lock on changing ra_pages\n\nThere\u0027s no need to take queue_lock or kernel_lock when modifying\nbdi-\u003era_pages. So remove them. Also remove out of date comment for\nqueue_max_sectors_store().\n\nSigned-off-by: Wu Fengguang \u003cwfg@linux.intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c7c22e4d5c1fdebfac4dba76de7d0338c2b0d832",
      "tree": "ecc3d2517b3471ccc35d4cb4e3b48d4b57205061",
      "parents": [
        "18887ad910e56066233a07fd3cfb2fa11338b782"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sat Sep 13 20:26:01 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:09 2008 +0200"
      },
      "message": "block: add support for IO CPU affinity\n\nThis patch adds support for controlling the IO completion CPU of\neither all requests on a queue, or on a per-request basis. We export\na sysfs variable (rq_affinity) which, if set, migrates completions\nof requests to the CPU that originally submitted it. A bio helper\n(bio_set_completion_cpu()) is also added, so that queuers can ask\nfor completion on that specific CPU.\n\nIn testing, this has been show to cut the system time by as much\nas 20-40% on synthetic workloads where CPU affinity is desired.\n\nThis requires a little help from the architecture, so it\u0027ll only\nwork as designed for archs that are using the new generic smp\nhelper infrastructure.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ed9e1982347b36573cd622ee5f4e2a7ccd79b3fd",
      "tree": "79d834094d655ec97cfc0a382a9207ebc8e711a5",
      "parents": [
        "870d6656126add8e383645732b03df2b7ccd4f94"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:05 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:07 2008 +0200"
      },
      "message": "block: implement and use {disk|part}_to_dev()\n\nImplement {disk|part}_to_dev() and use them to access generic device\ninstead of directly dereferencing {disk|part}-\u003edev.  To make sure no\nuser is left behind, rename generic devices fields to __dev.\n\nThis is in preparation of unifying partition 0 handling with other\npartitions.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "bf0f97025c7306870b86ccd63669aa278e7ec1c2",
      "tree": "d8988d1f6d817a1bb31563c9864f616a52c4c0b4",
      "parents": [
        "c0a18111e571138747a98af18b3a2124df56a0d1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 07 09:09:39 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 07 09:09:39 2008 +0200"
      },
      "message": "block: sysfs store function needs to grab queue_lock and use queue_flag_*()\n\nConcurrency isn\u0027t a big deal here since we have requests in flight\nat this point, but do the locked variant to set a better example.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ac9fafa1243640349aa481adf473db283a695766",
      "tree": "155c2371cca8971638d781269f39fa015bc6509c",
      "parents": [
        "d7e3c3249ef23b4617393c69fe464765b4ff1645"
      ],
      "author": {
        "name": "Alan D. Brunelle",
        "email": "Alan.Brunelle@hp.com",
        "time": "Tue Apr 29 14:44:19 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 14:48:55 2008 +0200"
      },
      "message": "block: Skip I/O merges when disabled\n\nThe block I/O + elevator + I/O scheduler code spend a lot of time trying\nto merge I/Os -- rightfully so under \"normal\" circumstances. However,\nif one were to know that the incoming I/O stream was /very/ random in\nnature, the cycles are wasted.\n\nThis patch adds a per-request_queue tunable that (when set) disables\nmerge attempts (beyond the simple one-hit cache check), thus freeing up\na non-trivial amount of CPU cycles.\n\nSigned-off-by: Alan D. Brunelle \u003calan.brunelle@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fb199746303a6bfd6121834ec9e810471185c530",
      "tree": "c50ed0dd313e7fcffddd021639473f001fcf8b05",
      "parents": [
        "2472892a3ce17b177cc0d8099a6391949c75abf2"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Mon Apr 21 09:51:06 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 21 09:51:06 2008 +0200"
      },
      "message": "block: fix blk_register_queue() return value\n\nblk_register_queue() returns -ENXIO when queue-\u003erequest_fn is NULL.  But there\nare some block drivers that call blk_register_queue() via add_disk() with\nqueue-\u003erequest_fn \u003d\u003d NULL.  (For example, brd, loop)\n\nAlthough no one checks return value of blk_register_queue(), this patch makes\nit return 0 instead of -ENXIO when queue-\u003erequest_fn is NULL,\n\nAlso this patch adds warning when blk_register_queue() and\nblk_unregister_queue() are called with queue \u003d\u003d NULL rather than ignore\ninvalid usage silently.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6728cb0e6343d4068ccec13f07212e6382d3ff33",
      "tree": "5a7826dc91cf2d9cf54e8c24b40aa3c4d892c797",
      "parents": [
        "22b132102f1540dd40f3e41df88796829b685f1a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jan 31 13:03:55 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 01 09:26:33 2008 +0100"
      },
      "message": "block: make core bits checkpatch compliant\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e68b903c6b2b88c60050675b056648468f33ab54",
      "tree": "6622d232adae87af15a9e42e024b513012e59d2b",
      "parents": [
        "7da975a231ae8c11593fd79d1083215321be213a"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Jan 29 19:14:08 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jan 29 21:55:17 2008 +0100"
      },
      "message": "Expose hardware sector size\n\nExpose hardware sector size in sysfs queue directory.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8324aa91d1e11a1fc25f209687a0b2e6c2ed47d0",
      "tree": "c63753df94b741d328840edabde74462591ca0b3",
      "parents": [
        "a168ee84c90b39ece357da127ab388f2f64db19c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jan 29 14:51:59 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jan 29 21:55:07 2008 +0100"
      },
      "message": "block: split tag and sysfs handling from blk-core.c\n\nSeperates the tag and sysfs handling from ll_rw_blk.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    }
  ]
}
