)]}'
{
  "log": [
    {
      "commit": "dd3932eddf428571762596e17b65f5dc92ca361b",
      "tree": "57cec5ae2f862037f78b7e993323d77955bb6463",
      "parents": [
        "8786fb70ccb36c7cff64680bb80c46d3a09d44db"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Sep 16 20:51:46 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 20:52:58 2010 +0200"
      },
      "message": "block: remove BLKDEV_IFL_WAIT\n\nAll the blkdev_issue_* helpers can only sanely be used for synchronous\ncaller.  To issue cache flushes or barriers asynchronously the caller needs\nto set up a bio by itself with a completion callback to move the asynchronous\nstate machine ahead.  So drop the BLKDEV_IFL_WAIT flag that is always\nspecified when calling blkdev_issue_* and also remove the now unused flags\nargument to blkdev_issue_flush and blkdev_issue_zeroout.  For\nblkdev_issue_discard we need to keep it for the secure discard flag, which\ngains a more descriptive name and loses the bitops vs flag confusion.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d391a2dda2f1c993f094bdb3a8a342c5e0546553",
      "tree": "315b4d8431db05b96d578e2d7183081b91fa4e84",
      "parents": [
        "04ccc65cd1f57aee861708e08cd2272c5a0d088c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: use REQ_FLUSH in blkdev_issue_flush()\n\nUpdate blkdev_issue_flush() to use new REQ_FLUSH interface.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "09d60c701b64b509f328cac72970eb894f485b9e",
      "tree": "ef5d88b6fe6449395eeceb15988142c6297cefdc",
      "parents": [
        "47f70d5a6ca78c40a1c799d43506efbfed914f7b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: make sure FSEQ_DATA request has the same rq_disk as the original\n\nrq-\u003erq_disk and bio-\u003ebi_bdev-\u003ebd_disk may differ if a request has\npassed through remapping drivers.  FSEQ_DATA request incorrectly\nfollowed bio-\u003ebi_bdev-\u003ebd_disk ending up being issued w/ mismatching\nrq_disk.  Make it follow orig_rq-\u003erq_disk.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nTested-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "47f70d5a6ca78c40a1c799d43506efbfed914f7b",
      "tree": "fff5197359b989197eda76dd019746fbba054e88",
      "parents": [
        "337238be1bf52e1242f940fc6fe83fb395e55057"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: kick queue after sequencing REQ_FLUSH/FUA\n\nWhile completing a request from a REQ_FLUSH/FUA sequence, another\nrequest can be pushed to the request queue.  If a driver tests\nelv_queue_empty() before completing a request and runs the queue again\nonly if the queue wasn\u0027t empty, this may lead to hang.  Please note\nthat most drivers either kick the queue unconditionally or test queue\nemptiness after completing the current request and don\u0027t have this\nproblem.\n\nThis patch removes this possibility by making REQ_FLUSH/FUA sequence\ncode kick the queue if the queue was empty before completing a request\nfrom REQ_FLUSH/FUA sequence.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "337238be1bf52e1242f940fc6fe83fb395e55057",
      "tree": "cb3a81ebb1bb73aaac692f38d7d3e47007e39093",
      "parents": [
        "cde4c406d8fb051c5aafc917643adbb9dbd0abc2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: initialize flush request with WRITE_FLUSH instead of REQ_FLUSH\n\ninit_flush_request() only set REQ_FLUSH when initializing flush\nrequests making them READ requests.  Use WRITE_FLUSH instead.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "cde4c406d8fb051c5aafc917643adbb9dbd0abc2",
      "tree": "554f623851e5b30069e5e0c5706100ed7b82a3bd",
      "parents": [
        "1e87901e189c8f01750d67485009fe3827c691bf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: simplify queue_next_fseq\n\nWe need to call blk_rq_init and elv_insert for all cases in queue_next_fseq,\nso take these calls into common code.  Also move the end_io initialization\nfrom queue_flush into queue_next_fseq and rename queue_flush to\ninit_flush_request now that it\u0027s old name doesn\u0027t apply anymore.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4fed947cb311e5aa51781d316cefca836352f6ce",
      "tree": "eada83d5bf503244628e3c190e97e8c7af847e35",
      "parents": [
        "dd4c133f387c48f526022860ad70354637a80f4c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: implement REQ_FLUSH/FUA based interface for FLUSH/FUA requests\n\nNow that the backend conversion is complete, export sequenced\nFLUSH/FUA capability through REQ_FLUSH/FUA flags.  REQ_FLUSH means the\ndevice cache should be flushed before executing the request.  REQ_FUA\nmeans that the data in the request should be on non-volatile media on\ncompletion.\n\nBlock layer will choose the correct way of implementing the semantics\nand execute it.  The request may be passed to the device directly if\nthe device can handle it; otherwise, it will be sequenced using one or\nmore proxy requests.  Devices will never see REQ_FLUSH and/or FUA\nwhich it doesn\u0027t support.\n\nAlso, unlike the original REQ_HARDBARRIER, REQ_FLUSH/FUA requests are\nnever failed with -EOPNOTSUPP.  If the underlying device doesn\u0027t\nsupport FLUSH/FUA, the block layer simply make those noop.  IOW, it no\nlonger distinguishes between writeback cache which doesn\u0027t support\ncache flush and writethrough/no cache.  Devices which have WB cache\nw/o flush are very difficult to come by these days and there\u0027s nothing\nmuch we can do anyway, so it doesn\u0027t make sense to require everyone to\nimplement -EOPNOTSUPP handling.  This will simplify filesystems and\nblock drivers as they can drop -EOPNOTSUPP retry logic for barriers.\n\n* QUEUE_ORDERED_* are removed and QUEUE_FSEQ_* are moved into\n  blk-flush.c.\n\n* REQ_FLUSH w/o data can also be directly passed to drivers without\n  sequencing but some drivers assume that zero length requests don\u0027t\n  have rq-\u003ebio which isn\u0027t true for these requests requiring the use\n  of proxy requests.\n\n* REQ_COMMON_MASK now includes REQ_FLUSH | REQ_FUA so that they are\n  copied from bio to request.\n\n* WRITE_BARRIER is marked deprecated and WRITE_FLUSH, WRITE_FUA and\n  WRITE_FLUSH_FUA are added.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "dd4c133f387c48f526022860ad70354637a80f4c",
      "tree": "7b741150d37d327b69e483468278d9de3a43a4e1",
      "parents": [
        "8839a0e055d9abd6c011d533373a8dd266cad011"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: rename barrier/ordered to flush\n\nWith ordering requirements dropped, barrier and ordered are misnomers.\nNow all block layer does is sequencing FLUSH and FUA.  Rename them to\nflush.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8839a0e055d9abd6c011d533373a8dd266cad011",
      "tree": "61025bafd53a3a5595579e552d7d354c01e585c2",
      "parents": [
        "28e7d1845216538303bb95d679d8fd4de50e2f1a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: rename blk-barrier.c to blk-flush.c\n\nWithout ordering requirements, barrier and ordering are minomers.\nRename block/blk-barrier.c to block/blk-flush.c.  Rename of symbols\nwill follow.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "28e7d1845216538303bb95d679d8fd4de50e2f1a",
      "tree": "0ef56dc0d7c894657c4ae71a3e8da6e1164fb933",
      "parents": [
        "dd831006d5be7f74c3fe7aef82380c51c3637960"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: drop barrier ordering by queue draining\n\nFilesystems will take all the responsibilities for ordering requests\naround commit writes and will only indicate how the commit writes\nthemselves should be handled by block layers.  This patch drops\nbarrier ordering by queue draining from block layer.  Ordering by\ndraining implementation was somewhat invasive to request handling.\nList of notable changes follow.\n\n* Each queue has 1 bit color which is flipped on each barrier issue.\n  This is used to track whether a given request is issued before the\n  current barrier or not.  REQ_ORDERED_COLOR flag and coloring\n  implementation in __elv_add_request() are removed.\n\n* Requests which shouldn\u0027t be processed yet for draining were stalled\n  by returning -EAGAIN from blk_do_ordered() according to the test\n  result between blk_ordered_req_seq() and blk_blk_ordered_cur_seq().\n  This logic is removed.\n\n* Draining completion logic in elv_completed_request() removed.\n\n* All barrier sequence requests were queued to request queue and then\n  trckled to lower layer according to progress and thus maintaining\n  request orders during requeue was necessary.  This is replaced by\n  queueing the next request in the barrier sequence only after the\n  current one is complete from blk_ordered_complete_seq(), which\n  removes the need for multiple proxy requests in struct request_queue\n  and the request sorting logic in the ELEVATOR_INSERT_REQUEUE path of\n  elv_insert().\n\n* As barriers no longer have ordering constraints, there\u0027s no need to\n  dump the whole elevator onto the dispatch queue on each barrier.\n  Insert barriers at the front instead.\n\n* If other barrier requests come to the front of the dispatch queue\n  while one is already in progress, they are stored in\n  q-\u003epending_barriers and restored to dispatch queue one-by-one after\n  each barrier completion from blk_ordered_complete_seq().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "dd831006d5be7f74c3fe7aef82380c51c3637960",
      "tree": "30a86749f0c4f7980b2982dbde8bbcfff37b08f9",
      "parents": [
        "9cbbdca44ae1a6f512ea1e2be11ced8bbb9d430a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: misc cleanups in barrier code\n\nMake the following cleanups in preparation of barrier/flush update.\n\n* blk_do_ordered() declaration is moved from include/linux/blkdev.h to\n  block/blk.h.\n\n* blk_do_ordered() now returns pointer to struct request, with %NULL\n  meaning \"try the next request\" and ERR_PTR(-EAGAIN) \"try again\n  later\".  The third case will be dropped with further changes.\n\n* In the initialization of proxy barrier request, data direction is\n  already set by init_request_from_bio().  Drop unnecessary explicit\n  REQ_WRITE setting and move init_request_from_bio() above REQ_FUA\n  flag setting.\n\n* add_request() is collapsed into __make_request().\n\nThese changes don\u0027t make any functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4913efe456c987057e5d36a3f0a55422a9072cae",
      "tree": "295f04a7214e1933df3301dd42c12ff3f282a22c",
      "parents": [
        "6958f145459ca7ad9715024de97445addacb8510"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: deprecate barrier and replace blk_queue_ordered() with blk_queue_flush()\n\nBarrier is deemed too heavy and will soon be replaced by FLUSH/FUA\nrequests.  Deprecate barrier.  All REQ_HARDBARRIERs are failed with\n-EOPNOTSUPP and blk_queue_ordered() is replaced with simpler\nblk_queue_flush().\n\nblk_queue_flush() takes combinations of REQ_FLUSH and FUA.  If a\ndevice has write cache and can flush it, it should set REQ_FLUSH.  If\nthe device can handle FUA writes, it should also set REQ_FUA.\n\nAll blk_queue_ordered() users are converted.\n\n* ORDERED_DRAIN is mapped to 0 which is the default value.\n* ORDERED_DRAIN_FLUSH is mapped to REQ_FLUSH.\n* ORDERED_DRAIN_FLUSH_FUA is mapped to REQ_FLUSH | REQ_FUA.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Pierre Ossman \u003cdrzeus@drzeus.cx\u003e\nCc: Stefan Weinhuber \u003cwein@de.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "6958f145459ca7ad9715024de97445addacb8510",
      "tree": "c8c945eb68ceb88bd34647d7bcaedd13a0d753ca",
      "parents": [
        "589d7ed02ade0d06a3510da2e15a7edfdb2ef3d8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: kill QUEUE_ORDERED_BY_TAG\n\nNobody is making meaningful use of ORDERED_BY_TAG now and queue\ndraining for barrier requests will be removed soon which will render\nthe advantage of tag ordering moot.  Kill ORDERED_BY_TAG.  The\nfollowing users are affected.\n\n* brd: converted to ORDERED_DRAIN.\n* virtio_blk: ORDERED_TAG path was already marked deprecated.  Removed.\n* xen-blkfront: ORDERED_TAG case dropped.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "16f2319fd67b169c0b34391d3fa0870fff129891",
      "tree": "986105ef1ea459ad54a28cd19a1585a7e23e850f",
      "parents": [
        "28e18d0188b9e3ab82ebd09d9b1d1c7f8d1822aa"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Fri Jul 09 09:38:25 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:52:41 2010 +0200"
      },
      "message": "block: set up rq-\u003erq_disk properly for flush requests\n\nq-\u003ebar_rq.rq_disk is NULL. Use the rq_disk of the original request\ninstead.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "28e18d0188b9e3ab82ebd09d9b1d1c7f8d1822aa",
      "tree": "cad96b3566ee8da92003689cdba800f8a4f7ca04",
      "parents": [
        "3b06c21e8462b77186613e70db286cfa8616088b"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Fri Jul 09 09:38:24 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:52:40 2010 +0200"
      },
      "message": "block: set REQ_TYPE_FS on flush requests\n\nthe block layer doesn\u0027t set rq-\u003ecmd_type on flush requests. By\ndefinition, it should be REQ_TYPE_FS (the lower layers build a command\nand interpret the result of it, that is, the block layer doesn\u0027t know\nthe details).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f10d9f617a65905c556c3b37c9b9646ae7d04ed7",
      "tree": "0e1d1a28578e8c1b2115b8486add3b235f7e3619",
      "parents": [
        "2669b19fa4debcdd6a660ace1a124c0900f113e6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Jul 13 17:50:50 2010 +1000"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:26:29 2010 +0200"
      },
      "message": "blkdev: check for valid request queue before issuing flush\n\nIssuing a blkdev_issue_flush() on an unconfigured loop device causes a panic as\nq-\u003emake_request_fn is not configured. This can occur when trying to mount the\nunconfigured loop device as an XFS filesystem. There are no guards that catch\nthe bio before the request function is called because we don\u0027t add a payload to\nthe bio. Instead, manually check this case as soon as we have a pointer to the\nqueue to flush.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "00fff26539bfe3fad21c164fc4002d9ede056fb0",
      "tree": "4909c8eed03133b1d46f689e465ed1f579b8e282",
      "parents": [
        "afc23068103ccfbf1917eb2a007bc15ab5418cc9"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Jul 03 17:45:40 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:24:15 2010 +0200"
      },
      "message": "block: remove q-\u003eprepare_flush_fn completely\n\nThis removes q-\u003eprepare_flush_fn completely (changes the\nblk_queue_ordered API).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b6a903151d05e3912ab66b186f74c61851efb88c",
      "tree": "dbf0f8d2da9aba48cac375304a9842e0166628c8",
      "parents": [
        "8749534fe6826596b71bc409c872b047a8e2755b"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Jul 03 17:45:33 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:23:56 2010 +0200"
      },
      "message": "block: permit PREFLUSH and POSTFLUSH without prepare_flush_fn\n\nThis is preparation for removing q-\u003eprepare_flush_fn.\n\nTemporarily, blk_queue_ordered() permits QUEUE_ORDERED_DO_PREFLUSH and\nQUEUE_ORDERED_DO_POSTFLUSH without prepare_flush_fn.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8749534fe6826596b71bc409c872b047a8e2755b",
      "tree": "29ceb928f03dfb33d3a03df1c00e4a51d22b55b3",
      "parents": [
        "802447c1c0513a0ea0e29d6bda23b19ac0686654"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Jul 03 17:45:32 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:23:53 2010 +0200"
      },
      "message": "block: introduce REQ_FLUSH flag\n\nSCSI-ml needs a way to mark a request as flush request in\nq-\u003eprepare_flush_fn because it needs to identify them later (e.g. in\nq-\u003erequest_fn or prep_rq_fn).\n\nqueue_flush sets REQ_HARDBARRIER in rq-\u003ecmd_flags however the block\nlayer also sends normal REQ_TYPE_FS requests with REQ_HARDBARRIER. So\nSCSI-ml can\u0027t use REQ_HARDBARRIER to identify flush requests.\n\nWe could change the block layer to clear REQ_HARDBARRIER bit before\nsending non flush requests to the lower layers. However, intorudcing\nthe new flag looks cleaner (surely easier).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: James Bottomley \u003cJames.Bottomley@suse.de\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7b6d91daee5cac6402186ff224c3af39d79f4a0e",
      "tree": "b1518cf0b6c301178e0a320f80610cd5b3aa7625",
      "parents": [
        "33659ebbae262228eef4e0fe990f393d1f0ed941"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "message": "block: unify flags for struct bio and struct request\n\nRemove the current bio flags and reuse the request flags for the bio, too.\nThis allows to more easily trace the type of I/O from the filesystem\ndown to the block driver.  There were two flags in the bio that were\nmissing in the requests:  BIO_RW_UNPLUG and BIO_RW_AHEAD.  Also I\u0027ve\nrenamed two request flags that had a superflous RW in them.\n\nNote that the flags are in bio.h despite having the REQ_ name - as\nblkdev.h includes bio.h that is the only way to go for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "33659ebbae262228eef4e0fe990f393d1f0ed941",
      "tree": "fcb537f09359c8dad3a6f6e16dc4319562dc42cc",
      "parents": [
        "7e005f79791dcd58436c88ded4a7f5aed1b82147"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:17:56 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:17:56 2010 +0200"
      },
      "message": "block: remove wrappers for request type/flags\n\nRemove all the trivial wrappers for the cmd_type and cmd_flags fields in\nstruct requests.  This allows much easier grepping for different request\ntypes instead of unwinding through macros.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f31e7e4022841c43c53b847b86b1bf97a08b2c94",
      "tree": "738821236a4e84f790d597bb2cc04bd812668b6a",
      "parents": [
        "f17e232e9237c231daf9f0f4b177c61218bcb2e4"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Wed Apr 28 17:55:08 2010 +0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 28 19:47:36 2010 +0200"
      },
      "message": "blkdev: move blkdev_issue helper functions to separate file\n\nMove blkdev_issue_discard from blk-barrier.c because it is\nnot barrier related.\nLater the file will be populated by other helpers.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f17e232e9237c231daf9f0f4b177c61218bcb2e4",
      "tree": "6fae1e48cd6edde825229bfdf9a31ffbce9626e9",
      "parents": [
        "fbd9b09a177a481eda256447c881f014f29034fe"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Wed Apr 28 17:55:07 2010 +0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 28 19:47:36 2010 +0200"
      },
      "message": "blkdev: allow async blkdev_issue_flush requests\n\nIn some places caller don\u0027t want to wait a request to complete.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fbd9b09a177a481eda256447c881f014f29034fe",
      "tree": "ef7e213045382f82a1e3e3cf134d196a1045dd7a",
      "parents": [
        "6b4517a7913a09d3259bb1d21c9cb300f12294bd"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Wed Apr 28 17:55:06 2010 +0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 28 19:47:36 2010 +0200"
      },
      "message": "blkdev: generalize flags for blkdev_issue_fn functions\n\nThe patch just convert all blkdev_issue_xxx function to common\nset of flags. Wait/allocation semantics preserved.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "e79e95db5cffb2e01170d510686489c40937faa1",
      "tree": "b21b0f4be2edf79f3e68c628c3022cda6a72e949",
      "parents": [
        "81744ee44ab2845c16ffd7d6f762f7b4a49a4750"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Tue Dec 29 08:53:54 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Dec 29 08:53:54 2009 +0100"
      },
      "message": "block: Honor the gfp_mask for alloc_page() in blkdev_issue_discard()\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "67efc9258010da35b27b3854d0880c7e193004ed",
      "tree": "d98ad032d8c701084539d5673c2d7d7ca5962a3f",
      "parents": [
        "c15227de132f1295f3db6b7df9079956b1020fd8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Sep 30 13:54:20 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 01 21:19:34 2009 +0200"
      },
      "message": "block: allow large discard requests\n\nCurrently we set the bio size to the byte equivalent of the blocks to\nbe trimmed when submitting the initial DISCARD ioctl.  That means it\nis subject to the max_hw_sectors limitation of the HBA which is\nmuch lower than the size of a DISCARD request we can support.\nAdd a separate max_discard_sectors tunable to limit the size for discard\nrequests.\n\nWe limit the max discard request size in bytes to 32bit as that is the\nlimit for bio-\u003ebi_size.  This could be much larger if we had a way to pass\nthat information through the block layer.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c15227de132f1295f3db6b7df9079956b1020fd8",
      "tree": "ad06f119f283cf8a6313681055e8132ba2851ddb",
      "parents": [
        "3bd0f0c763e497c8674b28e3df2732f48683dabd"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Sep 30 13:52:12 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 01 21:19:30 2009 +0200"
      },
      "message": "block: use normal I/O path for discard requests\n\nprepare_discard_fn() was being called in a place where memory allocation\nwas effectively impossible.  This makes it inappropriate for all but\nthe most trivial translations of Linux\u0027s DISCARD operation to the block\ncommand set.  Additionally adding a payload there makes the ownership\nof the bio backing unclear as it\u0027s now allocated by the device driver\nand not the submitter as usual.\n\nIt is replaced with QUEUE_FLAG_DISCARD which is used to indicate whether\nthe queue supports discard operations or not.  blkdev_issue_discard now\nallocates a one-page, sector-length payload which is the right thing\nfor the common ATA and SCSI implementations.\n\nThe mtd implementation of prepare_discard_fn() is replaced with simply\nchecking for the request being a discard.\n\nLargely based on a previous patch from Matthew Wilcox \u003cmatthew@wil.cx\u003e\nwhich did the prepare_discard_fn but not the different payload allocation\nyet.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "746cd1e7e4a555ddaee53b19a46e05c9c61eaf09",
      "tree": "d129194669e0122113a5cc86003a4a7711450284",
      "parents": [
        "3d2257f157c2324acbc0fa0fa54e8626a987edd2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sat Sep 12 07:35:43 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Sep 14 08:24:53 2009 +0200"
      },
      "message": "block: use blkdev_issue_discard in blk_ioctl_discard\n\nblk_ioctl_discard duplicates large amounts of code from blkdev_issue_discard,\nthe only difference between the two is that blkdev_issue_discard needs to\nsend a barrier discard request and blk_ioctl_discard a non-barrier one,\nand blk_ioctl_discard needs to wait on the request.  To facilitates this\nadd a flags argument to blkdev_issue_discard to control both aspects of the\nbehaviour.  This will be very useful later on for using the waiting\nfuncitonality for other callers.\n\nBased on an earlier patch from Matthew Wilcox \u003cmatthew@wil.cx\u003e.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\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": "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": "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": "83096ebf1263b2c1ee5e653ba37d993d02e3eb7b",
      "tree": "2226b71a616ec1cb2d37511c6a09ba9507a1cd69",
      "parents": [
        "5b93629b4509c03ffa87a9316412fedf6f58cb37"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:39 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:54 2009 +0200"
      },
      "message": "block: convert to pos and nr_sectors accessors\n\nWith recent cleanups, there is no place where low level driver\ndirectly manipulates request fields.  This means that the \u0027hard\u0027\nrequest fields always equal the !hard fields.  Convert all\nrq-\u003esectors, nr_sectors and current_nr_sectors references to\naccessors.\n\nWhile at it, drop superflous blk_rq_pos() \u003c 0 test in swim.c.\n\n[ Impact: use pos and nr_sectors accessors ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nTested-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAcked-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nTested-by: Adrian McMenamin \u003cadrian@mcmen.demon.co.uk\u003e\nAcked-by: Adrian McMenamin \u003cadrian@mcmen.demon.co.uk\u003e\nAcked-by: Mike Miller \u003cmike.miller@hp.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Borislav Petkov \u003cpetkovbb@googlemail.com\u003e\nCc: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nCc: Eric Moore \u003cEric.Moore@lsi.com\u003e\nCc: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Pete Zaitcev \u003czaitcev@redhat.com\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Paul Clements \u003cpaul.clements@steeleye.com\u003e\nCc: Tim Waugh \u003ctim@cyberelk.net\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Alex Dubov \u003coakad@yahoo.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Dario Ballabio \u003cballabio_dario@emc.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: unsik Kim \u003cdonari75@gmail.com\u003e\nCc: Laurent Vivier \u003cLaurent@lvivier.info\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5b93629b4509c03ffa87a9316412fedf6f58cb37",
      "tree": "ad5ceda3f718361b8df3057b4f9edcc79aa4cd9d",
      "parents": [
        "c3a4d78c580de4edc9ef0f7c59812fb02ceb037f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:38 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:53 2009 +0200"
      },
      "message": "block: implement blk_rq_pos/[cur_]sectors() and convert obvious ones\n\nImplement accessors - blk_rq_pos(), blk_rq_sectors() and\nblk_rq_cur_sectors() which return rq-\u003ehard_sector, rq-\u003ehard_nr_sectors\nand rq-\u003ehard_cur_sectors respectively and convert direct references of\nthe said fields to the accessors.\n\nThis is in preparation of request data length handling cleanup.\n\nGeert\t: suggested adding const to struct request * parameter to accessors\nSergei\t: spotted error in patch description\n\n[ Impact: cleanup ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nAcked-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nTested-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAcked-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAckec-by: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Borislav Petkov \u003cpetkovbb@googlemail.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "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": "15afd1cc7b624e1c94fdf824ec5af611050b150c",
      "tree": "d6c213d9c218fe20d7533a74751f55f4859cc741",
      "parents": [
        "86c824b9434e764d01489688e4e38aee43b93fcf"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Wed Apr 15 10:35:31 2009 +0530"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:10:12 2009 +0200"
      },
      "message": "block: Remove code handling bio_alloc failure with __GFP_WAIT\n\nRemove code handling bio_alloc failure with __GFP_WAIT.\nGFP_KERNEL implies __GFP_WAIT.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "dbdac9b71dff5d27885f82eb2cfca310861fdf9e",
      "tree": "0df17847e2bf1335d21f98bd486e054c815bec30",
      "parents": [
        "1dfa17f4ab8543d82caf4d36636b93916a18f456"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 13 15:27:32 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 30 12:34:37 2009 +0100"
      },
      "message": "block: Fix documentation for blkdev_issue_flush()\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a185eb4bc84155fff35b602ce99602c010de9634",
      "tree": "e052052cbac813166b614325b32584d8bb9beff0",
      "parents": [
        "58eea927d2de43dc6f03d1ba2c46e55854b31540"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 28 13:32:07 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:28:45 2008 +0100"
      },
      "message": "block: fix empty barrier on write-through w/ ordered tag\n\nEmpty barrier on write-through (or no cache) w/ ordered tag has no\ncommand to execute and without any command to execute ordered tag is\nnever issued to the device and the ordering is never achieved.  Force\ndraining for such cases.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\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": "a7384677b2f4cd40948fd7ce024ba5e1821444ba",
      "tree": "679af09dde4d2659bc6a7dcd1d3dc34752899fa6",
      "parents": [
        "313e42999dbc0f234ca5909a236f78f082cb43b1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 28 13:32:03 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:28:44 2008 +0100"
      },
      "message": "block: remove duplicate or unused barrier/discard error paths\n\n* Because barrier mode can be changed dynamically, whether barrier is\n  supported or not can be determined only when actually issuing the\n  barrier and there is no point in checking it earlier.  Drop barrier\n  support check in generic_make_request() and __make_request(), and\n  update comment around the support check in blk_do_ordered().\n\n* There is no reason to check discard support in both\n  generic_make_request() and __make_request().  Drop the check in\n  __make_request().  While at it, move error action block to the end\n  of the function and add unlikely() to q existence test.\n\n* Barrier request, be it empty or not, is never passed to low level\n  driver and thus it\u0027s meaningless to try to copy back req-\u003esector to\n  bio-\u003ebi_sector on error.  In addition, the notion of failed sector\n  doesn\u0027t make any sense for empty barrier to begin with.  Drop the\n  code block from __end_that_request_first().\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": "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": "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": "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": "2ebca85abcfcbaaf1c0b242e39fc88ad3da90090",
      "tree": "a8fc6fbc0ba4a258b8252625158e1e30dd255fd5",
      "parents": [
        "35ba8f7083e87602b695d6eaca38a6464d5b74db"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Mon Aug 11 17:07:08 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:02 2008 +0200"
      },
      "message": "Use WRITE_BARRIER in blkdev_issue_flush(), not (1\u003c\u003cBIO_RW_BARRIER)\n\nBarriers should be submitted with the WRITE flag set.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\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": "24c03d47d0481ed7b172b398f6c9b7ca1fafb9fa",
      "tree": "d24b94e09b12a2c16cc0cf49c273af846fcc6f13",
      "parents": [
        "e37d05dad7ff9744efd8ea95a70d389e9a65a6fc"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Thu May 01 04:35:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 01 08:04:02 2008 -0700"
      },
      "message": "block: remove remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2a4aa30c5f967eb6ae874c67fa6fceeee84815f9",
      "tree": "fddd67e3b3697874e2a19c0e8e194190957b0e1e",
      "parents": [
        "992b5bceee447a32ef2d617730ae0d03c063eedd"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Tue Apr 29 09:54:36 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 14:48:55 2008 +0200"
      },
      "message": "block: rename and export rq_init()\n\nThis rename rq_init() blk_rq_init() and export it. Any path that hands\nthe request to the block layer needs to call it to initialize the\nrequest.\n\nThis is a preparation for large command support, which needs to\ninitialize the request in a proper way (that is, just doing a memset()\nwill not work).\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": "6f6a036e6e061563efecb61505fc4cc3ca415f80",
      "tree": "6bbb13cb230ef0a5fd465f47970641febb7125ea",
      "parents": [
        "72ed0bf60ade8d2cc1f58276cb16add0af2c3e25"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Apr 29 09:49:06 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 14:48:54 2008 +0200"
      },
      "message": "block/blk-barrier.c:blk_ordered_cur_seq() mustn\u0027t be inline\n\nThis patch fixes the following build error with UML and gcc 4.3:\n\n\u003c--  snip  --\u003e\n\n...\n  CC      block/blk-barrier.o\n/home/bunk/linux/kernel-2.6/git/linux-2.6/block/blk-barrier.c: In function ‘blk_do_ordered’:\n/home/bunk/linux/kernel-2.6/git/linux-2.6/block/blk-barrier.c:57: sorry, unimplemented: inlining failed in call to ‘blk_ordered_cur_seq’: function body not available\n/home/bunk/linux/kernel-2.6/git/linux-2.6/block/blk-barrier.c:252: sorry, unimplemented: called from here\n/home/bunk/linux/kernel-2.6/git/linux-2.6/block/blk-barrier.c:57: sorry, unimplemented: inlining failed in call to ‘blk_ordered_cur_seq’: function body not available\n/home/bunk/linux/kernel-2.6/git/linux-2.6/block/blk-barrier.c:253: sorry, unimplemented: called from here\nmake[2]: *** [block/blk-barrier.o] Error 1\n\n\u003c--  snip  --\u003e\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1afb20f30151dd4160877c827f5b7203f98627fb",
      "tree": "066e99694fbf0396ccd6b2a15e59747a81869f04",
      "parents": [
        "c3270e577c18b3d0e984c3371493205a4807db9d"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Fri Apr 25 12:26:28 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 09:50:34 2008 +0200"
      },
      "message": "block: make rq_init() do a full memset()\n\nThis requires moving rq_init() from get_request() to blk_alloc_request().\nThe upside is that we can now require an rq_init() from any path that\nwishes to hand the request to the block layer.\n\nrq_init() will be exported for the code that uses struct request\nwithout blk_get_request.\n\nThis is a preparation for large command support, which needs to\ninitialize struct request in a proper way (that is, just doing a\nmemset() will not work).\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": "cc66b4512cae8df4ed1635483210aabf7690ec27",
      "tree": "8f96be9db22c086efa3751c5c3a80f0ac6007c9f",
      "parents": [
        "56d94a37f63ad1c9da3bc8e903f79d0ee1e80170"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Mar 04 11:47:46 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Mar 04 11:47:46 2008 +0100"
      },
      "message": "block: fix blkdev_issue_flush() not detecting and passing EOPNOTSUPP back\n\nThis is important to eg dm, that tries to decide whether to stop using\nbarriers or not.\n\nTested as working by Anders Henke \u003canders.henke@1und1.de\u003e\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6728cb0e6343d4068ccec13f07212e6382d3ff33",
      "tree": "5a7826dc91cf2d9cf54e8c24b40aa3c4d892c797",
      "parents": [
        "22b132102f1540dd40f3e41df88796829b685f1a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jan 31 13:03:55 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 01 09:26:33 2008 +0100"
      },
      "message": "block: make core bits checkpatch compliant\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "86db1e29772372155db08ff48a9ceb76e11a2ad1",
      "tree": "312f38eb3245873c476c50f816b85610fef9615a",
      "parents": [
        "8324aa91d1e11a1fc25f209687a0b2e6c2ed47d0"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jan 29 14:53:40 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jan 29 21:55:08 2008 +0100"
      },
      "message": "block: continue ll_rw_blk.c splitup\n\nAdds files for barrier handling, rq execution, io context handling,\nmapping data to requests, and queue settings.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    }
  ]
}
