* [PATCH v2 1/6] scsi: core: Remove reserved request time-out handling
2022-06-21 11:15 [PATCH v2 0/6] blk-mq: Add a flag for reserved requests series John Garry
@ 2022-06-21 11:15 ` John Garry
2022-06-21 11:15 ` [PATCH v2 2/6] blk-mq: Add a flag for reserved requests John Garry
` (6 subsequent siblings)
7 siblings, 0 replies; 13+ messages in thread
From: John Garry @ 2022-06-21 11:15 UTC (permalink / raw)
To: axboe, damien.lemoal, bvanassche, hch, jejb, martin.petersen,
hare, satishkh, sebaddel, kartilak
Cc: linux-doc, linux-rdma, linux-mmc, linux-nvme, linux-s390,
linux-scsi, mpi3mr-linuxdrv.pdl, linux-block, linux-kernel, nbd,
John Garry
The SCSI core code does not currently support reserved commands. As such,
requests which time-out would never be reserved, and scsi_timeout()
'reserved' arg should never be set.
Remove handling for reserved requests, drop the wrapper scsi_timeout()
as it now just calls scsi_times_out() always, and finally rename
scsi_times_out() -> scsi_timeout() to match the blk_mq_ops method name.
Signed-off-by: John Garry <john.garry@huawei.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
---
Documentation/scsi/scsi_eh.rst | 3 +--
Documentation/scsi/scsi_mid_low_api.rst | 2 +-
drivers/scsi/scsi_error.c | 7 ++++---
drivers/scsi/scsi_lib.c | 8 --------
drivers/scsi/scsi_priv.h | 3 ++-
5 files changed, 8 insertions(+), 15 deletions(-)
diff --git a/Documentation/scsi/scsi_eh.rst b/Documentation/scsi/scsi_eh.rst
index 885395dc1f15..bad624fab823 100644
--- a/Documentation/scsi/scsi_eh.rst
+++ b/Documentation/scsi/scsi_eh.rst
@@ -87,8 +87,7 @@ with the command.
1.2.2 Completing a scmd w/ timeout
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The timeout handler is scsi_times_out(). When a timeout occurs, this
-function
+The timeout handler is scsi_timeout(). When a timeout occurs, this function
1. invokes optional hostt->eh_timed_out() callback. Return value can
be one of
diff --git a/Documentation/scsi/scsi_mid_low_api.rst b/Documentation/scsi/scsi_mid_low_api.rst
index 63ddea2b9640..a8c5bd15a440 100644
--- a/Documentation/scsi/scsi_mid_low_api.rst
+++ b/Documentation/scsi/scsi_mid_low_api.rst
@@ -731,7 +731,7 @@ Details::
* Notes: If 'no_async_abort' is defined this callback
* will be invoked from scsi_eh thread. No other commands
* will then be queued on current host during eh.
- * Otherwise it will be called whenever scsi_times_out()
+ * Otherwise it will be called whenever scsi_timeout()
* is called due to a command timeout.
*
* Optionally defined in: LLD
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 49ef864df581..a8b71b73a5a5 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -139,7 +139,7 @@ static bool scsi_eh_should_retry_cmd(struct scsi_cmnd *cmd)
*
* Note: this function must be called only for a command that has timed out.
* Because the block layer marks a request as complete before it calls
- * scsi_times_out(), a .scsi_done() call from the LLD for a command that has
+ * scsi_timeout(), a .scsi_done() call from the LLD for a command that has
* timed out do not have any effect. Hence it is safe to call
* scsi_finish_command() from this function.
*/
@@ -316,8 +316,9 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd)
}
/**
- * scsi_times_out - Timeout function for normal scsi commands.
+ * scsi_timeout - Timeout function for normal scsi commands.
* @req: request that is timing out.
+ * @reserved: whether the request is a reserved request.
*
* Notes:
* We do not need to lock this. There is the potential for a race
@@ -325,7 +326,7 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd)
* normal completion function determines that the timer has already
* fired, then it mustn't do anything.
*/
-enum blk_eh_timer_return scsi_times_out(struct request *req)
+enum blk_eh_timer_return scsi_timeout(struct request *req, bool reserved)
{
struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req);
enum blk_eh_timer_return rtn = BLK_EH_DONE;
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 6ffc9e4258a8..8eb51ef7c077 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1790,14 +1790,6 @@ static blk_status_t scsi_queue_rq(struct blk_mq_hw_ctx *hctx,
return ret;
}
-static enum blk_eh_timer_return scsi_timeout(struct request *req,
- bool reserved)
-{
- if (reserved)
- return BLK_EH_RESET_TIMER;
- return scsi_times_out(req);
-}
-
static int scsi_mq_init_request(struct blk_mq_tag_set *set, struct request *rq,
unsigned int hctx_idx, unsigned int numa_node)
{
diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
index 5c4786310a31..695d0c83ffe0 100644
--- a/drivers/scsi/scsi_priv.h
+++ b/drivers/scsi/scsi_priv.h
@@ -72,7 +72,8 @@ extern void scsi_exit_devinfo(void);
/* scsi_error.c */
extern void scmd_eh_abort_handler(struct work_struct *work);
-extern enum blk_eh_timer_return scsi_times_out(struct request *req);
+extern enum blk_eh_timer_return scsi_timeout(struct request *req,
+ bool reserved);
extern int scsi_error_handler(void *host);
extern enum scsi_disposition scsi_decide_disposition(struct scsi_cmnd *cmd);
extern void scsi_eh_wakeup(struct Scsi_Host *shost);
--
2.25.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 2/6] blk-mq: Add a flag for reserved requests
2022-06-21 11:15 [PATCH v2 0/6] blk-mq: Add a flag for reserved requests series John Garry
2022-06-21 11:15 ` [PATCH v2 1/6] scsi: core: Remove reserved request time-out handling John Garry
@ 2022-06-21 11:15 ` John Garry
2022-06-21 11:15 ` [PATCH v2 3/6] blk-mq: Drop blk_mq_ops.timeout 'reserved' arg John Garry
` (5 subsequent siblings)
7 siblings, 0 replies; 13+ messages in thread
From: John Garry @ 2022-06-21 11:15 UTC (permalink / raw)
To: axboe, damien.lemoal, bvanassche, hch, jejb, martin.petersen,
hare, satishkh, sebaddel, kartilak
Cc: linux-doc, linux-rdma, linux-mmc, linux-nvme, linux-s390,
linux-scsi, mpi3mr-linuxdrv.pdl, linux-block, linux-kernel, nbd,
John Garry
Add a flag for reserved requests so that drivers may know this for any
special handling.
Signed-off-by: John Garry <john.garry@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
---
block/blk-mq.c | 6 ++++++
include/linux/blk-mq.h | 6 ++++++
2 files changed, 12 insertions(+)
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 5aa95964191b..d38c97fe89f5 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -474,6 +474,9 @@ static struct request *__blk_mq_alloc_requests(struct blk_mq_alloc_data *data)
if (!(data->rq_flags & RQF_ELV))
blk_mq_tag_busy(data->hctx);
+ if (data->flags & BLK_MQ_REQ_RESERVED)
+ data->rq_flags |= RQF_RESV;
+
/*
* Try batched alloc if we want more than 1 tag.
*/
@@ -588,6 +591,9 @@ struct request *blk_mq_alloc_request_hctx(struct request_queue *q,
else
data.rq_flags |= RQF_ELV;
+ if (flags & BLK_MQ_REQ_RESERVED)
+ data.rq_flags |= RQF_RESV;
+
ret = -EWOULDBLOCK;
tag = blk_mq_get_tag(&data);
if (tag == BLK_MQ_NO_TAG)
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index e2d9daf7e8dd..6d81fe10e850 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -57,6 +57,7 @@ typedef __u32 __bitwise req_flags_t;
#define RQF_TIMED_OUT ((__force req_flags_t)(1 << 21))
/* queue has elevator attached */
#define RQF_ELV ((__force req_flags_t)(1 << 22))
+#define RQF_RESV ((__force req_flags_t)(1 << 23))
/* flags that prevent us from merging requests: */
#define RQF_NOMERGE_FLAGS \
@@ -823,6 +824,11 @@ static inline bool blk_mq_need_time_stamp(struct request *rq)
return (rq->rq_flags & (RQF_IO_STAT | RQF_STATS | RQF_ELV));
}
+static inline bool blk_mq_is_reserved_rq(struct request *rq)
+{
+ return rq->rq_flags & RQF_RESV;
+}
+
/*
* Batched completions only work when there is no I/O error and no special
* ->end_io handler.
--
2.25.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 3/6] blk-mq: Drop blk_mq_ops.timeout 'reserved' arg
2022-06-21 11:15 [PATCH v2 0/6] blk-mq: Add a flag for reserved requests series John Garry
2022-06-21 11:15 ` [PATCH v2 1/6] scsi: core: Remove reserved request time-out handling John Garry
2022-06-21 11:15 ` [PATCH v2 2/6] blk-mq: Add a flag for reserved requests John Garry
@ 2022-06-21 11:15 ` John Garry
2022-06-23 12:35 ` Ulf Hansson
2022-06-21 11:15 ` [PATCH v2 4/6] scsi: fnic: Drop reserved request handling John Garry
` (4 subsequent siblings)
7 siblings, 1 reply; 13+ messages in thread
From: John Garry @ 2022-06-21 11:15 UTC (permalink / raw)
To: axboe, damien.lemoal, bvanassche, hch, jejb, martin.petersen,
hare, satishkh, sebaddel, kartilak
Cc: linux-doc, linux-rdma, linux-mmc, linux-nvme, linux-s390,
linux-scsi, mpi3mr-linuxdrv.pdl, linux-block, linux-kernel, nbd,
John Garry
With new API blk_mq_is_reserved_rq() we can tell if a request is from
the reserved pool, so stop passing 'reserved' arg. There is actually
only a single user of that arg for all the callback implementations, which
can use blk_mq_is_reserved_rq() instead.
This will also allow us to stop passing the same 'reserved' around the
blk-mq iter functions next.
Signed-off-by: John Garry <john.garry@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
---
block/blk-mq.c | 6 +++---
block/bsg-lib.c | 2 +-
drivers/block/mtip32xx/mtip32xx.c | 5 ++---
drivers/block/nbd.c | 3 +--
drivers/block/null_blk/main.c | 2 +-
drivers/mmc/core/queue.c | 3 +--
drivers/nvme/host/apple.c | 3 +--
drivers/nvme/host/fc.c | 3 +--
drivers/nvme/host/pci.c | 2 +-
drivers/nvme/host/rdma.c | 3 +--
drivers/nvme/host/tcp.c | 3 +--
drivers/s390/block/dasd.c | 2 +-
drivers/s390/block/dasd_int.h | 2 +-
drivers/scsi/scsi_error.c | 3 +--
drivers/scsi/scsi_priv.h | 3 +--
include/linux/blk-mq.h | 2 +-
16 files changed, 19 insertions(+), 28 deletions(-)
diff --git a/block/blk-mq.c b/block/blk-mq.c
index d38c97fe89f5..81bd39e36e49 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -1426,13 +1426,13 @@ bool blk_mq_queue_inflight(struct request_queue *q)
}
EXPORT_SYMBOL_GPL(blk_mq_queue_inflight);
-static void blk_mq_rq_timed_out(struct request *req, bool reserved)
+static void blk_mq_rq_timed_out(struct request *req)
{
req->rq_flags |= RQF_TIMED_OUT;
if (req->q->mq_ops->timeout) {
enum blk_eh_timer_return ret;
- ret = req->q->mq_ops->timeout(req, reserved);
+ ret = req->q->mq_ops->timeout(req);
if (ret == BLK_EH_DONE)
return;
WARN_ON_ONCE(ret != BLK_EH_RESET_TIMER);
@@ -1481,7 +1481,7 @@ static bool blk_mq_check_expired(struct request *rq, void *priv, bool reserved)
* from blk_mq_check_expired().
*/
if (blk_mq_req_expired(rq, next))
- blk_mq_rq_timed_out(rq, reserved);
+ blk_mq_rq_timed_out(rq);
return true;
}
diff --git a/block/bsg-lib.c b/block/bsg-lib.c
index acfe1357bf6c..9570c77b9fe3 100644
--- a/block/bsg-lib.c
+++ b/block/bsg-lib.c
@@ -331,7 +331,7 @@ void bsg_remove_queue(struct request_queue *q)
}
EXPORT_SYMBOL_GPL(bsg_remove_queue);
-static enum blk_eh_timer_return bsg_timeout(struct request *rq, bool reserved)
+static enum blk_eh_timer_return bsg_timeout(struct request *rq)
{
struct bsg_set *bset =
container_of(rq->q->tag_set, struct bsg_set, tag_set);
diff --git a/drivers/block/mtip32xx/mtip32xx.c b/drivers/block/mtip32xx/mtip32xx.c
index 27386a572ba4..d5767215840c 100644
--- a/drivers/block/mtip32xx/mtip32xx.c
+++ b/drivers/block/mtip32xx/mtip32xx.c
@@ -3487,12 +3487,11 @@ static int mtip_init_cmd(struct blk_mq_tag_set *set, struct request *rq,
return 0;
}
-static enum blk_eh_timer_return mtip_cmd_timeout(struct request *req,
- bool reserved)
+static enum blk_eh_timer_return mtip_cmd_timeout(struct request *req)
{
struct driver_data *dd = req->q->queuedata;
- if (reserved) {
+ if (blk_mq_is_reserved_rq(req)) {
struct mtip_cmd *cmd = blk_mq_rq_to_pdu(req);
cmd->status = BLK_STS_TIMEOUT;
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index 07f3c139a3d7..166303716560 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -393,8 +393,7 @@ static u32 req_to_nbd_cmd_type(struct request *req)
}
}
-static enum blk_eh_timer_return nbd_xmit_timeout(struct request *req,
- bool reserved)
+static enum blk_eh_timer_return nbd_xmit_timeout(struct request *req)
{
struct nbd_cmd *cmd = blk_mq_rq_to_pdu(req);
struct nbd_device *nbd = cmd->nbd;
diff --git a/drivers/block/null_blk/main.c b/drivers/block/null_blk/main.c
index 6b67088f4ea7..2d815d1eba25 100644
--- a/drivers/block/null_blk/main.c
+++ b/drivers/block/null_blk/main.c
@@ -1578,7 +1578,7 @@ static int null_poll(struct blk_mq_hw_ctx *hctx, struct io_comp_batch *iob)
return nr;
}
-static enum blk_eh_timer_return null_timeout_rq(struct request *rq, bool res)
+static enum blk_eh_timer_return null_timeout_rq(struct request *rq)
{
struct blk_mq_hw_ctx *hctx = rq->mq_hctx;
struct nullb_cmd *cmd = blk_mq_rq_to_pdu(rq);
diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c
index fa5324ceeebe..17236340dbd2 100644
--- a/drivers/mmc/core/queue.c
+++ b/drivers/mmc/core/queue.c
@@ -116,8 +116,7 @@ static enum blk_eh_timer_return mmc_cqe_timed_out(struct request *req)
}
}
-static enum blk_eh_timer_return mmc_mq_timed_out(struct request *req,
- bool reserved)
+static enum blk_eh_timer_return mmc_mq_timed_out(struct request *req)
{
struct request_queue *q = req->q;
struct mmc_queue *mq = q->queuedata;
diff --git a/drivers/nvme/host/apple.c b/drivers/nvme/host/apple.c
index d702d7d60235..495118ce958a 100644
--- a/drivers/nvme/host/apple.c
+++ b/drivers/nvme/host/apple.c
@@ -862,8 +862,7 @@ static void apple_nvme_disable(struct apple_nvme *anv, bool shutdown)
}
}
-static enum blk_eh_timer_return apple_nvme_timeout(struct request *req,
- bool reserved)
+static enum blk_eh_timer_return apple_nvme_timeout(struct request *req)
{
struct apple_nvme_iod *iod = blk_mq_rq_to_pdu(req);
struct apple_nvme_queue *q = iod->q;
diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
index 3c778bb0c294..a166c0b1cc33 100644
--- a/drivers/nvme/host/fc.c
+++ b/drivers/nvme/host/fc.c
@@ -2565,8 +2565,7 @@ nvme_fc_error_recovery(struct nvme_fc_ctrl *ctrl, char *errmsg)
nvme_reset_ctrl(&ctrl->ctrl);
}
-static enum blk_eh_timer_return
-nvme_fc_timeout(struct request *rq, bool reserved)
+static enum blk_eh_timer_return nvme_fc_timeout(struct request *rq)
{
struct nvme_fc_fcp_op *op = blk_mq_rq_to_pdu(rq);
struct nvme_fc_ctrl *ctrl = op->ctrl;
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index c7012e85d035..83b1229a4e36 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -1344,7 +1344,7 @@ static void nvme_warn_reset(struct nvme_dev *dev, u32 csts)
"Try \"nvme_core.default_ps_max_latency_us=0 pcie_aspm=off\" and report a bug\n");
}
-static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved)
+static enum blk_eh_timer_return nvme_timeout(struct request *req)
{
struct nvme_iod *iod = blk_mq_rq_to_pdu(req);
struct nvme_queue *nvmeq = iod->nvmeq;
diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
index f2a5e1ea508a..d2fb8651e49d 100644
--- a/drivers/nvme/host/rdma.c
+++ b/drivers/nvme/host/rdma.c
@@ -2013,8 +2013,7 @@ static void nvme_rdma_complete_timed_out(struct request *rq)
nvmf_complete_timed_out_request(rq);
}
-static enum blk_eh_timer_return
-nvme_rdma_timeout(struct request *rq, bool reserved)
+static enum blk_eh_timer_return nvme_rdma_timeout(struct request *rq)
{
struct nvme_rdma_request *req = blk_mq_rq_to_pdu(rq);
struct nvme_rdma_queue *queue = req->queue;
diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c
index bb67538d241b..f21f7b0140f9 100644
--- a/drivers/nvme/host/tcp.c
+++ b/drivers/nvme/host/tcp.c
@@ -2321,8 +2321,7 @@ static void nvme_tcp_complete_timed_out(struct request *rq)
nvmf_complete_timed_out_request(rq);
}
-static enum blk_eh_timer_return
-nvme_tcp_timeout(struct request *rq, bool reserved)
+static enum blk_eh_timer_return nvme_tcp_timeout(struct request *rq)
{
struct nvme_tcp_request *req = blk_mq_rq_to_pdu(rq);
struct nvme_ctrl *ctrl = &req->queue->ctrl->ctrl;
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index ba6d78789660..35d6f62ed515 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -3145,7 +3145,7 @@ static blk_status_t do_dasd_request(struct blk_mq_hw_ctx *hctx,
* BLK_EH_DONE if the request is handled or terminated
* by the driver.
*/
-enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved)
+enum blk_eh_timer_return dasd_times_out(struct request *req)
{
struct dasd_block *block = req->q->queuedata;
struct dasd_device *device;
diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h
index 83b918b84b4a..333a399f754e 100644
--- a/drivers/s390/block/dasd_int.h
+++ b/drivers/s390/block/dasd_int.h
@@ -795,7 +795,7 @@ void dasd_free_device(struct dasd_device *);
struct dasd_block *dasd_alloc_block(void);
void dasd_free_block(struct dasd_block *);
-enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved);
+enum blk_eh_timer_return dasd_times_out(struct request *req);
void dasd_enable_device(struct dasd_device *);
void dasd_set_target_state(struct dasd_device *, int);
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index a8b71b73a5a5..266ce414589c 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -318,7 +318,6 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd)
/**
* scsi_timeout - Timeout function for normal scsi commands.
* @req: request that is timing out.
- * @reserved: whether the request is a reserved request.
*
* Notes:
* We do not need to lock this. There is the potential for a race
@@ -326,7 +325,7 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd)
* normal completion function determines that the timer has already
* fired, then it mustn't do anything.
*/
-enum blk_eh_timer_return scsi_timeout(struct request *req, bool reserved)
+enum blk_eh_timer_return scsi_timeout(struct request *req)
{
struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req);
enum blk_eh_timer_return rtn = BLK_EH_DONE;
diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
index 695d0c83ffe0..6eeaa0a7f86d 100644
--- a/drivers/scsi/scsi_priv.h
+++ b/drivers/scsi/scsi_priv.h
@@ -72,8 +72,7 @@ extern void scsi_exit_devinfo(void);
/* scsi_error.c */
extern void scmd_eh_abort_handler(struct work_struct *work);
-extern enum blk_eh_timer_return scsi_timeout(struct request *req,
- bool reserved);
+extern enum blk_eh_timer_return scsi_timeout(struct request *req);
extern int scsi_error_handler(void *host);
extern enum scsi_disposition scsi_decide_disposition(struct scsi_cmnd *cmd);
extern void scsi_eh_wakeup(struct Scsi_Host *shost);
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index 6d81fe10e850..fbb08bdd4618 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -575,7 +575,7 @@ struct blk_mq_ops {
/**
* @timeout: Called on request timeout.
*/
- enum blk_eh_timer_return (*timeout)(struct request *, bool);
+ enum blk_eh_timer_return (*timeout)(struct request *);
/**
* @poll: Called to poll for completion of a specific tag.
--
2.25.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/6] blk-mq: Drop blk_mq_ops.timeout 'reserved' arg
2022-06-21 11:15 ` [PATCH v2 3/6] blk-mq: Drop blk_mq_ops.timeout 'reserved' arg John Garry
@ 2022-06-23 12:35 ` Ulf Hansson
0 siblings, 0 replies; 13+ messages in thread
From: Ulf Hansson @ 2022-06-23 12:35 UTC (permalink / raw)
To: John Garry
Cc: axboe, damien.lemoal, bvanassche, hch, jejb, martin.petersen,
hare, satishkh, sebaddel, kartilak, linux-doc, linux-rdma,
linux-mmc, linux-nvme, linux-s390, linux-scsi,
mpi3mr-linuxdrv.pdl, linux-block, linux-kernel, nbd
On Tue, 21 Jun 2022 at 13:22, John Garry <john.garry@huawei.com> wrote:
>
> With new API blk_mq_is_reserved_rq() we can tell if a request is from
> the reserved pool, so stop passing 'reserved' arg. There is actually
> only a single user of that arg for all the callback implementations, which
> can use blk_mq_is_reserved_rq() instead.
>
> This will also allow us to stop passing the same 'reserved' around the
> blk-mq iter functions next.
>
> Signed-off-by: John Garry <john.garry@huawei.com>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> Reviewed-by: Bart Van Assche <bvanassche@acm.org>
> Reviewed-by: Hannes Reinecke <hare@suse.de>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org> # For MMC
Kind regards
Uffe
> ---
> block/blk-mq.c | 6 +++---
> block/bsg-lib.c | 2 +-
> drivers/block/mtip32xx/mtip32xx.c | 5 ++---
> drivers/block/nbd.c | 3 +--
> drivers/block/null_blk/main.c | 2 +-
> drivers/mmc/core/queue.c | 3 +--
> drivers/nvme/host/apple.c | 3 +--
> drivers/nvme/host/fc.c | 3 +--
> drivers/nvme/host/pci.c | 2 +-
> drivers/nvme/host/rdma.c | 3 +--
> drivers/nvme/host/tcp.c | 3 +--
> drivers/s390/block/dasd.c | 2 +-
> drivers/s390/block/dasd_int.h | 2 +-
> drivers/scsi/scsi_error.c | 3 +--
> drivers/scsi/scsi_priv.h | 3 +--
> include/linux/blk-mq.h | 2 +-
> 16 files changed, 19 insertions(+), 28 deletions(-)
>
> diff --git a/block/blk-mq.c b/block/blk-mq.c
> index d38c97fe89f5..81bd39e36e49 100644
> --- a/block/blk-mq.c
> +++ b/block/blk-mq.c
> @@ -1426,13 +1426,13 @@ bool blk_mq_queue_inflight(struct request_queue *q)
> }
> EXPORT_SYMBOL_GPL(blk_mq_queue_inflight);
>
> -static void blk_mq_rq_timed_out(struct request *req, bool reserved)
> +static void blk_mq_rq_timed_out(struct request *req)
> {
> req->rq_flags |= RQF_TIMED_OUT;
> if (req->q->mq_ops->timeout) {
> enum blk_eh_timer_return ret;
>
> - ret = req->q->mq_ops->timeout(req, reserved);
> + ret = req->q->mq_ops->timeout(req);
> if (ret == BLK_EH_DONE)
> return;
> WARN_ON_ONCE(ret != BLK_EH_RESET_TIMER);
> @@ -1481,7 +1481,7 @@ static bool blk_mq_check_expired(struct request *rq, void *priv, bool reserved)
> * from blk_mq_check_expired().
> */
> if (blk_mq_req_expired(rq, next))
> - blk_mq_rq_timed_out(rq, reserved);
> + blk_mq_rq_timed_out(rq);
> return true;
> }
>
> diff --git a/block/bsg-lib.c b/block/bsg-lib.c
> index acfe1357bf6c..9570c77b9fe3 100644
> --- a/block/bsg-lib.c
> +++ b/block/bsg-lib.c
> @@ -331,7 +331,7 @@ void bsg_remove_queue(struct request_queue *q)
> }
> EXPORT_SYMBOL_GPL(bsg_remove_queue);
>
> -static enum blk_eh_timer_return bsg_timeout(struct request *rq, bool reserved)
> +static enum blk_eh_timer_return bsg_timeout(struct request *rq)
> {
> struct bsg_set *bset =
> container_of(rq->q->tag_set, struct bsg_set, tag_set);
> diff --git a/drivers/block/mtip32xx/mtip32xx.c b/drivers/block/mtip32xx/mtip32xx.c
> index 27386a572ba4..d5767215840c 100644
> --- a/drivers/block/mtip32xx/mtip32xx.c
> +++ b/drivers/block/mtip32xx/mtip32xx.c
> @@ -3487,12 +3487,11 @@ static int mtip_init_cmd(struct blk_mq_tag_set *set, struct request *rq,
> return 0;
> }
>
> -static enum blk_eh_timer_return mtip_cmd_timeout(struct request *req,
> - bool reserved)
> +static enum blk_eh_timer_return mtip_cmd_timeout(struct request *req)
> {
> struct driver_data *dd = req->q->queuedata;
>
> - if (reserved) {
> + if (blk_mq_is_reserved_rq(req)) {
> struct mtip_cmd *cmd = blk_mq_rq_to_pdu(req);
>
> cmd->status = BLK_STS_TIMEOUT;
> diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
> index 07f3c139a3d7..166303716560 100644
> --- a/drivers/block/nbd.c
> +++ b/drivers/block/nbd.c
> @@ -393,8 +393,7 @@ static u32 req_to_nbd_cmd_type(struct request *req)
> }
> }
>
> -static enum blk_eh_timer_return nbd_xmit_timeout(struct request *req,
> - bool reserved)
> +static enum blk_eh_timer_return nbd_xmit_timeout(struct request *req)
> {
> struct nbd_cmd *cmd = blk_mq_rq_to_pdu(req);
> struct nbd_device *nbd = cmd->nbd;
> diff --git a/drivers/block/null_blk/main.c b/drivers/block/null_blk/main.c
> index 6b67088f4ea7..2d815d1eba25 100644
> --- a/drivers/block/null_blk/main.c
> +++ b/drivers/block/null_blk/main.c
> @@ -1578,7 +1578,7 @@ static int null_poll(struct blk_mq_hw_ctx *hctx, struct io_comp_batch *iob)
> return nr;
> }
>
> -static enum blk_eh_timer_return null_timeout_rq(struct request *rq, bool res)
> +static enum blk_eh_timer_return null_timeout_rq(struct request *rq)
> {
> struct blk_mq_hw_ctx *hctx = rq->mq_hctx;
> struct nullb_cmd *cmd = blk_mq_rq_to_pdu(rq);
> diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c
> index fa5324ceeebe..17236340dbd2 100644
> --- a/drivers/mmc/core/queue.c
> +++ b/drivers/mmc/core/queue.c
> @@ -116,8 +116,7 @@ static enum blk_eh_timer_return mmc_cqe_timed_out(struct request *req)
> }
> }
>
> -static enum blk_eh_timer_return mmc_mq_timed_out(struct request *req,
> - bool reserved)
> +static enum blk_eh_timer_return mmc_mq_timed_out(struct request *req)
> {
> struct request_queue *q = req->q;
> struct mmc_queue *mq = q->queuedata;
> diff --git a/drivers/nvme/host/apple.c b/drivers/nvme/host/apple.c
> index d702d7d60235..495118ce958a 100644
> --- a/drivers/nvme/host/apple.c
> +++ b/drivers/nvme/host/apple.c
> @@ -862,8 +862,7 @@ static void apple_nvme_disable(struct apple_nvme *anv, bool shutdown)
> }
> }
>
> -static enum blk_eh_timer_return apple_nvme_timeout(struct request *req,
> - bool reserved)
> +static enum blk_eh_timer_return apple_nvme_timeout(struct request *req)
> {
> struct apple_nvme_iod *iod = blk_mq_rq_to_pdu(req);
> struct apple_nvme_queue *q = iod->q;
> diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
> index 3c778bb0c294..a166c0b1cc33 100644
> --- a/drivers/nvme/host/fc.c
> +++ b/drivers/nvme/host/fc.c
> @@ -2565,8 +2565,7 @@ nvme_fc_error_recovery(struct nvme_fc_ctrl *ctrl, char *errmsg)
> nvme_reset_ctrl(&ctrl->ctrl);
> }
>
> -static enum blk_eh_timer_return
> -nvme_fc_timeout(struct request *rq, bool reserved)
> +static enum blk_eh_timer_return nvme_fc_timeout(struct request *rq)
> {
> struct nvme_fc_fcp_op *op = blk_mq_rq_to_pdu(rq);
> struct nvme_fc_ctrl *ctrl = op->ctrl;
> diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
> index c7012e85d035..83b1229a4e36 100644
> --- a/drivers/nvme/host/pci.c
> +++ b/drivers/nvme/host/pci.c
> @@ -1344,7 +1344,7 @@ static void nvme_warn_reset(struct nvme_dev *dev, u32 csts)
> "Try \"nvme_core.default_ps_max_latency_us=0 pcie_aspm=off\" and report a bug\n");
> }
>
> -static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved)
> +static enum blk_eh_timer_return nvme_timeout(struct request *req)
> {
> struct nvme_iod *iod = blk_mq_rq_to_pdu(req);
> struct nvme_queue *nvmeq = iod->nvmeq;
> diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
> index f2a5e1ea508a..d2fb8651e49d 100644
> --- a/drivers/nvme/host/rdma.c
> +++ b/drivers/nvme/host/rdma.c
> @@ -2013,8 +2013,7 @@ static void nvme_rdma_complete_timed_out(struct request *rq)
> nvmf_complete_timed_out_request(rq);
> }
>
> -static enum blk_eh_timer_return
> -nvme_rdma_timeout(struct request *rq, bool reserved)
> +static enum blk_eh_timer_return nvme_rdma_timeout(struct request *rq)
> {
> struct nvme_rdma_request *req = blk_mq_rq_to_pdu(rq);
> struct nvme_rdma_queue *queue = req->queue;
> diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c
> index bb67538d241b..f21f7b0140f9 100644
> --- a/drivers/nvme/host/tcp.c
> +++ b/drivers/nvme/host/tcp.c
> @@ -2321,8 +2321,7 @@ static void nvme_tcp_complete_timed_out(struct request *rq)
> nvmf_complete_timed_out_request(rq);
> }
>
> -static enum blk_eh_timer_return
> -nvme_tcp_timeout(struct request *rq, bool reserved)
> +static enum blk_eh_timer_return nvme_tcp_timeout(struct request *rq)
> {
> struct nvme_tcp_request *req = blk_mq_rq_to_pdu(rq);
> struct nvme_ctrl *ctrl = &req->queue->ctrl->ctrl;
> diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
> index ba6d78789660..35d6f62ed515 100644
> --- a/drivers/s390/block/dasd.c
> +++ b/drivers/s390/block/dasd.c
> @@ -3145,7 +3145,7 @@ static blk_status_t do_dasd_request(struct blk_mq_hw_ctx *hctx,
> * BLK_EH_DONE if the request is handled or terminated
> * by the driver.
> */
> -enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved)
> +enum blk_eh_timer_return dasd_times_out(struct request *req)
> {
> struct dasd_block *block = req->q->queuedata;
> struct dasd_device *device;
> diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h
> index 83b918b84b4a..333a399f754e 100644
> --- a/drivers/s390/block/dasd_int.h
> +++ b/drivers/s390/block/dasd_int.h
> @@ -795,7 +795,7 @@ void dasd_free_device(struct dasd_device *);
> struct dasd_block *dasd_alloc_block(void);
> void dasd_free_block(struct dasd_block *);
>
> -enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved);
> +enum blk_eh_timer_return dasd_times_out(struct request *req);
>
> void dasd_enable_device(struct dasd_device *);
> void dasd_set_target_state(struct dasd_device *, int);
> diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
> index a8b71b73a5a5..266ce414589c 100644
> --- a/drivers/scsi/scsi_error.c
> +++ b/drivers/scsi/scsi_error.c
> @@ -318,7 +318,6 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd)
> /**
> * scsi_timeout - Timeout function for normal scsi commands.
> * @req: request that is timing out.
> - * @reserved: whether the request is a reserved request.
> *
> * Notes:
> * We do not need to lock this. There is the potential for a race
> @@ -326,7 +325,7 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd)
> * normal completion function determines that the timer has already
> * fired, then it mustn't do anything.
> */
> -enum blk_eh_timer_return scsi_timeout(struct request *req, bool reserved)
> +enum blk_eh_timer_return scsi_timeout(struct request *req)
> {
> struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req);
> enum blk_eh_timer_return rtn = BLK_EH_DONE;
> diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
> index 695d0c83ffe0..6eeaa0a7f86d 100644
> --- a/drivers/scsi/scsi_priv.h
> +++ b/drivers/scsi/scsi_priv.h
> @@ -72,8 +72,7 @@ extern void scsi_exit_devinfo(void);
>
> /* scsi_error.c */
> extern void scmd_eh_abort_handler(struct work_struct *work);
> -extern enum blk_eh_timer_return scsi_timeout(struct request *req,
> - bool reserved);
> +extern enum blk_eh_timer_return scsi_timeout(struct request *req);
> extern int scsi_error_handler(void *host);
> extern enum scsi_disposition scsi_decide_disposition(struct scsi_cmnd *cmd);
> extern void scsi_eh_wakeup(struct Scsi_Host *shost);
> diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
> index 6d81fe10e850..fbb08bdd4618 100644
> --- a/include/linux/blk-mq.h
> +++ b/include/linux/blk-mq.h
> @@ -575,7 +575,7 @@ struct blk_mq_ops {
> /**
> * @timeout: Called on request timeout.
> */
> - enum blk_eh_timer_return (*timeout)(struct request *, bool);
> + enum blk_eh_timer_return (*timeout)(struct request *);
>
> /**
> * @poll: Called to poll for completion of a specific tag.
> --
> 2.25.1
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 4/6] scsi: fnic: Drop reserved request handling
2022-06-21 11:15 [PATCH v2 0/6] blk-mq: Add a flag for reserved requests series John Garry
` (2 preceding siblings ...)
2022-06-21 11:15 ` [PATCH v2 3/6] blk-mq: Drop blk_mq_ops.timeout 'reserved' arg John Garry
@ 2022-06-21 11:15 ` John Garry
2022-06-21 11:15 ` [PATCH v2 5/6] blk-mq: Drop 'reserved' arg of busy_tag_iter_fn John Garry
` (3 subsequent siblings)
7 siblings, 0 replies; 13+ messages in thread
From: John Garry @ 2022-06-21 11:15 UTC (permalink / raw)
To: axboe, damien.lemoal, bvanassche, hch, jejb, martin.petersen,
hare, satishkh, sebaddel, kartilak
Cc: linux-doc, linux-rdma, linux-mmc, linux-nvme, linux-s390,
linux-scsi, mpi3mr-linuxdrv.pdl, linux-block, linux-kernel, nbd,
John Garry
The SCSI core code does not support reserved requests, so drop the
handling in fnic_pending_aborts_iter().
Signed-off-by: John Garry <john.garry@huawei.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
---
drivers/scsi/fnic/fnic_scsi.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/scsi/fnic/fnic_scsi.c b/drivers/scsi/fnic/fnic_scsi.c
index 3d64877bda8d..e7b7f6d73429 100644
--- a/drivers/scsi/fnic/fnic_scsi.c
+++ b/drivers/scsi/fnic/fnic_scsi.c
@@ -2019,8 +2019,6 @@ static bool fnic_pending_aborts_iter(struct scsi_cmnd *sc,
if (sc == iter_data->lr_sc || sc->device != lun_dev)
return true;
- if (reserved)
- return true;
io_lock = fnic_io_lock_tag(fnic, abt_tag);
spin_lock_irqsave(io_lock, flags);
--
2.25.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 5/6] blk-mq: Drop 'reserved' arg of busy_tag_iter_fn
2022-06-21 11:15 [PATCH v2 0/6] blk-mq: Add a flag for reserved requests series John Garry
` (3 preceding siblings ...)
2022-06-21 11:15 ` [PATCH v2 4/6] scsi: fnic: Drop reserved request handling John Garry
@ 2022-06-21 11:15 ` John Garry
2022-06-23 13:12 ` Bart Van Assche
2022-06-26 13:58 ` Sagi Grimberg
2022-06-21 11:15 ` [PATCH v2 6/6] blk-mq: Drop local variable for reserved tag John Garry
` (2 subsequent siblings)
7 siblings, 2 replies; 13+ messages in thread
From: John Garry @ 2022-06-21 11:15 UTC (permalink / raw)
To: axboe, damien.lemoal, bvanassche, hch, jejb, martin.petersen,
hare, satishkh, sebaddel, kartilak
Cc: linux-doc, linux-rdma, linux-mmc, linux-nvme, linux-s390,
linux-scsi, mpi3mr-linuxdrv.pdl, linux-block, linux-kernel, nbd,
John Garry
We no longer use the 'reserved' arg in busy_tag_iter_fn for any iter
function so it may be dropped.
Signed-off-by: John Garry <john.garry@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
---
block/blk-mq-debugfs.c | 2 +-
block/blk-mq-tag.c | 7 +++----
block/blk-mq.c | 10 ++++------
drivers/block/mtip32xx/mtip32xx.c | 6 +++---
drivers/block/nbd.c | 2 +-
drivers/infiniband/ulp/srp/ib_srp.c | 3 +--
drivers/nvme/host/core.c | 2 +-
drivers/nvme/host/fc.c | 3 +--
drivers/nvme/host/nvme.h | 2 +-
drivers/scsi/aacraid/comminit.c | 2 +-
drivers/scsi/aacraid/linit.c | 2 +-
drivers/scsi/fnic/fnic_scsi.c | 12 ++++--------
drivers/scsi/hosts.c | 14 ++++++--------
drivers/scsi/mpi3mr/mpi3mr_os.c | 16 ++++------------
include/linux/blk-mq.h | 2 +-
include/scsi/scsi_host.h | 2 +-
16 files changed, 34 insertions(+), 53 deletions(-)
diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c
index 7e4136a60e1c..d976920d4331 100644
--- a/block/blk-mq-debugfs.c
+++ b/block/blk-mq-debugfs.c
@@ -377,7 +377,7 @@ struct show_busy_params {
* e.g. due to a concurrent blk_mq_finish_request() call. Returns true to
* keep iterating requests.
*/
-static bool hctx_show_busy_rq(struct request *rq, void *data, bool reserved)
+static bool hctx_show_busy_rq(struct request *rq, void *data)
{
const struct show_busy_params *params = data;
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c
index 2dcd738c6952..509c35f080a9 100644
--- a/block/blk-mq-tag.c
+++ b/block/blk-mq-tag.c
@@ -287,7 +287,7 @@ static bool bt_iter(struct sbitmap *bitmap, unsigned int bitnr, void *data)
return true;
if (rq->q == q && (!hctx || rq->mq_hctx == hctx))
- ret = iter_data->fn(rq, iter_data->data, reserved);
+ ret = iter_data->fn(rq, iter_data->data);
blk_mq_put_rq_ref(rq);
return ret;
}
@@ -358,7 +358,7 @@ static bool bt_tags_iter(struct sbitmap *bitmap, unsigned int bitnr, void *data)
if (!(iter_data->flags & BT_TAG_ITER_STARTED) ||
blk_mq_request_started(rq))
- ret = iter_data->fn(rq, iter_data->data, reserved);
+ ret = iter_data->fn(rq, iter_data->data);
if (!iter_static_rqs)
blk_mq_put_rq_ref(rq);
return ret;
@@ -448,8 +448,7 @@ void blk_mq_tagset_busy_iter(struct blk_mq_tag_set *tagset,
}
EXPORT_SYMBOL(blk_mq_tagset_busy_iter);
-static bool blk_mq_tagset_count_completed_rqs(struct request *rq,
- void *data, bool reserved)
+static bool blk_mq_tagset_count_completed_rqs(struct request *rq, void *data)
{
unsigned *count = data;
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 81bd39e36e49..b805a563aa85 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -128,8 +128,7 @@ struct mq_inflight {
unsigned int inflight[2];
};
-static bool blk_mq_check_inflight(struct request *rq, void *priv,
- bool reserved)
+static bool blk_mq_check_inflight(struct request *rq, void *priv)
{
struct mq_inflight *mi = priv;
@@ -1399,8 +1398,7 @@ void blk_mq_delay_kick_requeue_list(struct request_queue *q,
}
EXPORT_SYMBOL(blk_mq_delay_kick_requeue_list);
-static bool blk_mq_rq_inflight(struct request *rq, void *priv,
- bool reserved)
+static bool blk_mq_rq_inflight(struct request *rq, void *priv)
{
/*
* If we find a request that isn't idle we know the queue is busy
@@ -1469,7 +1467,7 @@ void blk_mq_put_rq_ref(struct request *rq)
__blk_mq_free_request(rq);
}
-static bool blk_mq_check_expired(struct request *rq, void *priv, bool reserved)
+static bool blk_mq_check_expired(struct request *rq, void *priv)
{
unsigned long *next = priv;
@@ -3277,7 +3275,7 @@ struct rq_iter_data {
bool has_rq;
};
-static bool blk_mq_has_request(struct request *rq, void *data, bool reserved)
+static bool blk_mq_has_request(struct request *rq, void *data)
{
struct rq_iter_data *iter_data = data;
diff --git a/drivers/block/mtip32xx/mtip32xx.c b/drivers/block/mtip32xx/mtip32xx.c
index d5767215840c..5ae0e9bb08be 100644
--- a/drivers/block/mtip32xx/mtip32xx.c
+++ b/drivers/block/mtip32xx/mtip32xx.c
@@ -2556,7 +2556,7 @@ static void mtip_softirq_done_fn(struct request *rq)
blk_mq_end_request(rq, cmd->status);
}
-static bool mtip_abort_cmd(struct request *req, void *data, bool reserved)
+static bool mtip_abort_cmd(struct request *req, void *data)
{
struct mtip_cmd *cmd = blk_mq_rq_to_pdu(req);
struct driver_data *dd = data;
@@ -2569,7 +2569,7 @@ static bool mtip_abort_cmd(struct request *req, void *data, bool reserved)
return true;
}
-static bool mtip_queue_cmd(struct request *req, void *data, bool reserved)
+static bool mtip_queue_cmd(struct request *req, void *data)
{
struct driver_data *dd = data;
@@ -3672,7 +3672,7 @@ static int mtip_block_initialize(struct driver_data *dd)
return rv;
}
-static bool mtip_no_dev_cleanup(struct request *rq, void *data, bool reserv)
+static bool mtip_no_dev_cleanup(struct request *rq, void *data)
{
struct mtip_cmd *cmd = blk_mq_rq_to_pdu(rq);
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index 166303716560..a8f81a1618f8 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -879,7 +879,7 @@ static void recv_work(struct work_struct *work)
kfree(args);
}
-static bool nbd_clear_req(struct request *req, void *data, bool reserved)
+static bool nbd_clear_req(struct request *req, void *data)
{
struct nbd_cmd *cmd = blk_mq_rq_to_pdu(req);
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index 6058abf42ba7..7720ea270ed8 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -1282,8 +1282,7 @@ struct srp_terminate_context {
int scsi_result;
};
-static bool srp_terminate_cmd(struct scsi_cmnd *scmnd, void *context_ptr,
- bool reserved)
+static bool srp_terminate_cmd(struct scsi_cmnd *scmnd, void *context_ptr)
{
struct srp_terminate_context *context = context_ptr;
struct srp_target_port *target = context->srp_target;
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 3ab2cfd254a4..b3d63a57e1b9 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -418,7 +418,7 @@ blk_status_t nvme_host_path_error(struct request *req)
}
EXPORT_SYMBOL_GPL(nvme_host_path_error);
-bool nvme_cancel_request(struct request *req, void *data, bool reserved)
+bool nvme_cancel_request(struct request *req, void *data)
{
dev_dbg_ratelimited(((struct nvme_ctrl *) data)->device,
"Cancelling I/O %d", req->tag);
diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
index a166c0b1cc33..4b74f2267bb3 100644
--- a/drivers/nvme/host/fc.c
+++ b/drivers/nvme/host/fc.c
@@ -2456,8 +2456,7 @@ nvme_fc_nvme_ctrl_freed(struct nvme_ctrl *nctrl)
* status. The done path will return the io request back to the block
* layer with an error status.
*/
-static bool
-nvme_fc_terminate_exchange(struct request *req, void *data, bool reserved)
+static bool nvme_fc_terminate_exchange(struct request *req, void *data)
{
struct nvme_ctrl *nctrl = data;
struct nvme_fc_ctrl *ctrl = to_fc_ctrl(nctrl);
diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h
index 0da94b233fed..e4daa57f8bd5 100644
--- a/drivers/nvme/host/nvme.h
+++ b/drivers/nvme/host/nvme.h
@@ -697,7 +697,7 @@ static __always_inline void nvme_complete_batch(struct io_comp_batch *iob,
}
blk_status_t nvme_host_path_error(struct request *req);
-bool nvme_cancel_request(struct request *req, void *data, bool reserved);
+bool nvme_cancel_request(struct request *req, void *data);
void nvme_cancel_tagset(struct nvme_ctrl *ctrl);
void nvme_cancel_admin_tagset(struct nvme_ctrl *ctrl);
bool nvme_change_ctrl_state(struct nvme_ctrl *ctrl,
diff --git a/drivers/scsi/aacraid/comminit.c b/drivers/scsi/aacraid/comminit.c
index 940a6deab38f..bd99c5492b7d 100644
--- a/drivers/scsi/aacraid/comminit.c
+++ b/drivers/scsi/aacraid/comminit.c
@@ -272,7 +272,7 @@ static void aac_queue_init(struct aac_dev * dev, struct aac_queue * q, u32 *mem,
q->entries = qsize;
}
-static bool wait_for_io_iter(struct scsi_cmnd *cmd, void *data, bool rsvd)
+static bool wait_for_io_iter(struct scsi_cmnd *cmd, void *data)
{
int *active = data;
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index 9c27bc37e5de..5ba5c18b77b4 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
@@ -633,7 +633,7 @@ struct fib_count_data {
int krlcnt;
};
-static bool fib_count_iter(struct scsi_cmnd *scmnd, void *data, bool reserved)
+static bool fib_count_iter(struct scsi_cmnd *scmnd, void *data)
{
struct fib_count_data *fib_count = data;
diff --git a/drivers/scsi/fnic/fnic_scsi.c b/drivers/scsi/fnic/fnic_scsi.c
index e7b7f6d73429..77a4d9f8aa83 100644
--- a/drivers/scsi/fnic/fnic_scsi.c
+++ b/drivers/scsi/fnic/fnic_scsi.c
@@ -1350,8 +1350,7 @@ int fnic_wq_copy_cmpl_handler(struct fnic *fnic, int copy_work_to_do)
return wq_work_done;
}
-static bool fnic_cleanup_io_iter(struct scsi_cmnd *sc, void *data,
- bool reserved)
+static bool fnic_cleanup_io_iter(struct scsi_cmnd *sc, void *data)
{
const int tag = scsi_cmd_to_rq(sc)->tag;
struct fnic *fnic = data;
@@ -1548,8 +1547,7 @@ struct fnic_rport_abort_io_iter_data {
int term_cnt;
};
-static bool fnic_rport_abort_io_iter(struct scsi_cmnd *sc, void *data,
- bool reserved)
+static bool fnic_rport_abort_io_iter(struct scsi_cmnd *sc, void *data)
{
struct fnic_rport_abort_io_iter_data *iter_data = data;
struct fnic *fnic = iter_data->fnic;
@@ -2003,8 +2001,7 @@ struct fnic_pending_aborts_iter_data {
int ret;
};
-static bool fnic_pending_aborts_iter(struct scsi_cmnd *sc,
- void *data, bool reserved)
+static bool fnic_pending_aborts_iter(struct scsi_cmnd *sc, void *data)
{
struct fnic_pending_aborts_iter_data *iter_data = data;
struct fnic *fnic = iter_data->fnic;
@@ -2668,8 +2665,7 @@ void fnic_exch_mgr_reset(struct fc_lport *lp, u32 sid, u32 did)
}
-static bool fnic_abts_pending_iter(struct scsi_cmnd *sc, void *data,
- bool reserved)
+static bool fnic_abts_pending_iter(struct scsi_cmnd *sc, void *data)
{
struct fnic_pending_aborts_iter_data *iter_data = data;
struct fnic *fnic = iter_data->fnic;
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
index 8352f90d997d..315c7ac730e9 100644
--- a/drivers/scsi/hosts.c
+++ b/drivers/scsi/hosts.c
@@ -566,8 +566,7 @@ struct Scsi_Host *scsi_host_get(struct Scsi_Host *shost)
}
EXPORT_SYMBOL(scsi_host_get);
-static bool scsi_host_check_in_flight(struct request *rq, void *data,
- bool reserved)
+static bool scsi_host_check_in_flight(struct request *rq, void *data)
{
int *count = data;
struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(rq);
@@ -662,7 +661,7 @@ void scsi_flush_work(struct Scsi_Host *shost)
}
EXPORT_SYMBOL_GPL(scsi_flush_work);
-static bool complete_all_cmds_iter(struct request *rq, void *data, bool rsvd)
+static bool complete_all_cmds_iter(struct request *rq, void *data)
{
struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(rq);
enum scsi_host_status status = *(enum scsi_host_status *)data;
@@ -693,17 +692,16 @@ void scsi_host_complete_all_commands(struct Scsi_Host *shost,
EXPORT_SYMBOL_GPL(scsi_host_complete_all_commands);
struct scsi_host_busy_iter_data {
- bool (*fn)(struct scsi_cmnd *, void *, bool);
+ bool (*fn)(struct scsi_cmnd *, void *);
void *priv;
};
-static bool __scsi_host_busy_iter_fn(struct request *req, void *priv,
- bool reserved)
+static bool __scsi_host_busy_iter_fn(struct request *req, void *priv)
{
struct scsi_host_busy_iter_data *iter_data = priv;
struct scsi_cmnd *sc = blk_mq_rq_to_pdu(req);
- return iter_data->fn(sc, iter_data->priv, reserved);
+ return iter_data->fn(sc, iter_data->priv);
}
/**
@@ -716,7 +714,7 @@ static bool __scsi_host_busy_iter_fn(struct request *req, void *priv,
* ithas to be provided by the caller
**/
void scsi_host_busy_iter(struct Scsi_Host *shost,
- bool (*fn)(struct scsi_cmnd *, void *, bool),
+ bool (*fn)(struct scsi_cmnd *, void *),
void *priv)
{
struct scsi_host_busy_iter_data iter_data = {
diff --git a/drivers/scsi/mpi3mr/mpi3mr_os.c b/drivers/scsi/mpi3mr/mpi3mr_os.c
index d8c195b7ca57..59a18769a4fe 100644
--- a/drivers/scsi/mpi3mr/mpi3mr_os.c
+++ b/drivers/scsi/mpi3mr/mpi3mr_os.c
@@ -381,14 +381,12 @@ void mpi3mr_invalidate_devhandles(struct mpi3mr_ioc *mrioc)
* mpi3mr_print_scmd - print individual SCSI command
* @rq: Block request
* @data: Adapter instance reference
- * @reserved: N/A. Currently not used
*
* Print the SCSI command details if it is in LLD scope.
*
* Return: true always.
*/
-static bool mpi3mr_print_scmd(struct request *rq,
- void *data, bool reserved)
+static bool mpi3mr_print_scmd(struct request *rq, void *data)
{
struct mpi3mr_ioc *mrioc = (struct mpi3mr_ioc *)data;
struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(rq);
@@ -412,7 +410,6 @@ static bool mpi3mr_print_scmd(struct request *rq,
* mpi3mr_flush_scmd - Flush individual SCSI command
* @rq: Block request
* @data: Adapter instance reference
- * @reserved: N/A. Currently not used
*
* Return the SCSI command to the upper layers if it is in LLD
* scope.
@@ -420,8 +417,7 @@ static bool mpi3mr_print_scmd(struct request *rq,
* Return: true always.
*/
-static bool mpi3mr_flush_scmd(struct request *rq,
- void *data, bool reserved)
+static bool mpi3mr_flush_scmd(struct request *rq, void *data)
{
struct mpi3mr_ioc *mrioc = (struct mpi3mr_ioc *)data;
struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(rq);
@@ -451,7 +447,6 @@ static bool mpi3mr_flush_scmd(struct request *rq,
* mpi3mr_count_dev_pending - Count commands pending for a lun
* @rq: Block request
* @data: SCSI device reference
- * @reserved: Unused
*
* This is an iterator function called for each SCSI command in
* a host and if the command is pending in the LLD for the
@@ -461,8 +456,7 @@ static bool mpi3mr_flush_scmd(struct request *rq,
* Return: true always.
*/
-static bool mpi3mr_count_dev_pending(struct request *rq,
- void *data, bool reserved)
+static bool mpi3mr_count_dev_pending(struct request *rq, void *data)
{
struct scsi_device *sdev = (struct scsi_device *)data;
struct mpi3mr_sdev_priv_data *sdev_priv_data = sdev->hostdata;
@@ -485,7 +479,6 @@ static bool mpi3mr_count_dev_pending(struct request *rq,
* mpi3mr_count_tgt_pending - Count commands pending for target
* @rq: Block request
* @data: SCSI target reference
- * @reserved: Unused
*
* This is an iterator function called for each SCSI command in
* a host and if the command is pending in the LLD for the
@@ -495,8 +488,7 @@ static bool mpi3mr_count_dev_pending(struct request *rq,
* Return: true always.
*/
-static bool mpi3mr_count_tgt_pending(struct request *rq,
- void *data, bool reserved)
+static bool mpi3mr_count_tgt_pending(struct request *rq, void *data)
{
struct scsi_target *starget = (struct scsi_target *)data;
struct mpi3mr_stgt_priv_data *stgt_priv_data = starget->hostdata;
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index fbb08bdd4618..811f77e32b7f 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -520,7 +520,7 @@ struct blk_mq_queue_data {
bool last;
};
-typedef bool (busy_tag_iter_fn)(struct request *, void *, bool);
+typedef bool (busy_tag_iter_fn)(struct request *, void *);
/**
* struct blk_mq_ops - Callback functions that implements block driver
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h
index 667d889b92b5..65082ecdd557 100644
--- a/include/scsi/scsi_host.h
+++ b/include/scsi/scsi_host.h
@@ -786,7 +786,7 @@ extern int scsi_host_block(struct Scsi_Host *shost);
extern int scsi_host_unblock(struct Scsi_Host *shost, int new_state);
void scsi_host_busy_iter(struct Scsi_Host *,
- bool (*fn)(struct scsi_cmnd *, void *, bool), void *priv);
+ bool (*fn)(struct scsi_cmnd *, void *), void *priv);
struct class_container;
--
2.25.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 5/6] blk-mq: Drop 'reserved' arg of busy_tag_iter_fn
2022-06-21 11:15 ` [PATCH v2 5/6] blk-mq: Drop 'reserved' arg of busy_tag_iter_fn John Garry
@ 2022-06-23 13:12 ` Bart Van Assche
2022-06-26 13:58 ` Sagi Grimberg
1 sibling, 0 replies; 13+ messages in thread
From: Bart Van Assche @ 2022-06-23 13:12 UTC (permalink / raw)
To: John Garry, axboe, damien.lemoal, hch, jejb, martin.petersen,
hare, satishkh, sebaddel, kartilak
Cc: linux-doc, linux-rdma, linux-mmc, linux-nvme, linux-s390,
linux-scsi, mpi3mr-linuxdrv.pdl, linux-block, linux-kernel, nbd
On 6/21/22 04:15, John Garry wrote:
> We no longer use the 'reserved' arg in busy_tag_iter_fn for any iter
> function so it may be dropped.
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 5/6] blk-mq: Drop 'reserved' arg of busy_tag_iter_fn
2022-06-21 11:15 ` [PATCH v2 5/6] blk-mq: Drop 'reserved' arg of busy_tag_iter_fn John Garry
2022-06-23 13:12 ` Bart Van Assche
@ 2022-06-26 13:58 ` Sagi Grimberg
1 sibling, 0 replies; 13+ messages in thread
From: Sagi Grimberg @ 2022-06-26 13:58 UTC (permalink / raw)
To: John Garry, axboe, damien.lemoal, bvanassche, hch, jejb,
martin.petersen, hare, satishkh, sebaddel, kartilak
Cc: linux-doc, linux-rdma, linux-mmc, linux-nvme, linux-s390,
linux-scsi, mpi3mr-linuxdrv.pdl, linux-block, linux-kernel, nbd
On 6/21/22 14:15, John Garry wrote:
> We no longer use the 'reserved' arg in busy_tag_iter_fn for any iter
> function so it may be dropped.
>
> Signed-off-by: John Garry <john.garry@huawei.com>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> Reviewed-by: Hannes Reinecke <hare@suse.de>
> ---
> block/blk-mq-debugfs.c | 2 +-
> block/blk-mq-tag.c | 7 +++----
> block/blk-mq.c | 10 ++++------
> drivers/block/mtip32xx/mtip32xx.c | 6 +++---
> drivers/block/nbd.c | 2 +-
> drivers/infiniband/ulp/srp/ib_srp.c | 3 +--
> drivers/nvme/host/core.c | 2 +-
> drivers/nvme/host/fc.c | 3 +--
> drivers/nvme/host/nvme.h | 2 +-
for the nvme bits:
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 6/6] blk-mq: Drop local variable for reserved tag
2022-06-21 11:15 [PATCH v2 0/6] blk-mq: Add a flag for reserved requests series John Garry
` (4 preceding siblings ...)
2022-06-21 11:15 ` [PATCH v2 5/6] blk-mq: Drop 'reserved' arg of busy_tag_iter_fn John Garry
@ 2022-06-21 11:15 ` John Garry
2022-06-23 13:10 ` Bart Van Assche
2022-06-22 0:57 ` [PATCH v2 0/6] blk-mq: Add a flag for reserved requests series Martin K. Petersen
2022-06-28 8:27 ` John Garry
7 siblings, 1 reply; 13+ messages in thread
From: John Garry @ 2022-06-21 11:15 UTC (permalink / raw)
To: axboe, damien.lemoal, bvanassche, hch, jejb, martin.petersen,
hare, satishkh, sebaddel, kartilak
Cc: linux-doc, linux-rdma, linux-mmc, linux-nvme, linux-s390,
linux-scsi, mpi3mr-linuxdrv.pdl, linux-block, linux-kernel, nbd,
John Garry
The local variable is now only referenced once so drop it.
Signed-off-by: John Garry <john.garry@huawei.com>
---
block/blk-mq-tag.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c
index 509c35f080a9..b8cc8b41553f 100644
--- a/block/blk-mq-tag.c
+++ b/block/blk-mq-tag.c
@@ -266,7 +266,6 @@ static bool bt_iter(struct sbitmap *bitmap, unsigned int bitnr, void *data)
struct blk_mq_hw_ctx *hctx = iter_data->hctx;
struct request_queue *q = iter_data->q;
struct blk_mq_tag_set *set = q->tag_set;
- bool reserved = iter_data->reserved;
struct blk_mq_tags *tags;
struct request *rq;
bool ret = true;
@@ -276,7 +275,7 @@ static bool bt_iter(struct sbitmap *bitmap, unsigned int bitnr, void *data)
else
tags = hctx->tags;
- if (!reserved)
+ if (!iter_data->reserved)
bitnr += tags->nr_reserved_tags;
/*
* We can hit rq == NULL here, because the tagging functions
@@ -337,12 +336,11 @@ static bool bt_tags_iter(struct sbitmap *bitmap, unsigned int bitnr, void *data)
{
struct bt_tags_iter_data *iter_data = data;
struct blk_mq_tags *tags = iter_data->tags;
- bool reserved = iter_data->flags & BT_TAG_ITER_RESERVED;
struct request *rq;
bool ret = true;
bool iter_static_rqs = !!(iter_data->flags & BT_TAG_ITER_STATIC_RQS);
- if (!reserved)
+ if (!(iter_data->flags & BT_TAG_ITER_RESERVED))
bitnr += tags->nr_reserved_tags;
/*
--
2.25.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 6/6] blk-mq: Drop local variable for reserved tag
2022-06-21 11:15 ` [PATCH v2 6/6] blk-mq: Drop local variable for reserved tag John Garry
@ 2022-06-23 13:10 ` Bart Van Assche
0 siblings, 0 replies; 13+ messages in thread
From: Bart Van Assche @ 2022-06-23 13:10 UTC (permalink / raw)
To: John Garry, axboe, damien.lemoal, hch, jejb, martin.petersen,
hare, satishkh, sebaddel, kartilak
Cc: linux-doc, linux-rdma, linux-mmc, linux-nvme, linux-s390,
linux-scsi, mpi3mr-linuxdrv.pdl, linux-block, linux-kernel, nbd
On 6/21/22 04:15, John Garry wrote:
> The local variable is now only referenced once so drop it.
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/6] blk-mq: Add a flag for reserved requests series
2022-06-21 11:15 [PATCH v2 0/6] blk-mq: Add a flag for reserved requests series John Garry
` (5 preceding siblings ...)
2022-06-21 11:15 ` [PATCH v2 6/6] blk-mq: Drop local variable for reserved tag John Garry
@ 2022-06-22 0:57 ` Martin K. Petersen
2022-06-28 8:27 ` John Garry
7 siblings, 0 replies; 13+ messages in thread
From: Martin K. Petersen @ 2022-06-22 0:57 UTC (permalink / raw)
To: John Garry
Cc: axboe, damien.lemoal, bvanassche, hch, jejb, martin.petersen,
hare, satishkh, sebaddel, kartilak, linux-doc, linux-rdma,
linux-mmc, linux-nvme, linux-s390, linux-scsi,
mpi3mr-linuxdrv.pdl, linux-block, linux-kernel, nbd
John,
> In [0] I included "blk-mq: Add a flag for reserved requests" to
> identify if a request is 'reserved' for special handling. Doing this
> is easier than passing a 'reserved' arg to the blk_mq_ops
> callbacks. Indeed, only 1x timeout implementation or blk-mq iter
> function actually uses the 'reserved' arg (or 3x if you count SCSI
> core and FNIC SCSI driver). So this series drops the 'reserved' arg
> for these timeout and iter functions. Christoph suggested that I try
> to upstream now.
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/6] blk-mq: Add a flag for reserved requests series
2022-06-21 11:15 [PATCH v2 0/6] blk-mq: Add a flag for reserved requests series John Garry
` (6 preceding siblings ...)
2022-06-22 0:57 ` [PATCH v2 0/6] blk-mq: Add a flag for reserved requests series Martin K. Petersen
@ 2022-06-28 8:27 ` John Garry
7 siblings, 0 replies; 13+ messages in thread
From: John Garry @ 2022-06-28 8:27 UTC (permalink / raw)
To: axboe
Cc: linux-doc, linux-rdma, linux-mmc, linux-nvme, linux-s390,
linux-scsi, mpi3mr-linuxdrv.pdl, linux-block, linux-kernel, nbd,
damien.lemoal, jejb, hch, martin.petersen, kartilak, bvanassche,
satishkh, hare, sebaddel
On 21/06/2022 12:15, John Garry wrote:
Hi Jens,
about this series, would you be ok to pick this up for merging? Do you
find the changes acceptable?
Thanks,
John
> In [0] I included "blk-mq: Add a flag for reserved requests" to identify
> if a request is 'reserved' for special handling. Doing this is easier than
> passing a 'reserved' arg to the blk_mq_ops callbacks. Indeed, only 1x
> timeout implementation or blk-mq iter function actually uses the
> 'reserved' arg (or 3x if you count SCSI core and FNIC SCSI driver). So
> this series drops the 'reserved' arg for these timeout and iter functions.
> Christoph suggested that I try to upstream now.
>
> Differences to v1:
> - Use "scsi_timeout" as name for SCSI timeout function and update docs
> - Add RB tags (thanks!)
> - Split out patch to drop local variables for 'reserved', as requested by
> Bart
>
> Based on following:
> 6dbcddf6e76b (block/for-5.20/block) block: bfq: Fix kernel-doc headers
>
> [0] https://lore.kernel.org/linux-scsi/1654770559-101375-1-git-send-email-john.garry@huawei.com/T/#m22aa9f89e55835edc2e650d43f7e3219a3a1a324
>
> John Garry (6):
> scsi: core: Remove reserved request time-out handling
> blk-mq: Add a flag for reserved requests
> blk-mq: Drop blk_mq_ops.timeout 'reserved' arg
> scsi: fnic: Drop reserved request handling
> blk-mq: Drop 'reserved' arg of busy_tag_iter_fn
> blk-mq: Drop local variable for reserved tag
>
> Documentation/scsi/scsi_eh.rst | 3 +--
> Documentation/scsi/scsi_mid_low_api.rst | 2 +-
> block/blk-mq-debugfs.c | 2 +-
> block/blk-mq-tag.c | 13 +++++--------
> block/blk-mq.c | 22 +++++++++++++---------
> block/bsg-lib.c | 2 +-
> drivers/block/mtip32xx/mtip32xx.c | 11 +++++------
> drivers/block/nbd.c | 5 ++---
> drivers/block/null_blk/main.c | 2 +-
> drivers/infiniband/ulp/srp/ib_srp.c | 3 +--
> drivers/mmc/core/queue.c | 3 +--
> drivers/nvme/host/apple.c | 3 +--
> drivers/nvme/host/core.c | 2 +-
> drivers/nvme/host/fc.c | 6 ++----
> drivers/nvme/host/nvme.h | 2 +-
> drivers/nvme/host/pci.c | 2 +-
> drivers/nvme/host/rdma.c | 3 +--
> drivers/nvme/host/tcp.c | 3 +--
> drivers/s390/block/dasd.c | 2 +-
> drivers/s390/block/dasd_int.h | 2 +-
> drivers/scsi/aacraid/comminit.c | 2 +-
> drivers/scsi/aacraid/linit.c | 2 +-
> drivers/scsi/fnic/fnic_scsi.c | 14 ++++----------
> drivers/scsi/hosts.c | 14 ++++++--------
> drivers/scsi/mpi3mr/mpi3mr_os.c | 16 ++++------------
> drivers/scsi/scsi_error.c | 6 +++---
> drivers/scsi/scsi_lib.c | 8 --------
> drivers/scsi/scsi_priv.h | 2 +-
> include/linux/blk-mq.h | 10 ++++++++--
> include/scsi/scsi_host.h | 2 +-
> 30 files changed, 71 insertions(+), 98 deletions(-)
>
^ permalink raw reply [flat|nested] 13+ messages in thread