Files
kernel-tenderloin-3.0/include/linux
Kiyoshi Ueda 32fab448e5 block: add request update interface
This patch adds blk_update_request(), which updates struct request
with completing its data part, but doesn't complete the struct
request itself.
Though it looks like end_that_request_first() of older kernels,
blk_update_request() should be used only by request stacking drivers.

Request-based dm will use it in bio->bi_end_io callback to update
the original request when a data part of a cloned request completes.
Followings are additional background information of why request-based
dm needs this interface.

  - Request stacking drivers can't use blk_end_request() directly from
    the lower driver's completion context (bio->bi_end_io or rq->end_io),
    because some device drivers (e.g. ide) may try to complete
    their request with queue lock held, and it may cause deadlock.
    See below for detailed description of possible deadlock:
    <http://marc.info/?l=linux-kernel&m=120311479108569&w=2>

  - To solve that, request-based dm offloads the completion of
    cloned struct request to softirq context (i.e. using
    blk_complete_request() from rq->end_io).

  - Though it is possible to use the same solution from bio->bi_end_io,
    it will delay the notification of bio completion to the original
    submitter.  Also, it will cause inefficient partial completion,
    because the lower driver can't perform the cloned request anymore
    and request-based dm needs to requeue and redispatch it to
    the lower driver again later.  That's not good.

  - So request-based dm needs blk_update_request() to perform the bio
    completion in the lower driver's completion context, which is more
    efficient.

Signed-off-by: Kiyoshi Ueda <k-ueda@ct.jp.nec.com>
Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-10-09 08:56:18 +02:00
..
2008-07-25 10:53:30 -07:00
2008-08-10 23:32:07 +02:00
2008-07-27 01:26:17 +02:00
2008-08-05 14:33:46 -07:00
2008-07-01 11:28:06 +10:00
2008-08-12 10:13:38 +10:00
2008-06-19 10:42:17 +10:00
2008-07-24 10:47:24 -07:00
2008-07-24 10:47:33 -07:00
2008-07-24 10:47:33 -07:00
2008-10-09 08:56:17 +02:00
2008-04-29 08:11:16 -07:00
2008-06-06 11:29:10 -07:00
2008-10-09 08:56:18 +02:00
2008-05-29 01:38:46 -07:00
2008-08-04 21:56:09 -07:00
2008-07-04 10:40:05 -07:00
2008-07-25 10:53:33 -07:00
2008-05-01 08:03:59 -07:00
2008-07-20 17:12:38 -07:00
2008-07-22 17:30:57 -07:00
2008-07-21 12:00:37 +01:00
2008-07-21 12:00:37 +01:00
2008-04-28 08:58:30 -07:00
2008-07-24 10:47:29 -07:00
2008-08-20 13:19:51 -07:00
2008-05-16 17:22:26 -04:00
2008-08-12 16:07:31 -07:00
2008-07-16 23:27:03 +02:00
2008-07-26 20:53:20 -04:00
2008-07-25 10:53:48 -07:00
2008-07-20 17:12:36 -07:00
2008-07-25 10:53:30 -07:00
2008-07-20 17:12:36 -07:00
2008-07-23 15:25:21 +02:00
2008-05-20 16:44:43 +02:00
2008-08-08 15:13:27 +01:00
2008-08-28 08:33:23 +02:00
2008-10-05 18:23:27 +02:00
2008-07-25 10:53:42 -07:00
2008-06-11 21:00:38 -07:00
2008-07-18 18:05:19 -07:00
2008-06-11 21:00:38 -07:00
2008-07-14 22:49:06 -07:00
2008-07-03 17:51:57 +09:00
2008-08-02 18:36:10 +01:00
2008-07-25 10:53:39 -07:00
2008-05-05 16:47:14 +10:00
2008-06-11 21:00:38 -07:00
2008-04-29 08:06:15 -07:00
2008-07-20 17:12:37 -07:00
2008-06-04 17:50:17 +01:00
2008-05-01 08:03:58 -07:00
2008-05-20 12:17:39 -04:00
2008-07-30 09:41:45 -07:00
2008-07-24 10:47:17 -07:00
2008-07-04 10:40:05 -07:00
2008-08-25 17:28:25 +03:00
2008-07-23 09:49:56 +01:00
2008-09-01 09:47:16 +02:00
2008-08-11 15:25:07 +02:00
2008-10-09 08:56:06 +02:00
2008-05-23 22:26:03 +02:00
2008-04-29 08:06:01 -07:00
2008-07-27 01:56:38 +02:00
2008-07-27 01:54:58 +02:00
2008-08-02 16:28:50 +02:00
2008-08-16 16:45:56 -07:00
2008-08-16 16:45:56 -07:00
2008-07-28 16:30:21 -07:00
2008-07-24 10:47:24 -07:00
2008-07-25 10:53:34 -07:00
2008-06-06 11:29:12 -07:00
2008-04-28 08:58:29 -07:00
2008-08-26 10:37:20 -07:00
2008-08-04 23:04:08 -07:00
2008-08-04 21:31:34 -07:00
2008-08-04 21:31:34 -07:00
2008-07-26 12:00:03 -07:00
2008-06-10 14:37:03 -07:00
2008-04-29 08:06:02 -07:00
2008-04-29 08:06:02 -07:00
2008-05-06 12:01:41 -04:00
2008-08-05 14:33:50 -07:00
2008-09-16 19:35:05 -07:00
2008-06-11 21:00:38 -07:00
2008-06-11 21:00:38 -07:00
2008-07-26 20:53:12 -04:00
2008-08-07 17:18:47 -07:00
2008-05-19 16:25:39 +01:00
2008-10-02 15:53:13 -07:00
2008-07-25 10:53:29 -07:00
2008-08-11 09:30:24 +02:00
2008-07-25 10:53:29 -07:00
2008-04-29 08:05:59 -07:00
2008-05-25 07:09:47 +02:00
2008-08-20 15:40:32 -07:00
2008-07-25 21:45:49 -07:00
2008-09-05 18:14:35 +02:00
2008-08-17 22:47:30 +10:00
2008-07-25 10:53:42 -07:00
2008-07-24 08:31:21 -04:00
2008-04-28 08:58:32 -07:00
2008-07-24 10:47:24 -07:00
2008-08-15 19:52:30 -07:00
2008-08-05 09:28:47 +03:00
2008-07-25 10:53:30 -07:00
2008-06-20 14:05:53 -06:00
2008-07-27 01:47:00 +02:00
2008-08-11 09:30:24 +02:00
2008-07-20 17:12:37 -07:00
2008-07-26 12:00:12 -07:00
2008-07-26 20:53:12 -04:00
2008-06-12 10:48:00 +02:00
2008-05-01 08:03:59 -07:00
2008-09-05 14:39:38 -07:00
2008-07-20 17:12:34 -07:00
2008-08-15 10:34:07 -07:00
2008-07-21 15:15:55 -07:00
2008-05-09 07:45:18 -07:00
2008-08-16 16:45:56 -07:00
2008-07-24 10:47:14 -07:00
2008-07-25 10:53:40 -07:00