[PATCHv2,1/2] blk-mq: export __blk_mq_complete_request
diff mbox series

Message ID 20200528151931.3501506-1-kbusch@kernel.org
State New
Headers show
Series
  • [PATCHv2,1/2] blk-mq: export __blk_mq_complete_request
Related show

Commit Message

Keith Busch May 28, 2020, 3:19 p.m. UTC
For when drivers have a need to bypass error injection.

Signed-off-by: Keith Busch <kbusch@kernel.org>
---
 block/blk-mq.c         | 3 ++-
 include/linux/blk-mq.h | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

Comments

Johannes Thumshirn May 28, 2020, 3:22 p.m. UTC | #1
Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Jens Axboe May 28, 2020, 3:29 p.m. UTC | #2
On 5/28/20 9:19 AM, Keith Busch wrote:
> For when drivers have a need to bypass error injection.
> 
> Signed-off-by: Keith Busch <kbusch@kernel.org>
> ---
>  block/blk-mq.c         | 3 ++-
>  include/linux/blk-mq.h | 1 +
>  2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/block/blk-mq.c b/block/blk-mq.c
> index cac11945f602..3c61faf63e15 100644
> --- a/block/blk-mq.c
> +++ b/block/blk-mq.c
> @@ -556,7 +556,7 @@ static void __blk_mq_complete_request_remote(void *data)
>  	q->mq_ops->complete(rq);
>  }
>  
> -static void __blk_mq_complete_request(struct request *rq)
> +void __blk_mq_complete_request(struct request *rq)
>  {
>  	struct blk_mq_ctx *ctx = rq->mq_ctx;
>  	struct request_queue *q = rq->q;
> @@ -602,6 +602,7 @@ static void __blk_mq_complete_request(struct request *rq)
>  	}
>  	put_cpu();
>  }
> +EXPORT_SYMBOL(__blk_mq_complete_request);

Let's please make that _GPL
Christoph Hellwig May 28, 2020, 4:42 p.m. UTC | #3
On Thu, May 28, 2020 at 08:19:30AM -0700, Keith Busch wrote:
> For when drivers have a need to bypass error injection.

EXPORT_SYMBOL_GPL, and as hinted I think this needs a better name.
It also absolutely needs a kerneldoc comment describing the use case.
Keith Busch May 28, 2020, 6:18 p.m. UTC | #4
On Thu, May 28, 2020 at 06:42:56PM +0200, Christoph Hellwig wrote:
> I think this needs a better name.

blk_mq_do_complete_req()?
Ming Lei May 29, 2020, 3:44 a.m. UTC | #5
On Thu, May 28, 2020 at 11:19 PM Keith Busch <kbusch@kernel.org> wrote:
>
> For when drivers have a need to bypass error injection.
>
> Signed-off-by: Keith Busch <kbusch@kernel.org>
> ---
>  block/blk-mq.c         | 3 ++-
>  include/linux/blk-mq.h | 1 +
>  2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/block/blk-mq.c b/block/blk-mq.c
> index cac11945f602..3c61faf63e15 100644
> --- a/block/blk-mq.c
> +++ b/block/blk-mq.c
> @@ -556,7 +556,7 @@ static void __blk_mq_complete_request_remote(void *data)
>         q->mq_ops->complete(rq);
>  }
>
> -static void __blk_mq_complete_request(struct request *rq)
> +void __blk_mq_complete_request(struct request *rq)
>  {
>         struct blk_mq_ctx *ctx = rq->mq_ctx;
>         struct request_queue *q = rq->q;
> @@ -602,6 +602,7 @@ static void __blk_mq_complete_request(struct request *rq)
>         }
>         put_cpu();
>  }
> +EXPORT_SYMBOL(__blk_mq_complete_request);
>
>  static void hctx_unlock(struct blk_mq_hw_ctx *hctx, int srcu_idx)
>         __releases(hctx->srcu)
> diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
> index d7307795439a..cfe7eac3764e 100644
> --- a/include/linux/blk-mq.h
> +++ b/include/linux/blk-mq.h
> @@ -494,6 +494,7 @@ void blk_mq_requeue_request(struct request *rq, bool kick_requeue_list);
>  void blk_mq_kick_requeue_list(struct request_queue *q);
>  void blk_mq_delay_kick_requeue_list(struct request_queue *q, unsigned long msecs);
>  bool blk_mq_complete_request(struct request *rq);
> +void __blk_mq_complete_request(struct request *rq);
>  bool blk_mq_bio_list_merge(struct request_queue *q, struct list_head *list,
>                            struct bio *bio, unsigned int nr_segs);
>  bool blk_mq_queue_stopped(struct request_queue *q);
> --

Looks fine:
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Christoph Hellwig May 29, 2020, 12:26 p.m. UTC | #6
On Thu, May 28, 2020 at 11:18:07AM -0700, Keith Busch wrote:
> On Thu, May 28, 2020 at 06:42:56PM +0200, Christoph Hellwig wrote:
> > I think this needs a better name.
> 
> blk_mq_do_complete_req()?

do isn't exactly descriptive, is it?

blk_mq_force_complete_request maybe?

And yes, I think for 5.9 we need to lift the error injection into the
callers, this is a mess..

Patch
diff mbox series

diff --git a/block/blk-mq.c b/block/blk-mq.c
index cac11945f602..3c61faf63e15 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -556,7 +556,7 @@  static void __blk_mq_complete_request_remote(void *data)
 	q->mq_ops->complete(rq);
 }
 
-static void __blk_mq_complete_request(struct request *rq)
+void __blk_mq_complete_request(struct request *rq)
 {
 	struct blk_mq_ctx *ctx = rq->mq_ctx;
 	struct request_queue *q = rq->q;
@@ -602,6 +602,7 @@  static void __blk_mq_complete_request(struct request *rq)
 	}
 	put_cpu();
 }
+EXPORT_SYMBOL(__blk_mq_complete_request);
 
 static void hctx_unlock(struct blk_mq_hw_ctx *hctx, int srcu_idx)
 	__releases(hctx->srcu)
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index d7307795439a..cfe7eac3764e 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -494,6 +494,7 @@  void blk_mq_requeue_request(struct request *rq, bool kick_requeue_list);
 void blk_mq_kick_requeue_list(struct request_queue *q);
 void blk_mq_delay_kick_requeue_list(struct request_queue *q, unsigned long msecs);
 bool blk_mq_complete_request(struct request *rq);
+void __blk_mq_complete_request(struct request *rq);
 bool blk_mq_bio_list_merge(struct request_queue *q, struct list_head *list,
 			   struct bio *bio, unsigned int nr_segs);
 bool blk_mq_queue_stopped(struct request_queue *q);