)]}'
{
  "log": [
    {
      "commit": "e475bba2fdee9c3dbfe25f026f8fb8de69508ad2",
      "tree": "cb2a050b58fbd8cd7a4d82349164622fedc2c6d0",
      "parents": [
        "6923715ae39ed39ac2fc1993e5061668f4f71ad0"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Jun 16 08:23:52 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 16 08:23:52 2009 +0200"
      },
      "message": "block: Introduce helper to reset queue limits to default values\n\nDM reuses the request queue when swapping in a new device table\nIntroduce blk_set_default_limits() which can be used to reset the the\nqueue_limits prior to stacking devices.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d614aec4752f8c61b2e7cb77806b6bd59aa50836",
      "tree": "3b0cfb3085c43415931dbf18666d582fb8ae3c75",
      "parents": [
        "db8e7f10ed67933ca272f4030eb7057b7f13de07",
        "ad7c52d0988a8965989dc06d630c52a5bde849d5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:29:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:29:42 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.31\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6\n\n* \u0027for-2.6.31\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (29 commits)\n  ide: re-implement ide_pci_init_one() on top of ide_pci_init_two()\n  ide: unexport ide_find_dma_mode()\n  ide: fix PowerMac bootup oops\n  ide: skip probe if there are no devices on the port (v2)\n  sl82c105: add printk() logging facility\n  ide-tape: fix proc warning\n  ide: add IDE_DFLAG_NIEN_QUIRK device flag\n  ide: respect quirk_drives[] list on all controllers\n  hpt366: enable all quirks for devices on quirk_drives[] list\n  hpt366: sync quirk_drives[] list with pdc202xx_{new,old}.c\n  ide: remove superfluous SELECT_MASK() call from do_rw_taskfile()\n  ide: remove superfluous SELECT_MASK() call from ide_driveid_update()\n  icside: remove superfluous -\u003emaskproc method\n  ide-tape: fix IDE_AFLAG_* atomic accesses\n  ide-tape: change IDE_AFLAG_IGNORE_DSC non-atomically\n  pdc202xx_old: kill resetproc() method\n  pdc202xx_old: don\u0027t call pdc202xx_reset() on IRQ timeout\n  pdc202xx_old: use ide_dma_test_irq()\n  ide: preserve Host Protected Area by default (v2)\n  ide-gd: implement block device -\u003eset_capacity method (v2)\n  ...\n"
    },
    {
      "commit": "b0fd271d5fba0b2d00888363f3869e3f9b26caa9",
      "tree": "0ffd49c013476e3dc96c8bcb2ddc4c1828797be5",
      "parents": [
        "5e50b9ef975219304cc91d601530994861585bfe"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Jun 11 13:10:16 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 11 13:11:05 2009 +0200"
      },
      "message": "block: add request clone interface (v2)\n\nThis patch adds the following 2 interfaces for request-stacking drivers:\n\n  - blk_rq_prep_clone(struct request *clone, struct request *orig,\n\t\t      struct bio_set *bs, gfp_t gfp_mask,\n\t\t      int (*bio_ctr)(struct bio *, struct bio*, void *),\n\t\t      void *data)\n      * Clones bios in the original request to the clone request\n        (bio_ctr is called for each cloned bios.)\n      * Copies attributes of the original request to the clone request.\n        The actual data parts (e.g. -\u003ecmd, -\u003ebuffer, -\u003esense) are not\n        copied.\n\n  - blk_rq_unprep_clone(struct request *clone)\n      * Frees cloned bios from the clone request.\n\nRequest stacking drivers (e.g. request-based dm) need to make a clone\nrequest for a submitted request and dispatch it to other devices.\n\nTo allocate request for the clone, request stacking drivers may not\nbe able to use blk_get_request() because the allocation may be done\nin an irq-disabled context.\nSo blk_rq_prep_clone() takes a request allocated by the caller\nas an argument.\n\nFor each clone bio in the clone request, request stacking drivers\nshould be able to set up their own completion handler.\nSo blk_rq_prep_clone() takes a callback function which is called\nfor each clone bio, and a pointer for private data which is passed\nto the callback.\n\nNOTE:\nblk_rq_prep_clone() doesn\u0027t copy any actual data of the original\nrequest.  Pages are shared between original bios and cloned bios.\nSo caller must not complete the original request before the clone\nrequest.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9df1bb9b516daeece159ab7fb262d01a0359247c",
      "tree": "602c7b02e85b031d0269a1f70ece81bac524c0ac",
      "parents": [
        "3969251b80a7b143d01576780073fe0cc9ef6253"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 09 06:22:57 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 09 06:22:57 2009 +0200"
      },
      "message": "Revert \"block: Fix bounce limit setting in DM\"\n\nThis reverts commit a05c0205ba031c01bba33a21bf0a35920eb64833.\n\nDM doesn\u0027t need to access the bounce_pfn directly.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "db429e9ec0f9dee2d8e50c154f04f29f880fc9d6",
      "tree": "363328c6aa85f7a15cc061f7c71f3cc3a8cde970",
      "parents": [
        "02c33b123e59cab5771e52a012aeb810500260a2"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Sun Jun 07 13:52:52 2009 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Sun Jun 07 13:52:52 2009 +0200"
      },
      "message": "partitions: add -\u003eset_capacity block device method\n\n* Add -\u003eset_capacity block device method and use it in rescan_partitions()\n  to attempt enabling native capacity of the device upon detecting the\n  partition which exceeds device capacity.\n\n* Add GENHD_FL_NATIVE_CAPACITY flag to try limit attempts of enabling\n  native capacity during partition scan.\n\nTogether with the consecutive patch implementing -\u003eset_capacity method in\nide-gd device driver this allows automatic disabling of Host Protected Area\n(HPA) if any partitions overlapping HPA are detected.\n\nCc: Robert Hancock \u003chancockrwd@gmail.com\u003e\nCc: Frans Pop \u003celendil@planet.nl\u003e\nCc: \"Andries E. Brouwer\" \u003cAndries.Brouwer@cwi.nl\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nEmphatically-Acked-by: Alan Cox \u003calan@linux.intel.com\u003e\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n"
    },
    {
      "commit": "a05c0205ba031c01bba33a21bf0a35920eb64833",
      "tree": "517c7682fc415cdb122ee7fcfc75eff674cc7b78",
      "parents": [
        "dbdc9dd342f0a7e32f40f0d4ade662bdfe057484"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Jun 03 09:33:18 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Jun 03 09:33:18 2009 +0200"
      },
      "message": "block: Fix bounce limit setting in DM\n\nblk_queue_bounce_limit() is more than a wrapper about the request queue\nlimits.bounce_pfn variable.  Introduce blk_queue_bounce_pfn() which can\nbe called by stacking drivers that wish to set the bounce limit\nexplicitly.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\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": "025146e13b63483add912706c101fb0fb6f015cc",
      "tree": "42d2d42e2222f0a2d6373a0ddf0cbf733f75dcba",
      "parents": [
        "ae03bf639a5027d27270123f5f6e3ee6a412781d"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:51 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:55 2009 +0200"
      },
      "message": "block: Move queue limits to an embedded struct\n\nTo accommodate stacking drivers that do not have an associated request\nqueue we\u0027re moving the limits to a separate, embedded structure.\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": "e4b636366c00738b9609cda307014d71b1225b7f",
      "tree": "760b67b3624eda62e943e48ce93635c30a5b47bf",
      "parents": [
        "b9ed7252d219c1c663944bf03846eabb515dbe75",
        "279e677faa775ad16e75c32e1bf4a37f8158bc61"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 20:25:34 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 20:25:34 2009 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.31\n\nConflicts:\n\tdrivers/block/hd.c\n\tdrivers/block/mg_disk.c\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0a7ae2ff0d29bb3b327edff4c8ab67b3834fa811",
      "tree": "88309ac99a39e15b9b23525a00a15b1564957b32",
      "parents": [
        "ac36552a52a6ec8563ac0a109e2a0935673f4abb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 20 08:54:31 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 20 08:54:31 2009 +0200"
      },
      "message": "block: change the tag sync vs async restriction logic\n\nMake them fully share the tag space, but disallow async requests using\nthe last any two slots.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a411f4bbb89f1f08687b344064d6775bce1e4658",
      "tree": "8898f98285e712f8b5bb99db184bc1a21b1a643c",
      "parents": [
        "c29b70f6ee4f2fa3ef07f55bc9082945861e5391"
      ],
      "author": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Sun May 17 19:00:01 2009 +0300"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 19 12:14:56 2009 +0200"
      },
      "message": "block: Un-export blk_rq_append_bio\n\nOSD was the last in-tree user of blk_rq_append_bio(). Now\nthat it is fixed blk_rq_append_bio is un-exported and\nis only used internally by block layer.\n\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "79eb63e9e5875b84341a3a05f8e6ae9cdb4bb6f6",
      "tree": "bdadc2037c1d0f24c6c73b71ae82fdd7b907e610",
      "parents": [
        "bc38bf106c967389a465d926be22c7371abba69d"
      ],
      "author": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Sun May 17 18:57:15 2009 +0300"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 19 12:14:56 2009 +0200"
      },
      "message": "block: Add blk_make_request(), takes bio, returns a request\n\nNew block API:\ngiven a struct bio allocates a new request. This is the parallel of\ngeneric_make_request for BLOCK_PC commands users.\n\nThe passed bio may be a chained-bio. The bio is bounced if needed\ninside the call to this member.\n\nThis is in the effort of un-exporting blk_rq_append_bio().\n\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nCC: Jeff Garzik \u003cjeff@garzik.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b1f744937f1be3e6d3009382a755679133cf782d",
      "tree": "0e90e43589ecfe28199030e8e396c0193199da7e",
      "parents": [
        "e6bb7a96c2c36f20c05ef648f15bd3c2b1834c78"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Mon May 11 17:56:09 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 11:06:48 2009 +0200"
      },
      "message": "block: move completion related functions back to blk-core.c\n\nLet\u0027s put the completion related functions back to block/blk-core.c\nwhere they have lived. We can also unexport blk_end_bidi_request() and\n__blk_end_bidi_request(), which nobody uses.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1822952ba2b9f22f79019d07ebbeca31dc14b718",
      "tree": "de3a727e811f33bc908cd6c4d2f0cf5a1693dab3",
      "parents": [
        "9934c8c04561413609d2bc38c6b9f268cba774a4"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Mon May 11 17:56:07 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 11:06:47 2009 +0200"
      },
      "message": "block: let blk_end_request_all handle bidi requests\n\nblk_end_request_all() and __blk_end_request_all() should finish all\nbytes including bidi, by definition. That\u0027s what all bidi users need ,\nbidi requests must be complete as a whole (partial completion is\nimpossible).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9934c8c04561413609d2bc38c6b9f268cba774a4",
      "tree": "30dd8f7be54f9b2e03094de9cd03b6a9ee2909cd",
      "parents": [
        "2343046826a8ca426b07601d9593ee046c298b68"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri May 08 11:54:16 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:52:18 2009 +0200"
      },
      "message": "block: implement and enforce request peek/start/fetch\n\nTill now block layer allowed two separate modes of request execution.\nA request is always acquired from the request queue via\nelv_next_request().  After that, drivers are free to either dequeue it\nor process it without dequeueing.  Dequeue allows elv_next_request()\nto return the next request so that multiple requests can be in flight.\n\nExecuting requests without dequeueing has its merits mostly in\nallowing drivers for simpler devices which can\u0027t do sg to deal with\nsegments only without considering request boundary.  However, the\nbenefit this brings is dubious and declining while the cost of the API\nambiguity is increasing.  Segment based drivers are usually for very\nold or limited devices and as converting to dequeueing model isn\u0027t\ndifficult, it doesn\u0027t justify the API overhead it puts on block layer\nand its more modern users.\n\nPrevious patches converted all block low level drivers to dequeueing\nmodel.  This patch completes the API transition by...\n\n* renaming elv_next_request() to blk_peek_request()\n\n* renaming blkdev_dequeue_request() to blk_start_request()\n\n* adding blk_fetch_request() which is combination of peek and start\n\n* disallowing completion of queued (not started) requests\n\n* applying new API to all LLDs\n\nRenamings are for consistency and to break out of tree code so that\nit\u0027s apparent that out of tree drivers need updating.\n\n[ Impact: block request issue API cleanup, no functional change ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Mike Miller \u003cmike.miller@hp.com\u003e\nCc: unsik Kim \u003cdonari75@gmail.com\u003e\nCc: Paul Clements \u003cpaul.clements@steeleye.com\u003e\nCc: Tim Waugh \u003ctim@cyberelk.net\u003e\nCc: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Laurent Vivier \u003cLaurent@lvivier.info\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nCc: Adrian McMenamin \u003cadrian@mcmen.demon.co.uk\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Borislav Petkov \u003cpetkovbb@googlemail.com\u003e\nCc: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nCc: Alex Dubov \u003coakad@yahoo.com\u003e\nCc: Pierre Ossman \u003cdrzeus@drzeus.cx\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Markus Lidel \u003cMarkus.Lidel@shadowconnect.com\u003e\nCc: Stefan Weinhuber \u003cwein@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Pete Zaitcev \u003czaitcev@redhat.com\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a2dec7b36364a5cc564c4d76cf16d2e7d33f5c05",
      "tree": "76dfb84ba5fa097a929ab81cf5718c6fcbc9d720",
      "parents": [
        "34b7d2c957199834c474c9d46739265643f4d9c7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:44 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:55 2009 +0200"
      },
      "message": "block: hide request sector and data_len\n\nBlock low level drivers for some reason have been pretty good at\nabusing block layer API.  Especially struct request\u0027s fields tend to\nget violated in all possible ways.  Make it clear that low level\ndrivers MUST NOT access or manipulate rq-\u003esector and rq-\u003edata_len\ndirectly by prefixing them with double underscores.\n\nThis change is also necessary to break build of out-of-tree codes\nwhich assume the previous block API where internal fields can be\nmanipulated and rq-\u003edata_len carries residual count on completion.\n\n[ Impact: hide internal fields, block API change ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.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": "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": "c3a4d78c580de4edc9ef0f7c59812fb02ceb037f",
      "tree": "916ca44287100707508678e2cc0eff0c43b9ca39",
      "parents": [
        "9720aef2539c10e3a872e9a92beec225030d99db"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:37 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:53 2009 +0200"
      },
      "message": "block: add rq-\u003eresid_len\n\nrq-\u003edata_len served two purposes - the length of data buffer on issue\nand the residual count on completion.  This duality creates some\nheadaches.\n\nFirst of all, block layer and low level drivers can\u0027t really determine\nwhat rq-\u003edata_len contains while a request is executing.  It could be\nthe total request length or it coulde be anything else one of the\nlower layers is using to keep track of residual count.  This\ncomplicates things because blk_rq_bytes() and thus\n[__]blk_end_request_all() relies on rq-\u003edata_len for PC commands.\nDrivers which want to report residual count should first cache the\ntotal request length, update rq-\u003edata_len and then complete the\nrequest with the cached data length.\n\nSecondly, it makes requests default to reporting full residual count,\nie. reporting that no data transfer occurred.  The residual count is\nan exception not the norm; however, the driver should clear\nrq-\u003edata_len to zero to signify the normal cases while leaving it\nalone means no data transfer occurred at all.  This reverse default\nbehavior complicates code unnecessarily and renders block PC on some\ndrivers (ide-tape/floppy) unuseable.\n\nThis patch adds rq-\u003eresid_len which is used only for residual count.\n\nWhile at it, remove now unnecessasry blk_rq_bytes() caching in\nide_pc_intr() as rq-\u003edata_len is not changed anymore.\n\nBoaz\t: spotted missing conversion in osd\nSergei\t: spotted too early conversion to blk_rq_bytes() in ide-tape\n\n[ Impact: cleanup residual count handling, report 0 resid by default ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\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: Mike Miller \u003cmike.miller@hp.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: Doug Gilbert \u003cdgilbert@interlog.com\u003e\nCc: Mike Miller \u003cmike.miller@hp.com\u003e\nCc: Eric Moore \u003cEric.Moore@lsi.com\u003e\nCc: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nCc: Pete Zaitcev \u003czaitcev@redhat.com\u003e\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7b39da786a63e82d9d440075eae9018b79154d2a",
      "tree": "e0c415aa911136293d50e0116bafdc5128bd4080",
      "parents": [
        "2142babac999a5ba169348892a8e3ac222bec7a4",
        "96c16743973e8c1a7b9c655d10b7973408d6d1dd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 02 16:48:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 02 16:48:32 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6:\n  ide-cd: fix REQ_QUIET tests in cdrom_decode_status\n\nFix up trivial conflicts in include/linux/blkdev.h\n"
    },
    {
      "commit": "96c16743973e8c1a7b9c655d10b7973408d6d1dd",
      "tree": "965c9915d06762fa68cd033b71be2ac851722f0b",
      "parents": [
        "b930f964cfe65941c6b1ba61efedfe49da3f6353"
      ],
      "author": {
        "name": "Borislav Petkov",
        "email": "petkovbb@gmail.com",
        "time": "Thu Apr 30 18:24:34 2009 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu Apr 30 18:24:34 2009 +0200"
      },
      "message": "ide-cd: fix REQ_QUIET tests in cdrom_decode_status\n\nOriginal patch (dfa4411cc3a690011cab90e9a536938795366cf9) was buggy.\nThis is a more proper fix which introduces blk_rq_quiet() macro\nalleviating the need for dumb, too short caching variables.\n\nThanks to Helge Deller and Bart for debugging this.\n\nSigned-off-by: Borislav Petkov \u003cpetkovbb@gmail.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nReported-and-tested-by: Helge Deller \u003cdeller@gmx.de\u003e\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n"
    },
    {
      "commit": "9fd8d0e1bcb848257968d9a7d73ca4d890ea8bd1",
      "tree": "6ecdb8af44feda12713c1bee34a1ad5e9e978ee8",
      "parents": [
        "9eb55b030c4b3227334ee4482402096cd1d1a6fe"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Apr 28 13:06:04 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 08:14:49 2009 +0200"
      },
      "message": "block: make blk_end_request_cur() return bool\n\nIn the process of mindlessly copying [__]blk_end_request_all(),\n[__]blk_end_request_cur() ended up returning void even though they\u0027re\npartial completion functions.  Fix it.\n\n[ Impact: fix braindead API ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "731ec497e5888c6792ad62613ae9be97eebcd7ca",
      "tree": "689a8442d8bdfd50ee6ab05b0c6acd0d229fe391",
      "parents": [
        "ec24751a6b57e1373a12361e581b2458bc9bb791"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:20 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:36 2009 +0200"
      },
      "message": "block: kill rq-\u003edata\n\nNow that all block request data transfer is done via bio, rq-\u003edata\nisn\u0027t used.  Kill it.\n\nWhile at it, make the roles of rq-\u003especial and buffer clear.\n\n[ Impact: drop now unncessary field from struct request ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\n"
    },
    {
      "commit": "f06d9a2b52e246a66b606130cea3f0d7b7be17a7",
      "tree": "020df1f9d54b00c72d8af02ac0827d496597e75a",
      "parents": [
        "40cbbb781d3eba5d6ac0860db078af490e5c7c6b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:19 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:36 2009 +0200"
      },
      "message": "block: replace end_request() with [__]blk_end_request_cur()\n\nend_request() has been kept around for backward compatibility;\nhowever, it\u0027s about time for it to go away.\n\n* There aren\u0027t too many users left.\n\n* Its use of @updtodate is pretty confusing.\n\n* In some cases, newer code ends up using mixture of end_request() and\n  [__]blk_end_request[_all](), which is way too confusing.\n\nSo, add [__]blk_end_request_cur() and replace end_request() with it.\nMost conversions are straightforward.  Noteworthy ones are...\n\n* paride/pcd: next_request() updated to take 0/-errno instead of 1/0.\n\n* paride/pf: pf_end_request() and next_request() updated to take\n  0/-errno instead of 1/0.\n\n* xd: xd_readwrite() updated to return 0/-errno instead of 1/0.\n\n* mtd/mtd_blkdevs: blktrans_discard_request() updated to return\n  0/-errno instead of 1/0.  Unnecessary local variable res\n  initialization removed from mtd_blktrans_thread().\n\n[ Impact: cleanup ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Joerg Dorchain \u003cjoerg@dorchain.net\u003e\nAcked-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nAcked-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAcked-by: Laurent Vivier \u003cLaurent@lvivier.info\u003e\nCc: Tim Waugh \u003ctim@cyberelk.net\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Markus Lidel \u003cMarkus.Lidel@shadowconnect.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Pete Zaitcev \u003czaitcev@redhat.com\u003e\nCc: unsik Kim \u003cdonari75@gmail.com\u003e\n"
    },
    {
      "commit": "40cbbb781d3eba5d6ac0860db078af490e5c7c6b",
      "tree": "dec374543cf045fc630bccddbb7646c695094b0d",
      "parents": [
        "b243ddcbe9be146172baa544dadecebf156eda0e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:19 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:35 2009 +0200"
      },
      "message": "block: implement and use [__]blk_end_request_all()\n\nThere are many [__]blk_end_request() call sites which call it with\nfull request length and expect full completion.  Many of them ensure\nthat the request actually completes by doing BUG_ON() the return\nvalue, which is awkward and error-prone.\n\nThis patch adds [__]blk_end_request_all() which takes @rq and @error\nand fully completes the request.  BUG_ON() is added to to ensure that\nthis actually happens.\n\nMost conversions are simple but there are a few noteworthy ones.\n\n* cdrom/viocd: viocd_end_request() replaced with direct calls to\n  __blk_end_request_all().\n\n* s390/block/dasd: dasd_end_request() replaced with direct calls to\n  __blk_end_request_all().\n\n* s390/char/tape_block: tapeblock_end_request() replaced with direct\n  calls to blk_end_request_all().\n\n[ Impact: cleanup ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Mike Miller \u003cmike.miller@hp.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Alex Dubov \u003coakad@yahoo.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "2e60e02297cf54e367567f2d85b2ca56b1c4a906",
      "tree": "ea824afcaff58be894799a011f74d80c3560f372",
      "parents": [
        "0b302d5aa7975006fa2ec3d66386610b9b36c669"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:18 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:35 2009 +0200"
      },
      "message": "block: clean up request completion API\n\nRequest completion has gone through several changes and became a bit\nmessy over the time.  Clean it up.\n\n1. end_that_request_data() is a thin wrapper around\n   end_that_request_data_first() which checks whether bio is NULL\n   before doing anything and handles bidi completion.\n   blk_update_request() is a thin wrapper around\n   end_that_request_data() which clears nr_sectors on the last\n   iteration but doesn\u0027t use the bidi completion.\n\n   Clean it up by moving the initial bio NULL check and nr_sectors\n   clearing on the last iteration into end_that_request_data() and\n   renaming it to blk_update_request(), which makes blk_end_io() the\n   only user of end_that_request_data().  Collapse\n   end_that_request_data() into blk_end_io().\n\n2. There are four visible completion variants - blk_end_request(),\n   __blk_end_request(), blk_end_bidi_request() and end_request().\n   blk_end_request() and blk_end_bidi_request() uses blk_end_request()\n   as the backend but __blk_end_request() and end_request() use\n   separate implementation in __blk_end_request() due to different\n   locking rules.\n\n   blk_end_bidi_request() is identical to blk_end_io().  Collapse\n   blk_end_io() into blk_end_bidi_request(), separate out request\n   update into internal helper blk_update_bidi_request() and add\n   __blk_end_bidi_request().  Redefine [__]blk_end_request() as thin\n   inline wrappers around [__]blk_end_bidi_request().\n\n3. As the whole request issue/completion usages are about to be\n   modified and audited, it\u0027s a good chance to convert completion\n   functions return bool which better indicates the intended meaning\n   of return values.\n\n4. The function name end_that_request_last() is from the days when it\n   was a public interface and slighly confusing.  Give it a proper\n   internal name - blk_finish_request().\n\n5. Add description explaning that blk_end_bidi_request() can be safely\n   used for uni requests as suggested by Boaz Harrosh.\n\nThe only visible behavior change is from #1.  nr_sectors counts are\ncleared after the final iteration no matter which function is used to\ncomplete the request.  I couldn\u0027t find any place where the code\nassumes those nr_sectors counters contain the values for the last\nsegment and this change is good as it makes the API much more\nconsistent as the end result is now same whether a request is\ncompleted using [__]blk_end_request() alone or in combination with\nblk_update_request().\n\nAPI further cleaned up per Christoph\u0027s suggestion.\n\n[ Impact: cleanup, rq-\u003e*nr_sectors always updated after req completion ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "0b302d5aa7975006fa2ec3d66386610b9b36c669",
      "tree": "bba5de7b377ad167c4291cbdfd203ca7616d696d",
      "parents": [
        "158dbda0068e63c7cce7bd47c123bd1dfa5a902c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:18 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:34 2009 +0200"
      },
      "message": "block: kill blk_end_request_callback()\n\nWith recent IDE updates, blk_end_request_callback() doesn\u0027t have any\nuser now.  Kill it.\n\n[ Impact: removal of unused convoluted interface ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "5efccd17ceb0fc43837a331297c2c407969d7201",
      "tree": "6678ebea73ffc9f2ad35029eaaf49e68073e4e88",
      "parents": [
        "2eef33e439ba9ae387cdc3f1abcef2f3f6c4e7a8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:18 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:34 2009 +0200"
      },
      "message": "block: reorder request completion functions\n\nReorder request completion functions such that\n\n* All request completion functions are located together.\n\n* Functions which are used by only one caller is put right above the\n  caller.\n\n* end_request() is put after other completion functions but before\n  blk_update_request().\n\nThis change is for completion function cleanup which will follow.\n\n[ Impact: cleanup, code reorganization ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "a7f557923441186a3cdbabc54f1bcacf42b63bf5",
      "tree": "48e37802174cb98be43d89eb8bc4e466f4d79a02",
      "parents": [
        "a538cd03be6f363d039daa94199c28cfbd508455"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:17 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:33 2009 +0200"
      },
      "message": "block: kill blk_start_queueing()\n\nblk_start_queueing() is identical to __blk_run_queue() except that it\ndoesn\u0027t check for recursion.  None of the current users depends on\nblk_start_queueing() running request_fn directly.  Replace usages of\nblk_start_queueing() with [__]blk_run_queue() and kill it.\n\n[ Impact: removal of mostly duplicate interface function ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "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": "2385327725419a76cfbca7258abd95908b8ba9eb",
      "tree": "dee9c8167092707fbd3f1b1c5fdadc33ccf924a5",
      "parents": [
        "75e50984f062de2abc4bd84c642923e2c48ce2ae"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 08:59:11 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 08:59:11 2009 +0200"
      },
      "message": "block: remove unused REQ_UNPLUG\n\nThe request inherits the unplug flag from the bio, but it isn\u0027t actually\nused. The bio flag stops at __make_request(), which tells it to unplug\nafter submission. Passing it on to the request doesn\u0027t make any sense.\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": "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": "1e42807918d17e8c93bf14fbb74be84b141334c1",
      "tree": "55b15f0f6b2c666efeb938d064f24fdd268faf40",
      "parents": [
        "5e4c91c84b194b26cf592779e451f4b5be777cba"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 23 09:03:10 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Feb 26 10:45:48 2009 +0100"
      },
      "message": "block: reduce stack footprint of blk_recount_segments()\n\nblk_recalc_rq_segments() requires a request structure passed in, which\nwe don\u0027t have from blk_recount_segments(). So the latter allocates one on\nthe stack, using \u003e 400 bytes of stack for that. This can cause us to spill\nover one page of stack from ext4 at least:\n\n 0)     4560     400   blk_recount_segments+0x43/0x62\n 1)     4160      32   bio_phys_segments+0x1c/0x24\n 2)     4128      32   blk_rq_bio_prep+0x2a/0xf9\n 3)     4096      32   init_request_from_bio+0xf9/0xfe\n 4)     4064     112   __make_request+0x33c/0x3f6\n 5)     3952     144   generic_make_request+0x2d1/0x321\n 6)     3808      64   submit_bio+0xb9/0xc3\n 7)     3744      48   submit_bh+0xea/0x10e\n 8)     3696     368   ext4_mb_init_cache+0x257/0xa6a [ext4]\n 9)     3328     288   ext4_mb_regular_allocator+0x421/0xcd9 [ext4]\n10)     3040     160   ext4_mb_new_blocks+0x211/0x4b4 [ext4]\n11)     2880     336   ext4_ext_get_blocks+0xb61/0xd45 [ext4]\n12)     2544      96   ext4_get_blocks_wrap+0xf2/0x200 [ext4]\n13)     2448      80   ext4_da_get_block_write+0x6e/0x16b [ext4]\n14)     2368     352   mpage_da_map_blocks+0x7e/0x4b3 [ext4]\n15)     2016     352   ext4_da_writepages+0x2ce/0x43c [ext4]\n16)     1664      32   do_writepages+0x2d/0x3c\n17)     1632     144   __writeback_single_inode+0x162/0x2cd\n18)     1488      96   generic_sync_sb_inodes+0x1e3/0x32b\n19)     1392      16   sync_sb_inodes+0xe/0x10\n20)     1376      48   writeback_inodes+0x69/0xb3\n21)     1328     208   balance_dirty_pages_ratelimited_nr+0x187/0x2f9\n22)     1120     224   generic_file_buffered_write+0x1d4/0x2c4\n23)      896     176   __generic_file_aio_write_nolock+0x35f/0x393\n24)      720      80   generic_file_aio_write+0x6c/0xc8\n25)      640      80   ext4_file_write+0xa9/0x137 [ext4]\n26)      560     320   do_sync_write+0xf0/0x137\n27)      240      48   vfs_write+0xb3/0x13c\n28)      192      64   sys_write+0x4c/0x74\n29)      128     128   system_call_fastpath+0x16/0x1b\n\nSplit the segment counting out into a __blk_recalc_rq_segments() helper\nto avoid allocating an onstack request just for checking the physical\nsegment count.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0648e10d71c8e510d80772c4cb4220c97e9c34c7",
      "tree": "65cb4b2780a1c072209b79bbb1b34cb927416611",
      "parents": [
        "fb8ec18c316d869271137c97320dbfd2def56569"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 02 08:43:48 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 02 08:43:48 2009 +0100"
      },
      "message": "block: fix inconsistent parenthesisation of QUEUE_FLAG_DEFAULT\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\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": "213d9417fec62ef4c3675621b9364a667954d4dd",
      "tree": "d115a92085288d2d9c2ba0e8cbc573cccdcd8e46",
      "parents": [
        "1308835ffffe6d61ad1f48c5c381c9cc47f683ec"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jan 06 09:16:05 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 30 12:34:37 2009 +0100"
      },
      "message": "block: seperate bio/request unplug and sync bits\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "97ae77a1cd332c7b011d71315c8faabce6840c72",
      "tree": "fc243ca28ea474eaf81729079eeb3b259cd1b81b",
      "parents": [
        "56c451f4b583ccdf80c9e676179c9cb49de86745"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Thu Dec 18 14:49:38 2008 +0900"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Jan 02 11:10:35 2009 -0600"
      },
      "message": "[SCSI] block: make blk_rq_map_user take a NULL user-space buffer for WRITE\n\nThe commit 818827669d85b84241696ffef2de485db46b0b5e (block: make\nblk_rq_map_user take a NULL user-space buffer) extended\nblk_rq_map_user to accept a NULL user-space buffer with a READ\ncommand. It was necessary to convert sg to use the block layer mapping\nAPI.\n\nThis patch extends blk_rq_map_user again for a WRITE command. It is\nnecessary to convert st and osst drivers to use the block layer\napping API.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "56c451f4b583ccdf80c9e676179c9cb49de86745",
      "tree": "7ad9daeafb88e3c4390bf7a2db0c203fe2642728",
      "parents": [
        "e623ddb4e940b266adc77ba1cc28a3554aa90e79"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Thu Dec 18 14:49:37 2008 +0900"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Jan 02 11:10:08 2009 -0600"
      },
      "message": "[SCSI] block: fix the partial mappings with struct rq_map_data\n\nThis fixes bio_copy_user_iov to properly handle the partial mappings\nwith struct rq_map_data (which only sg uses for now but st and osst\nwill shortly). It adds the offset member to struct rq_map_data and\nchanges blk_rq_map_user to update it so that bio_copy_user_iov can add\nan appropriate page frame via bio_add_pc_page().\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.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": "58eea927d2de43dc6f03d1ba2c46e55854b31540",
      "tree": "bb43f43891a3154741bb6a116dc2956342160f15",
      "parents": [
        "8f11b3e99a1136fcbb67316c3260f085299c0bff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 28 13:32:06 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:28:45 2008 +0100"
      },
      "message": "block: simplify empty barrier implementation\n\nEmpty barrier required special handling in __elv_next_request() to\ncomplete it without letting the low level driver see it.\n\nWith previous changes, barrier code is now flexible enough to skip the\nBAR step using the same barrier sequence selection mechanism.  Drop\nthe special handling and mask off q-\u003eordered from start_ordered().\n\nRemove blk_empty_barrier() test which now has no user.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8f11b3e99a1136fcbb67316c3260f085299c0bff",
      "tree": "bb9b12fe23aceac19e24f674786612d0fcad2142",
      "parents": [
        "f671620e7d895af221bdfeda751d54fa55ed9546"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 28 13:32:05 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:28:45 2008 +0100"
      },
      "message": "block: make barrier completion more robust\n\nBarrier completion had the following assumptions.\n\n* start_ordered() couldn\u0027t finish the whole sequence properly.  If all\n  actions are to be skipped, q-\u003eordseq is set correctly but the actual\n  completion was never triggered thus hanging the barrier request.\n\n* Drain completion in elv_complete_request() assumed that there\u0027s\n  always at least one request in the queue when drain completes.\n\nBoth assumptions are true but these assumptions need to be removed to\nimprove empty barrier implementation.  This patch makes the following\nchanges.\n\n* Make start_ordered() use blk_ordered_complete_seq() to mark skipped\n  steps complete and notify __elv_next_request() that it should fetch\n  the next request if the whole barrier has completed inside\n  start_ordered().\n\n* Make drain completion path in elv_complete_request() check whether\n  the queue is empty.  Empty queue also indicates drain completion.\n\n* While at it, convert 0/1 return from blk_do_ordered() to false/true.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f671620e7d895af221bdfeda751d54fa55ed9546",
      "tree": "beeb843a4a356d94b6b4faec97e078b2a4ad1f09",
      "parents": [
        "a7384677b2f4cd40948fd7ce024ba5e1821444ba"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 28 13:32:04 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:28:45 2008 +0100"
      },
      "message": "block: make every barrier action optional\n\nIn all barrier sequences, the barrier write itself was always assumed\nto be issued and thus didn\u0027t have corresponding control flag.  This\npatch adds QUEUE_ORDERED_DO_BAR and unify action mask handling in\nstart_ordered() such that any barrier action can be skipped.\n\nThis patch doesn\u0027t introduce any visible behavior changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "313e42999dbc0f234ca5909a236f78f082cb43b1",
      "tree": "023ac251809e3926ebc6b6c2174d67f8c4ac535f",
      "parents": [
        "ba744d5e290055d171c68067259fcc1e2721f542"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 28 13:32:02 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:28:44 2008 +0100"
      },
      "message": "block: reorganize QUEUE_ORDERED_* constants\n\nSeparate out ordering type (drain,) and action masks (preflush,\npostflush, fua) from visible ordering mode selectors\n(QUEUE_ORDERED_*).  Ordering types are now named QUEUE_ORDERED_BY_*\nwhile action masks are named QUEUE_ORDERED_DO_*.\n\nThis change is necessary to add QUEUE_ORDERED_DO_BAR and make it\noptional to improve empty barrier implementation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\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": "88e740f1654bf28565edd528a060695c1f2b5ad7",
      "tree": "c66a57396c9b881df1734f5b46e6681bc536c132",
      "parents": [
        "3c92ec8ae91ecf59d88c798301833d7cf83f2179"
      ],
      "author": {
        "name": "Fernando Luis Vázquez Cao",
        "email": "fernando@oss.ntt.co.jp",
        "time": "Mon Oct 27 18:44:46 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:28:41 2008 +0100"
      },
      "message": "block: add queue flag for paravirt frontend drivers\n\nAs is the case with SSD devices, we do not want to idle in AS/CFQ when\nthe block device is a paravirt front-end driver. This patch adds a flag\n(QUEUE_FLAG_VIRT) which should be used by front-end drivers such as\nvirtio_blk and xen-blkfront to indicate a paravirtualized device.\n\nSigned-off-by: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f2f1fa78a155524b849edf359e42a3001ea652c0",
      "tree": "8d38fc76e48fc219e393ee57ee5f76843b735258",
      "parents": [
        "24920a79a27dd28e67088bbfcf36746d15587f4d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 05 14:49:18 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 05 14:49:18 2008 -0800"
      },
      "message": "Enforce a minimum SG_IO timeout\n\nThere\u0027s no point in having too short SG_IO timeouts, since if the\ncommand does end up timing out, we\u0027ll end up through the reset sequence\nthat is several seconds long in order to abort the command that timed\nout.\n\nAs a result, shorter timeouts than a few seconds simply do not make\nsense, as the recovery would be longer than the timeout itself.\n\nAdd a BLK_MIN_SG_TIMEOUT to match the existign BLK_DEFAULT_SG_TIMEOUT.\n\nSuggested-by: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e435ac26e3f951d83338ed3d4ab7dc0fe0055bc",
      "tree": "8f208a3093de1a314a981ae47e5ef92a5909c13b",
      "parents": [
        "53a08807c01989c6847bb135d8d43f61c5dfdda5"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Wed Dec 03 12:55:08 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 03 12:55:55 2008 +0100"
      },
      "message": "block: fix setting of max_segment_size and seg_boundary mask\n\nFix setting of max_segment_size and seg_boundary mask for stacked md/dm\ndevices.\n\nWhen stacking devices (LVM over MD over SCSI) some of the request queue\nparameters are not set up correctly in some cases by default, namely\nmax_segment_size and and seg_boundary mask.\n\nIf you create MD device over SCSI, these attributes are zeroed.\n\nProblem become when there is over this mapping next device-mapper mapping\n- queue attributes are set in DM this way:\n\nrequest_queue   max_segment_size  seg_boundary_mask\nSCSI                65536             0xffffffff\nMD RAID1                0                      0\nLVM                 65536                 -1 (64bit)\n\nUnfortunately bio_add_page (resp.  bio_phys_segments) calculates number of\nphysical segments according to these parameters.\n\nDuring the generic_make_request() is segment cout recalculated and can\nincrease bio-\u003ebi_phys_segments count over the allowed limit.  (After\nbio_clone() in stack operation.)\n\nThi is specially problem in CCISS driver, where it produce OOPS here\n\n    BUG_ON(creq-\u003enr_phys_segments \u003e MAXSGENTRIES);\n\n(MAXSEGENTRIES is 31 by default.)\n\nSometimes even this command is enough to cause oops:\n\n  dd iflag\u003ddirect if\u003d/dev/\u003cvg\u003e/\u003clv\u003e of\u003d/dev/null bs\u003d128000 count\u003d10\n\nThis command generates bios with 250 sectors, allocated in 32 4k-pages\n(last page uses only 1024 bytes).\n\nFor LVM layer, it allocates bio with 31 segments (still OK for CCISS),\nunfortunatelly on lower layer it is recalculated to 32 segments and this\nviolates CCISS restriction and triggers BUG_ON().\n\nThe patch tries to fix it by:\n\n * initializing attributes above in queue request constructor\n   blk_queue_make_request()\n\n * make sure that blk_queue_stack_limits() inherits setting\n\n (DM uses its own function to set the limits because it\n blk_queue_stack_limits() was introduced later.  It should probably switch\n to use generic stack limit function too.)\n\n * sets the default seg_boundary value in one place (blkdev.h)\n\n * use this mask as default in DM (instead of -1, which differs in 64bit)\n\nBugs related to this:\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d471639\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d8672\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nReviewed-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Mike Miller \u003cmike.miller@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "53a08807c01989c6847bb135d8d43f61c5dfdda5",
      "tree": "e2297de901dc82a0336e6af28b594864792c585d",
      "parents": [
        "bf91db18ac2852a3ff39fe25ff56c5557c0fff78"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 03 12:41:26 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 03 12:41:26 2008 +0100"
      },
      "message": "block: internal dequeue shouldn\u0027t start timer\n\nblkdev_dequeue_request() and elv_dequeue_request() are equivalent and\nboth start the timeout timer.  Barrier code dequeues the original\nbarrier request but doesn\u0027t passes the request itself to lower level\ndriver, only broken down proxy requests; however, as the original\nbarrier code goes through the same dequeue path and timeout timer is\nstarted on it.  If barrier sequence takes long enough, this timer\nexpires but the low level driver has no idea about this request and\noops follows.\n\nTimeout timer shouldn\u0027t have been started on the original barrier\nrequest as it never goes through actual IO.  This patch unexports\nelv_dequeue_request(), which has no external user anyway, and makes it\noperate on elevator proper w/o adding the timer and make\nblkdev_dequeue_request() call elv_dequeue_request() and add timer.\nInternal users which don\u0027t pass the request to driver - barrier code\nand end_that_request_last() - are converted to use\nelv_dequeue_request().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "90b8f2824ce68dd87d304641a1d5a048dfff39f5",
      "tree": "b55ddcb619aac1e16d845dd6796c51721dd6ee56",
      "parents": [
        "40cc51be699e37b78102ce7b2196ec9c32fe1908"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 02 10:43:36 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:48:52 2008 -0400"
      },
      "message": "[PATCH] end of methods switch: remove the old ones\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d4430d62fa77208824a37fe6f85ab2831d274769",
      "tree": "5d4d0bca31e63eb208fbebe4f39c912b964c1e4d",
      "parents": [
        "badf8082c33d18b118d3a6f1b32d5ea6b97d3839"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 02 09:09:22 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:32 2008 -0400"
      },
      "message": "[PATCH] beginning of methods conversion\n\nTo keep the size of changesets sane we split the switch by drivers;\nto keep the damn thing bisectable we do the following:\n\t1) rename the affected methods, add ones with correct\nprototypes, make (few) callers handle both.  That\u0027s this changeset.\n\t2) for each driver convert to new methods.  *ALL* drivers\nare converted in this series.\n\t3) kill the old (renamed) methods.\n\nNote that it _is_ a flagday; all in-tree drivers are converted and by the\nend of this series no trace of old methods remain.  The only reason why\nwe do that this way is to keep the damn thing bisectable and allow per-driver\ndebugging if anything goes wrong.\n\nNew methods:\n\topen(bdev, mode)\n\trelease(disk, mode)\n\tioctl(bdev, mode, cmd, arg)\t\t/* Called without BKL */\n\tcompat_ioctl(bdev, mode, cmd, arg)\n\tlocked_ioctl(bdev, mode, cmd, arg)\t/* Called with BKL, legacy */\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "633a08b81206122469365b4c72eaeb71f04f2cb4",
      "tree": "9cd30507efd30645d30d351c7ad0d5966f806532",
      "parents": [
        "a0eb62a0a4470fef5a5f41e7f1442fdd667220ef"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 29 20:34:12 2007 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:26 2008 -0400"
      },
      "message": "[PATCH] introduce __blkdev_driver_ioctl()\n\nAnalog of blkdev_driver_ioctl() with sane arguments.  For\nnow uses fake struct file, by the end of the series it won\u0027t\nand blkdev_driver_ioctl() will become a wrapper around it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "08f85851215100d0eebf026810955ee6ad456c38",
      "tree": "bdc0034edc2e3c49fa832ef08d13de190374049a",
      "parents": [
        "647b3d0084158c47b1aea8f34d13cab9cd0a5b49"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 08 13:26:20 2007 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:20 2008 -0400"
      },
      "message": "[PATCH] move block_device_operations to blkdev.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "74f3c8aff36ad6552ea609c8b20bfd588fa16f38",
      "tree": "c046823751971ff37b66499282ca2b2e263cc71a",
      "parents": [
        "e915e872ed921d707bc32b3f2184d43abfa8c9e2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 27 15:38:10 2007 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:14 2008 -0400"
      },
      "message": "[PATCH] switch scsi_cmd_ioctl() to passing fmode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e915e872ed921d707bc32b3f2184d43abfa8c9e2",
      "tree": "698142e0a56622c3a3c0740522537dbff703732a",
      "parents": [
        "5842e51ff2e8d660756248db80ad24e4f41977d9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 02 17:16:41 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:12 2008 -0400"
      },
      "message": "[PATCH] switch sg_scsi_ioctl() to passing fmode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aeb5d727062a0238a2f96c9c380fbd2be4640c6f",
      "tree": "51dae8a071fcf42e4431a66d37c5b843c8e99cf6",
      "parents": [
        "2515ddc6db8eb49a79f0fe5e67ff09ac7c81eab4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 02 15:28:45 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:06 2008 -0400"
      },
      "message": "[PATCH] introduce fmode_t, do annotations\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c53dbf54863e7f3b0b8810dda2bdd0290006bdac",
      "tree": "f783074f1bec1112bf1148a077e0114a38403ad4",
      "parents": [
        "b73b636e8987f8728c6c700377615757691b9a55",
        "f73e2d13a16cc88c4faa4729967f92bfeec8a142"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 17 09:29:55 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 17 09:29:55 2008 -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:\n  block: remove __generic_unplug_device() from exports\n  block: move q-\u003eunplug_work initialization\n  blktrace: pass zfcp driver data\n  blktrace: add support for driver data\n  block: fix current kernel-doc warnings\n  block: only call -\u003erequest_fn when the queue is not stopped\n  block: simplify string handling in elv_iosched_store()\n  block: fix kernel-doc for blk_alloc_devt()\n  block: fix nr_phys_segments miscalculation bug\n  block: add partition attribute for partition number\n  block: add BIG FAT WARNING to CONFIG_DEBUG_BLOCK_EXT_DEVT\n  softirq: Add support for triggering softirq work on softirqs.\n"
    },
    {
      "commit": "f73e2d13a16cc88c4faa4729967f92bfeec8a142",
      "tree": "6844c0e85b9b4ecdc8f2fc30ce8e7d2152d0c417",
      "parents": [
        "713ada9ba94f2ad874cffd074b83e3dc681ca82f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Oct 17 14:03:08 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Oct 17 14:03:08 2008 +0200"
      },
      "message": "block: remove __generic_unplug_device() from exports\n\nThe only out-of-core user is IDE, and that should be using\nblk_start_queueing() instead.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6000a368cd8e6da1caf101411bdb494cd6fb8b09",
      "tree": "4cd3333af00182e915aa96ffa49069f5f76976dc",
      "parents": [
        "056a44834950ffa51fafa6c76a720fa32e86851a"
      ],
      "author": {
        "name": "Mike Christie",
        "email": "michaelc@cs.wisc.edu",
        "time": "Tue Aug 19 18:45:30 2008 -0500"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Mon Oct 13 09:28:52 2008 -0400"
      },
      "message": "[SCSI] block: separate failfast into multiple bits.\n\nMultipath is best at handling transport errors. If it gets a device\nerror then there is not much the multipath layer can do. It will just\naccess the same device but from a different path.\n\nThis patch breaks up failfast into device, transport and driver errors.\nThe multipath layers (md and dm mutlipath) only ask the lower levels to\nfast fail transport errors. The user of failfast, read ahead, will ask\nto fast fail on all errors.\n\nNote that blk_noretry_request will return true if any failfast bit\nis set. This allows drivers that do not support the multipath failfast\nbits to continue to fail on any failfast error like before. Drivers\nlike scsi that are able to fail fast specific errors can check\nfor the specific fail fast type. In the next patch I will convert\nscsi.\n\nSigned-off-by: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "b02739b01c5309d74a59859f2ce92c931d1f1955",
      "tree": "d435454dba5ebb10233069f9f4547df3a140ef28",
      "parents": [
        "ad7fce93147d32ae53d25d9ea1a8ba31a239deee"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Thu Oct 02 18:47:49 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:22 2008 +0200"
      },
      "message": "block: gendisk integrity wrapper\n\nThis is a wrapper for accessing a gendisk\u0027s integrity bits.  It allows\nthe integrity support in MD to be compiled with BLK_DEV_INTEGRITY off.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ad7fce93147d32ae53d25d9ea1a8ba31a239deee",
      "tree": "baa8c613c1d34ec247f13b860c3bf7671b07f586",
      "parents": [
        "0c032ab889e7b20b8a5a7d09313e4aca214a15f7"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Oct 01 03:38:39 2008 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:21 2008 +0200"
      },
      "message": "block: Switch blk_integrity_compare from bdev to gendisk\n\nThe DM and MD integrity support now depends on being able to use\ngendisks instead of block_devices when comparing integrity profiles.\nChange function parameters accordingly.\n\nAlso update comparison logic so that two NULL profiles are a valid\nconfiguration.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b04accc425d52ca59699290661e0dfd09b0feeeb",
      "tree": "2d30e03b384e9a6c990006c4c68176b56fd53fbe",
      "parents": [
        "8deaf7210728c453295dc1cb2a5b66c68183ac85"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 02 12:53:22 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:21 2008 +0200"
      },
      "message": "block: revert part of d7533ad0e132f92e75c1b2eb7c26387b25a583c1\n\nWe need bdev_get_integrity() to support the pending md/dm patches.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d00e29fd99dd63d1c51917604e35dee824ed567f",
      "tree": "461c725d7ffaf2d5a69bc854ca4aa9977f530ea2",
      "parents": [
        "99cd3386f290eaf61f2b7596d5a4cc2007771174"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Wed Oct 01 10:14:46 2008 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:21 2008 +0200"
      },
      "message": "block: remove end_{queued|dequeued}_request()\n\nThis patch removes end_queued_request() and end_dequeued_request(),\nwhich are no longer used.\n\nAs a results, users of __end_request() became only end_request().\nSo the actual code in __end_request() is moved to end_request()\nand __end_request() is removed.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ef9e3facdf1fe1228721a7c295a76d1b7a0e57ec",
      "tree": "33847b1e267895ea58c2399c06cdd23365c7dc73",
      "parents": [
        "336c3d8ce771608815b65bcfa27a17a83b297328"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Wed Oct 01 16:12:15 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:20 2008 +0200"
      },
      "message": "block: add lld busy state exporting interface\n\nThis patch adds an new interface, blk_lld_busy(), to check lld\u0027s\nbusy state from the block layer.\nblk_lld_busy() calls down into low-level drivers for the checking\nif the drivers set q-\u003elld_busy_fn() using blk_queue_lld_busy().\n\nThis resolves a performance problem on request stacking devices below.\n\nSome drivers like scsi mid layer stop dispatching request when\nthey detect busy state on its low-level device like host/target/device.\nIt allows other requests to stay in the I/O scheduler\u0027s queue\nfor a chance of merging.\n\nRequest stacking drivers like request-based dm should follow\nthe same logic.\nHowever, there is no generic interface for the stacked device\nto check if the underlying device(s) are busy.\nIf the request stacking driver dispatches and submits requests to\nthe busy underlying device, the requests will stay in\nthe underlying device\u0027s queue without a chance of merging.\nThis causes performance problem on burst I/O load.\n\nWith this patch, busy state of the underlying device is exported\nvia q-\u003elld_busy_fn().  So the request stacking driver can check it\nand stop dispatching requests if busy.\n\nThe underlying device driver must return the busy state appropriately:\n    1: when the device driver can\u0027t process requests immediately.\n    0: when the device driver can process requests immediately,\n       including abnormal situations where the device driver needs\n       to kill all requests.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\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": "4ee5eaf4516a60f8ef64d3c246c64c6be0cf8c3a",
      "tree": "3097d305534cd3a0fbfcca31ab5f4079b90e0fc3",
      "parents": [
        "82124d60354846623a4b94af335717a5e142a074"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Sep 18 10:46:13 2008 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:18 2008 +0200"
      },
      "message": "block: add a queue flag for request stacking support\n\nThis patch adds a queue flag to indicate the block device can be\nused for request stacking.\n\nRequest stacking drivers need to stack their devices on top of\nonly devices of which q-\u003erequest_fn is functional.\nSince bio stacking drivers (e.g. md, loop) basically initialize\ntheir queue using blk_alloc_queue() and don\u0027t set q-\u003erequest_fn,\nthe check of (q-\u003erequest_fn \u003d\u003d NULL) looks enough for that purpose.\n\nHowever, dm will become both types of stacking driver (bio-based and\nrequest-based).  And dm will always set q-\u003erequest_fn even if the dm\ndevice is bio-based of which q-\u003erequest_fn is not functional actually.\nSo we need something else to distinguish the type of the device.\nAdding a queue flag is a solution for that.\n\nThe reason why dm always sets q-\u003erequest_fn is to keep\nthe compatibility of dm user-space tools.\nCurrently, all dm user-space tools are using bio-based dm without\nspecifying the type of the dm device they use.\nTo use request-based dm without changing such tools, the kernel\nmust decide the type of the dm device automatically.\nThe automatic type decision can\u0027t be done at the device creation time\nand needs to be deferred until such tools load a mapping table,\nsince the actual type is decided by dm target type included in\nthe mapping table.\n\nSo a dm device has to be initialized using blk_init_queue()\nso that we can load either type of table.\nThen, all queue stuffs are set (e.g. q-\u003erequest_fn) and we have\nno element to distinguish that it is bio-based or request-based,\neven after a table is loaded and the type of the device is decided.\n\nBy the way, some stuffs of the queue (e.g. request_list, elevator)\nare needless when the dm device is used as bio-based.\nBut the memory size is not so large (about 20[KB] per queue on ia64),\nso I hope the memory loss can be acceptable for bio-based dm users.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "82124d60354846623a4b94af335717a5e142a074",
      "tree": "af7b98d5ef57483cfac53cc4866194391c3ff7b7",
      "parents": [
        "32fab448e5e86694beade415e750363538ea5f49"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Sep 18 10:45:38 2008 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:18 2008 +0200"
      },
      "message": "block: add request submission interface\n\nThis patch adds blk_insert_cloned_request(), a generic request\nsubmission interface for request stacking drivers.\nRequest-based dm will use it to submit their clones to underlying\ndevices.\n\nblk_rq_check_limits() is also added because it is possible that\nthe lower queue has stronger limitations than the upper queue\nif multiple drivers are stacking at request-level.\nNot only for blk_insert_cloned_request()\u0027s internal use, the function\nwill be used by request-based dm when the queue limitation is\nmodified (e.g. by replacing dm\u0027s table).\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "32fab448e5e86694beade415e750363538ea5f49",
      "tree": "6eab6189afba893c302fa6acca1a89406fd620c6",
      "parents": [
        "e3335de94067dbebe22e3962632ead34e832cb60"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Sep 18 10:45:09 2008 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:18 2008 +0200"
      },
      "message": "block: add request update interface\n\nThis patch adds blk_update_request(), which updates struct request\nwith completing its data part, but doesn\u0027t complete the struct\nrequest itself.\nThough it looks like end_that_request_first() of older kernels,\nblk_update_request() should be used only by request stacking drivers.\n\nRequest-based dm will use it in bio-\u003ebi_end_io callback to update\nthe original request when a data part of a cloned request completes.\nFollowings are additional background information of why request-based\ndm needs this interface.\n\n  - Request stacking drivers can\u0027t use blk_end_request() directly from\n    the lower driver\u0027s completion context (bio-\u003ebi_end_io or rq-\u003eend_io),\n    because some device drivers (e.g. ide) may try to complete\n    their request with queue lock held, and it may cause deadlock.\n    See below for detailed description of possible deadlock:\n    \u003chttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d120311479108569\u0026w\u003d2\u003e\n\n  - To solve that, request-based dm offloads the completion of\n    cloned struct request to softirq context (i.e. using\n    blk_complete_request() from rq-\u003eend_io).\n\n  - Though it is possible to use the same solution from bio-\u003ebi_end_io,\n    it will delay the notification of bio completion to the original\n    submitter.  Also, it will cause inefficient partial completion,\n    because the lower driver can\u0027t perform the cloned request anymore\n    and request-based dm needs to requeue and redispatch it to\n    the lower driver again later.  That\u0027s not good.\n\n  - So request-based dm needs blk_update_request() to perform the bio\n    completion in the lower driver\u0027s completion context, which is more\n    efficient.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9c02f2b02e29a2244e36c6e1f246080d8afc6cff",
      "tree": "d917ffa2e6ea5a75d180b72cc16e786da6a4b437",
      "parents": [
        "7ba1fbaa4a478f72fbaf5a56af9c82a77966b4c7"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Sep 18 09:31:53 2008 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:17 2008 +0200"
      },
      "message": "block: cleanup some of the integrity stuff in blkdev.h\n\nDon\u0027t put functions that are only used in fs/bio-integrity.c in\nblkdev.h, it\u0027s much cleaner to just keep it in there. Also kill\ncompletely unused bdev_get_tag_size()\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "581d4e28d9195aa8b2231383dbabc288988d615e",
      "tree": "093bcac9a538ef67edcf91826f7532bdb88e6248",
      "parents": [
        "0a0d96b03a1f3bfd6bc3ea08008699e8e59fccd9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Sep 14 05:56:33 2008 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:17 2008 +0200"
      },
      "message": "block: add fault injection mechanism for faking request timeouts\n\nOnly works for the generic request timer handling. Allows one to\nsporadically ignore request completions, thus exercising the timeout\nhandling.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "3e6053d76dcbd92b2f9f4ad5ece9bce83149523e",
      "tree": "0e7ab62872071c39e2475decb769b9715de75376",
      "parents": [
        "4677735f03f5b6b6f2182f457a921855cadfb85b"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Thu Sep 11 10:57:55 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:17 2008 +0200"
      },
      "message": "block: adjust blkdev_issue_discard for swap\n\nTwo mods to blkdev_issue_discard(), thinking ahead to its use on swap:\n\n1. Add gfp_mask argument, so swap allocation can use it where GFP_KERNEL\n   might deadlock but GFP_NOIO is safe.\n\n2. Enlarge nr_sects argument from unsigned to sector_t: unsigned long is\n   enough to cover a whole swap area, but sector_t suits any partition.\n\nChange sb_issue_discard()\u0027s nr_blocks to sector_t too; but no need seen\nfor a gfp_mask there, just pass GFP_KERNEL down to blkdev_issue_discard().\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "11914a53d2ec2974a565311af327b8983d8c820d",
      "tree": "72713d2661ed56fa5d9e29203541bad32c88a3ba",
      "parents": [
        "242f9dcb8ba6f68fcd217a119a7648a4f69290e9"
      ],
      "author": {
        "name": "Mike Anderson",
        "email": "andmike@linux.vnet.ibm.com",
        "time": "Sat Sep 13 20:31:27 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:13 2008 +0200"
      },
      "message": "block: Add interface to abort queued requests\n\nSigned-off-by: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "242f9dcb8ba6f68fcd217a119a7648a4f69290e9",
      "tree": "1bfe245ffbc50d204d76665cd8f90d85100f86a1",
      "parents": [
        "608aeef17a91747d6303de4df5e2c2e6899a95e8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Sep 14 05:55:09 2008 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:13 2008 +0200"
      },
      "message": "block: unify request timeout handling\n\nRight now SCSI and others do their own command timeout handling.\nMove those bits to the block layer.\n\nInstead of having a timer per command, we try to be a bit more clever\nand simply have one per-queue. This avoids the overhead of having to\ntear down and setup a timer for each command, so it will result in a lot\nless timer fiddling.\n\nSigned-off-by: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "879040742cf09f2360a9ac41846288707e4e567c",
      "tree": "7768750efd0d8ef28a183f8cd781b0c878212795",
      "parents": [
        "4d8ab62e087d9300883b82c2662e73e6eef803a3"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Thu Aug 28 15:05:58 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:11 2008 +0200"
      },
      "message": "block: add blk_rq_aligned helper function\n\nThis adds blk_rq_aligned helper function to see if alignment and\npadding requirement is satisfied for DMA transfer. This also converts\nblk_rq_map_kern and __blk_rq_map_user to use the helper function.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "152e283fdfea0cd11e297d982378b55937842dde",
      "tree": "a97a57108353f167a1e2911e8ee09c527ef42d3e",
      "parents": [
        "a3bce90edd8f6cafe3f63b1a943800792e830178"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Thu Aug 28 16:17:06 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:10 2008 +0200"
      },
      "message": "block: introduce struct rq_map_data to use reserved pages\n\nThis patch introduces struct rq_map_data to enable bio_copy_use_iov()\nuse reserved pages.\n\nCurrently, bio_copy_user_iov allocates bounce pages but\ndrivers/scsi/sg.c wants to allocate pages by itself and use\nthem. struct rq_map_data can be used to pass allocated pages to\nbio_copy_user_iov.\n\nThe current users of bio_copy_user_iov simply passes NULL (they don\u0027t\nwant to use pre-allocated pages).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Douglas Gilbert \u003cdougg@torque.net\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a3bce90edd8f6cafe3f63b1a943800792e830178",
      "tree": "c07a2962987e57997b4ff6f6c63febe1feaa0a9c",
      "parents": [
        "45333d5a31296d0af886d94f1d08f128231cab8e"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Thu Aug 28 16:17:05 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:10 2008 +0200"
      },
      "message": "block: add gfp_mask argument to blk_rq_map_user and blk_rq_map_user_iov\n\nCurrently, blk_rq_map_user and blk_rq_map_user_iov always do\nGFP_KERNEL allocation.\n\nThis adds gfp_mask argument to blk_rq_map_user and blk_rq_map_user_iov\nso sg can use it (sg always does GFP_ATOMIC allocation).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Douglas Gilbert \u003cdougg@torque.net\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ab780f1ece0dc8d5e8e8e85435acc5e4747ccda3",
      "tree": "4085b6c929a44de229eb5ef13fa2079211ea5512",
      "parents": [
        "c7c22e4d5c1fdebfac4dba76de7d0338c2b0d832"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Aug 26 10:25:02 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:09 2008 +0200"
      },
      "message": "block: inherit CPU completion on bio-\u003erq and rq-\u003erq merges\n\nSomewhat incomplete, as we do allow merges of requests and bios\nthat have different completion CPUs given. This is done on the\nassumption that a larger IO is still more beneficial than CPU\nlocality.\n\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": "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": "5df97b91b5d7ed426034fcc84cb6e7cf682b8838",
      "tree": "727b9fb778f72d2b1ff44c007fb5209bacf67f4a",
      "parents": [
        "b8b3e16cfe6435d961f6aaebcfd52a1ff2a988c5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Aug 15 10:20:02 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:03 2008 +0200"
      },
      "message": "drop vmerge accounting\n\nRemove hw_segments field from struct bio and struct request. Without virtual\nmerge accounting they have no purpose.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "766ca4428d1239a970926856c447310c9c191af2",
      "tree": "ddf5f709a4a0c67aabd4af5166f8735d5228d671",
      "parents": [
        "1a8e2bddd5c29008f311613e75925fecbf522c5b"
      ],
      "author": {
        "name": "Fernando Luis Vázquez Cao",
        "email": "fernando@oss.ntt.co.jp",
        "time": "Thu Aug 14 09:59:13 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:02 2008 +0200"
      },
      "message": "virtio_blk: use a wrapper function to access io context information of IO requests\n\nstruct request has an ioprio member but it is never updated because\ncurrently bios do not hold io context information. The implication of\nthis is that virtio_blk ends up passing useless information to the\nbackend driver.\n\nThat said, some IO schedulers such as CFQ do store io context\ninformation in struct request, but use private members for that, which\nmeans that that information cannot be directly accessed in a IO\nscheduler-independent way.\n\nThis patch adds a function to obtain the ioprio of a request. We should\navoid accessing ioprio directly and use this function instead, so that\nits users do not have to care about future changes in block layer\nstructures or what the currently active IO controller is.\n\nThis patch does not introduce any functional changes but paves the way\nfor future clean-ups and enhancements.\n\nSigned-off-by: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1a8e2bddd5c29008f311613e75925fecbf522c5b",
      "tree": "e12f30d3efd7c8f89ba89e8b21a4df17f1488c3e",
      "parents": [
        "e17fc0a1ccf88f6d4dcb363729f3141b0958c325"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Wed Aug 13 12:35:09 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:02 2008 +0200"
      },
      "message": "Kill REQ_TYPE_FLUSH\n\nIt was only used by ps3disk, and it should probably have been\nREQ_TYPE_LINUX_BLOCK + REQ_LB_OP_FLUSH.\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e17fc0a1ccf88f6d4dcb363729f3141b0958c325",
      "tree": "0a7c2dc1c3159c2af14d87c67ca83e158b2c78b5",
      "parents": [
        "d30a2605be9d5132d95944916e8f578fcfe4f976"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Sat Aug 09 16:42:20 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:02 2008 +0200"
      },
      "message": "Allow elevators to sort/merge discard requests\n\nBut blkdev_issue_discard() still emits requests which are interpreted as\nsoft barriers, because naïve callers might otherwise issue subsequent\nwrites to those same sectors, which might cross on the queue (if they\u0027re\nreallocated quickly enough).\n\nCallers still _can_ issue non-barrier discard requests, but they have to\ntake care of queue ordering for themselves.\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "eae9acd13a8d14b50c00a961fa959606f34bbd92",
      "tree": "cbd16bf7fe9db99f6916408953c6243aca175121",
      "parents": [
        "8c540a96c175bdf55bda8707db04cec78b816454"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Tue Aug 05 18:08:25 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:01 2008 +0200"
      },
      "message": "Support \u0027discard sectors\u0027 operation in translation layer support core\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fb2dce862d9f9a68e6b9374579056ec9eca02a63",
      "tree": "888e0fd7248c9329fa1aa3981043a2dc2457d488",
      "parents": [
        "d628eaef310533767ce68664873869c2d7f78f09"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Tue Aug 05 18:01:53 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:01 2008 +0200"
      },
      "message": "Add \u0027discard\u0027 request handling\n\nSome block devices benefit from a hint that they can forget the contents\nof certain sectors. Add basic support for this to the block core, along\nwith a \u0027blkdev_issue_discard()\u0027 helper function which issues such\nrequests.\n\nThe caller doesn\u0027t get to provide an end_io functio, since\nblkdev_issue_discard() will automatically split the request up into\nmultiple bios if appropriate. Neither does the function wait for\ncompletion -- it\u0027s expected that callers won\u0027t care about when, or even\n_if_, the request completes. It\u0027s only a hint to the device anyway. By\ndefinition, the file system doesn\u0027t _care_ about these sectors any more.\n\n[With feedback from OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e and\nJens Axboe \u003cjens.axboe@oracle.com]\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d628eaef310533767ce68664873869c2d7f78f09",
      "tree": "12d6a9e6db000d89deb7ab01d55d2e7b9e6f42c5",
      "parents": [
        "36144077bce9f89763ce994bc631cbd1c9db7785"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Sat Aug 09 16:22:17 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:01 2008 +0200"
      },
      "message": "Fix up comments about matching flags between bio and rq\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2dc75d3c3b49c64fd26b4832a7efb75546cb3fc5",
      "tree": "908ae81851ca06d46a680d8e6c33afdfb292c131",
      "parents": [
        "adee14b2e1557d0a8559f29681732d05a89dfc35"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Sep 11 14:20:23 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Sep 11 14:20:23 2008 +0200"
      },
      "message": "block: disable sysfs parts of the disk command filter\n\nWe still have life time issues with the sysfs command filter kobject,\nso disable it for 2.6.27 release. We can revisit this and make it work\nproperly for 2.6.28, for 2.6.27 release it\u0027s too risky.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5168c47b4c294412f079dd3cc891e0276bb0479e",
      "tree": "5ab223a104b631f0ff2f86d3bd0d67066289ba36",
      "parents": [
        "0e3eb45e4fe901d92bf9eae103155a57517af32e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Aug 26 09:03:17 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Aug 27 09:50:20 2008 +0200"
      },
      "message": "block: remove blk_queue_tag_depth() and blk_queue_tag_queue()\n\nThey are unused and -\u003ebusy doesn\u0027t exist anymore.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4beab5c623fef4622f9a8593f85760ff10b5a3f7",
      "tree": "630ad8965703e3ea8296945f4db10c80a348d2b4",
      "parents": [
        "14e507b852e7dcea142b98757181bfa785cb4c05"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Jul 26 18:03:25 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Aug 27 09:50:19 2008 +0200"
      },
      "message": "block: rename blk_scsi_cmd_filter to blk_cmd_filter\n\nTechnically, the cmd_filter would be applied to other protocols though\nit\u0027s unlikely to happen. Putting SCSI stuff to request_queue is kinda\nlayer violation. So let\u0027s rename it.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "abf5439370491dd6fbb4fe1a7939680d2a9bc9d4",
      "tree": "aa3630557fe4a4bc6313617f5770af30eec68515",
      "parents": [
        "1941246dd98089dd637f44d3bd4f6cc1c61aa9e4"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Aug 16 14:10:05 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Aug 27 09:50:19 2008 +0200"
      },
      "message": "block: move cmdfilter from gendisk to request_queue\n\ncmd_filter works only for the block layer SG_IO with SCSI block\ndevices. It breaks scsi/sg.c, bsg, and the block layer SG_IO with SCSI\ncharacter devices (such as st). We hit a kernel crash with them.\n\nThe problem is that cmd_filter code accesses to gendisk (having struct\nblk_scsi_cmd_filter) via inode-\u003ei_bdev-\u003ebd_disk. It works for only\nSCSI block device files. With character device files, inode-\u003ei_bdev\nleads you to struct cdev. inode-\u003ei_bdev-\u003ebd_disk-\u003eblk_scsi_cmd_filter\nisn\u0027t safe.\n\nSCSI ULDs don\u0027t expose gendisk; they keep it private. bsg needs to be\nindependent on any protocols. We shouldn\u0027t change ULDs to expose their\ngendisk.\n\nThis patch moves struct blk_scsi_cmd_filter from gendisk to\nrequest_queue, a common object, which eveyone can access to.\n\nThe user interface doesn\u0027t change; users can change the filters via\n/sys/block/. gendisk has a pointer to request_queue so the cmd_filter\ncode accesses to struct blk_scsi_cmd_filter.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6c5e0c4d518a37e1d5d794c14433e80284415079",
      "tree": "26208a4fe4115a37c000a13d50df8c1a5e393553",
      "parents": [
        "94ad374a0751f40d25e22e036c37f7263569d24c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Aug 01 20:31:32 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Aug 01 20:31:32 2008 +0200"
      },
      "message": "block: add a blk_plug_device_unlocked() that grabs the queue lock\n\nblk_plug_device() must be called with the queue lock held, so callers\noften just grab and release the lock for that purpose. Add a helper\nthat does just that.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d442cc44c0db56e84ef6aa244a88427d2efe06cd",
      "tree": "4358ff09af75c2e102f75eb08a9b55b446db6a07",
      "parents": [
        "8df1b049bc86495a40e421abc8b9cf1dda32f0d9"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Jul 16 16:09:06 2008 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 16 14:51:41 2008 -0700"
      },
      "message": "block: Trivial fix for blk_integrity_rq()\n\nFail integrity check gracefully when request does not have a bio\nattached (BLOCK_PC).\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "98339cbd360b77c3167db287fd611468c2c44559",
      "tree": "06779e040c18aa40fc5a6e15b132fa1f70ec45f6",
      "parents": [
        "e4e0fadcd929138aa82130a1c5f22206d86d7bb2",
        "cbbc4e818de4451cdef75a112b7fc8a523d5d2a0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 15 11:15:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 15 11:15:36 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (80 commits)\n  ide-floppy: fix unfortunate function naming\n  ide-tape: unify idetape_create_read/write_cmd\n  ide: add ide_pc_intr() helper\n  ide-{floppy,scsi}: read Status Register before stopping DMA engine\n  ide-scsi: add more debugging to idescsi_pc_intr()\n  ide-scsi: use pc-\u003ecallback\n  ide-floppy: add more debugging to idefloppy_pc_intr()\n  ide-tape: always log debug info in idetape_pc_intr() if debugging is enabled\n  ide-tape: add ide_tape_io_buffers() helper\n  ide-tape: factor out DSC handling from idetape_pc_intr()\n  ide-{floppy,tape}: move checking of -\u003efailed_pc to -\u003ecallback\n  ide: add ide_issue_pc() helper\n  ide: add PC_FLAG_DRQ_INTERRUPT pc flag\n  ide-scsi: move idescsi_map_sg() call out from idescsi_issue_pc()\n  ide: add ide_transfer_pc() helper\n  ide-scsi: set drive-\u003escsi flag for devices handled by the driver\n  ide-{cd,floppy,tape}: remove checking for drive-\u003escsi\n  ide: add PC_FLAG_ZIP_DRIVE pc flag\n  ide-tape: factor out waiting for good ireason from idetape_transfer_pc()\n  ide-tape: set PC_FLAG_DMA_IN_PROGRESS flag in idetape_transfer_pc()\n  ...\n"
    },
    {
      "commit": "681a561b7ec7fdcd8f35b68e44ac6d6c70aecc04",
      "tree": "0bd31a85ccdbbae87f452448bd001e7a4c2b75da",
      "parents": [
        "52a93ba815737e3877f85b46850cffe993a22429"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Tue Jul 15 21:21:45 2008 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Tue Jul 15 21:21:45 2008 +0200"
      },
      "message": "block: unexport blk_end_sync_rq\n\nAll the users of blk_end_sync_rq has gone (they are converted to use\nblk_execute_rq). This unexports blk_end_sync_rq.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Borislav Petkov \u003cpetkovbb@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n"
    },
    {
      "commit": "27f8221af406e43b529a5425bc99c9b1e9bdf521",
      "tree": "6e847b9359327449b77d4b6350cc9d44fd9208b6",
      "parents": [
        "2610324fcacf38a24b630090ebcb802538763187"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Fri Jul 04 09:30:03 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jul 04 09:52:13 2008 +0200"
      },
      "message": "block: add blk_queue_update_dma_pad\n\nThis adds blk_queue_update_dma_pad to prevent LLDs from overwriting\nthe dma pad mask wrongly (we added blk_queue_update_dma_alignment due\nto the same reason).\n\nThis also converts libata to use blk_queue_update_dma_pad instead of\nblk_queue_dma_pad.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Thomas Bogendoerfer \u003ctsbogend@alpha.franken.de\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e48ec69005f02b70b7ecfde1bc39a599086d16ef",
      "tree": "1868fc162e00af21332a82cdf348229c6b985d2f",
      "parents": [
        "e180f5949327e897bc35a816f4f4010186632df9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 03 13:18:54 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 03 13:21:15 2008 +0200"
      },
      "message": "block: extend queue_flag bitops\n\nAdd test_and_clear and test_and_set.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cc371e66e340f35eed8dc4651c7c18e754c7fb26",
      "tree": "5a2d6727eb07a05999c531a90da43ab1c36b713e",
      "parents": [
        "b24498d477a14680fc3bb3ad884fa9fa76a2d237"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jul 03 09:53:43 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 03 13:21:15 2008 +0200"
      },
      "message": "Add bvec_merge_data to handle stacked devices and -\u003emerge_bvec()\n\nWhen devices are stacked, one device\u0027s merge_bvec_fn may need to perform\nthe mapping and then call one or more functions for its underlying devices.\n\nThe following bio fields are used:\n  bio-\u003ebi_sector\n  bio-\u003ebi_bdev\n  bio-\u003ebi_size\n  bio-\u003ebi_rw  using bio_data_dir()\n\nThis patch creates a new struct bvec_merge_data holding a copy of those\nfields to avoid having to change them directly in the struct bio when\ngoing down the stack only to have to change them back again on the way\nback up.  (And then when the bio gets mapped for real, the whole\nexercise gets repeated, but that\u0027s a problem for another day...)\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b24498d477a14680fc3bb3ad884fa9fa76a2d237",
      "tree": "1ba2c9f24b3f22f45fa424ad904fb6dcc5d67790",
      "parents": [
        "06a452e5b95eb669b7ad414ccf587dfc2d91b217"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 27 09:12:09 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 03 13:21:15 2008 +0200"
      },
      "message": "block: integrity flags can\u0027t use bit ops on unsigned short\n\nJust use normal open coded bit operations instead, they need not be\natomic.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    }
  ],
  "next": "0b07de85a76e1346e675f0e98437378932473df7"
}
