|
@@ -23,6 +23,7 @@
|
|
|
#include <linux/delay.h>
|
|
|
#include <scsi/scsi_dh.h>
|
|
|
#include <linux/atomic.h>
|
|
|
+#include <linux/blk-mq.h>
|
|
|
|
|
|
#define DM_MSG_PREFIX "multipath"
|
|
|
#define DM_PG_INIT_DELAY_MSECS 2000
|
|
@@ -452,8 +453,8 @@ static int __multipath_map(struct dm_target *ti, struct request *clone,
|
|
|
* .request_fn stacked on blk-mq path(s) and
|
|
|
* blk-mq stacked on blk-mq path(s).
|
|
|
*/
|
|
|
- *__clone = blk_get_request(bdev_get_queue(bdev),
|
|
|
- rq_data_dir(rq), GFP_ATOMIC);
|
|
|
+ *__clone = blk_mq_alloc_request(bdev_get_queue(bdev),
|
|
|
+ rq_data_dir(rq), BLK_MQ_REQ_NOWAIT);
|
|
|
if (IS_ERR(*__clone)) {
|
|
|
/* ENOMEM, requeue */
|
|
|
clear_request_fn_mpio(m, map_context);
|
|
@@ -491,7 +492,7 @@ static int multipath_clone_and_map(struct dm_target *ti, struct request *rq,
|
|
|
|
|
|
static void multipath_release_clone(struct request *clone)
|
|
|
{
|
|
|
- blk_put_request(clone);
|
|
|
+ blk_mq_free_request(clone);
|
|
|
}
|
|
|
|
|
|
/*
|