Mike Snitzer
e5863d9ad7
dm: allocate requests in target when stacking on blk-mq devices
...
For blk-mq request-based DM the responsibility of allocating a cloned
request is transfered from DM core to the target type. Doing so
enables the cloned request to be allocated from the appropriate
blk-mq request_queue's pool (only the DM target, e.g. multipath, can
know which block device to send a given cloned request to).
Care was taken to preserve compatibility with old-style block request
completion that requires request-based DM _not_ acquire the clone
request's queue lock in the completion path. As such, there are now 2
different request-based DM target_type interfaces:
1) the original .map_rq() interface will continue to be used for
non-blk-mq devices -- the preallocated clone request is passed in
from DM core.
2) a new .clone_and_map_rq() and .release_clone_rq() will be used for
blk-mq devices -- blk_get_request() and blk_put_request() are used
respectively from these hooks.
dm_table_set_type() was updated to detect if the request-based target is
being stacked on blk-mq devices, if so DM_TYPE_MQ_REQUEST_BASED is set.
DM core disallows switching the DM table's type after it is set. This
means that there is no mixing of non-blk-mq and blk-mq devices within
the same request-based DM table.
[This patch was started by Keith and later heavily modified by Mike]
Tested-by: Bart Van Assche <bvanassche@acm.org >
Signed-off-by: Keith Busch <keith.busch@intel.com >
Signed-off-by: Mike Snitzer <snitzer@redhat.com >
2015-02-09 13:06:47 -05:00
..
2014-12-14 16:43:47 -08:00
2014-11-11 16:31:11 -05:00
2014-12-07 21:22:09 +01:00
2014-12-17 20:09:53 +03:00
2014-12-15 17:05:08 -08:00
2014-12-14 14:05:05 -08:00
2014-12-14 14:57:16 -08:00
2014-12-02 16:20:59 -08:00
2014-12-15 17:30:09 -08:00
2014-11-24 17:24:08 -05:00
2014-12-11 13:20:50 -08:00
2014-12-11 14:47:36 -05:00
2014-12-15 18:19:03 -08:00
2014-12-08 09:11:04 +01:00
2014-11-25 20:11:12 -08:00
2014-11-22 13:58:39 +05:30
2014-12-15 15:52:01 -08:00
2014-12-05 11:14:43 +00:00
2014-11-24 18:53:42 +00:00
2014-12-09 11:22:22 -05:00
2014-12-14 14:57:16 -08:00
2014-12-19 14:02:02 -08:00
2014-11-10 12:40:48 +01:00
2014-12-23 18:13:16 -08:00
2014-12-13 12:42:51 -08:00
2015-02-05 09:30:43 -07:00
2014-12-14 16:10:09 -08:00
2014-11-16 09:55:39 +01:00
2015-01-23 14:18:00 -07:00
2015-02-05 09:30:40 -07:00
2014-11-13 16:17:06 -08:00
2014-12-05 21:47:32 -08:00
2014-12-11 18:57:19 -08:00
2014-12-03 16:21:37 -08:00
2014-11-20 10:43:16 -04:00
2014-12-18 19:08:10 -08:00
2014-12-10 17:41:06 -08:00
2014-12-13 12:42:51 -08:00
2014-12-18 09:54:36 +01:00
2014-11-26 19:28:11 -08:00
2014-11-29 23:38:38 +01:00
2014-11-12 21:17:27 +01:00
2014-12-05 17:19:27 -06:00
2014-11-24 22:43:57 +08:00
2014-11-19 13:01:20 -05:00
2014-12-14 16:10:09 -08:00
2014-12-19 22:55:06 +01:00
2015-02-09 13:06:47 -05:00
2014-12-14 16:10:09 -08:00
2014-12-01 16:50:45 +00:00
2014-12-05 20:55:27 +05:30
2014-11-18 11:18:35 +01:00
2014-11-10 09:27:30 -07:00
2014-11-25 15:42:53 +01:00
2014-11-24 07:45:02 +01:00
2014-12-08 20:47:41 -05:00
2014-12-08 21:07:10 -05:00
2014-12-13 12:42:52 -08:00
2014-12-10 17:41:10 -08:00
2014-12-05 21:47:32 -08:00
2014-12-16 15:53:03 -08:00
2014-12-13 12:42:53 -08:00
2014-11-19 15:25:39 -05:00
2014-12-15 10:17:38 -05:00
2014-12-13 12:42:48 -08:00
2014-12-10 15:17:46 -05:00
2014-11-13 10:44:42 +01:00
2014-12-12 11:15:33 +01:00
2014-12-10 17:41:04 -08:00
2014-12-11 17:48:14 -08:00
2014-12-08 20:24:11 -05:00
2014-12-14 12:54:40 -08:00
2014-11-19 18:45:16 +01:00
2014-11-17 09:49:17 +01:00
2014-12-02 20:01:23 -08:00
2014-11-21 14:20:17 -05:00
2014-11-14 17:08:58 -05:00
2014-12-09 21:21:34 -08:00
2014-11-17 23:12:01 -05:00
2014-12-12 15:15:41 -05:00
2014-12-16 14:53:01 -08:00
2014-12-16 15:53:03 -08:00
2014-12-11 15:04:11 -06:00
2014-12-11 15:04:06 -06:00
2014-12-10 09:01:01 -08:00
2014-11-23 13:01:46 +01:00
2014-11-23 13:01:46 +01:00
2014-12-10 17:41:11 -08:00
2014-12-13 13:33:07 +01:00
2014-12-14 15:23:32 -08:00
2014-12-13 12:42:47 -08:00
2014-12-15 13:06:40 +01:00
2014-12-18 09:39:51 +01:00
2014-12-15 18:28:25 -08:00
2014-12-11 18:52:37 -08:00
2014-11-20 14:45:15 +01:00
2014-11-27 12:50:59 +05:30
2014-11-30 16:40:11 +00:00
2014-12-13 12:42:49 -08:00
2014-11-21 14:08:56 -05:00
2014-12-17 08:26:51 -05:00
2014-12-13 12:42:48 -08:00
2014-12-17 08:26:51 -05:00
2014-12-15 15:52:01 -08:00
2014-12-13 12:42:48 -08:00
2014-11-11 17:07:46 +10:30
2014-11-23 17:14:43 +01:00
2014-12-10 21:32:13 -05:00
2014-12-09 16:10:06 -05:00
2014-11-25 16:38:32 -05:00
2014-11-25 16:38:32 -05:00
2014-11-24 17:00:42 -05:00
2014-11-25 16:38:32 -05:00
2014-12-10 21:30:20 -05:00
2014-12-05 14:35:52 +00:00
2014-11-12 07:49:38 -07:00
2014-11-24 22:25:06 +00:00
2014-12-11 13:06:58 -08:00
2014-11-20 12:11:25 -08:00
2014-11-27 12:51:04 +05:30
2014-12-13 12:42:49 -08:00
2014-12-10 17:41:05 -08:00
2014-12-13 12:42:48 -08:00
2014-12-13 12:42:48 -08:00
2014-11-13 16:17:05 -08:00
2014-11-13 10:35:25 -07:00
2014-12-14 14:57:16 -08:00
2014-12-19 14:02:02 -08:00
2014-12-13 12:42:53 -08:00
2014-12-11 18:36:26 -08:00
2014-11-21 11:19:15 -05:00
2014-11-16 11:42:04 +01:00
2014-12-16 15:02:23 -05:00
2014-11-21 14:08:55 -05:00
2014-12-04 14:31:00 -05:00
2014-11-20 14:45:15 +01:00
2014-12-08 20:00:44 +01:00
2014-11-29 23:53:20 +01:00
2014-12-04 00:46:58 +01:00
2014-12-12 15:26:48 -08:00
2014-12-13 00:45:24 +01:00
2014-12-10 20:35:41 -08:00
2014-12-10 21:30:20 -05:00
2014-12-11 13:38:31 -08:00
2014-12-10 17:41:10 -08:00
2014-11-26 18:07:45 +00:00
2014-11-10 10:06:08 +01:00
2014-11-10 10:06:07 +01:00
2014-12-13 12:42:52 -08:00
2014-12-12 10:08:06 -08:00
2014-11-20 08:57:58 +01:00
2014-11-19 10:28:14 +00:00
2014-11-13 15:18:40 -05:00
2014-11-10 16:45:43 -05:00
2014-11-21 12:00:00 -08:00
2014-12-09 13:36:57 -05:00
2014-12-13 12:42:51 -08:00
2014-11-19 22:01:19 -05:00
2014-11-25 17:06:40 -08:00
2014-12-13 12:42:48 -08:00
2014-12-10 13:31:57 -05:00
2014-12-13 12:42:49 -08:00
2014-12-10 22:41:55 -05:00
2014-11-26 19:33:57 -08:00
2014-12-13 12:42:48 -08:00
2014-12-10 17:41:09 -08:00
2014-12-13 12:42:47 -08:00
2014-12-13 12:42:51 -08:00
2014-11-17 10:28:04 -08:00
2014-12-10 13:17:23 -05:00
2014-12-13 12:25:19 +08:00
2014-11-21 11:59:58 -08:00
2014-12-10 10:13:28 -08:00
2014-11-19 22:01:15 -05:00
2014-12-17 06:43:56 -05:00
2014-12-04 00:51:54 +01:00
2014-12-17 12:31:40 -08:00
2014-12-04 14:31:00 -05:00
2014-11-28 16:08:16 +01:00
2014-12-09 12:05:24 +02:00
2014-12-14 18:21:31 +02:00
2014-12-17 10:37:56 -08:00
2014-12-13 12:42:48 -08:00
2014-12-09 16:28:23 -05:00
2014-12-15 23:49:28 +02:00