public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1 next 0/4] blk-mq: misc changes
@ 2014-04-19 10:00 Ming Lei
  2014-04-19 10:00 ` [PATCH v1 next 1/4] blk-mq: free hctx->ctx_map when init failed Ming Lei
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Ming Lei @ 2014-04-19 10:00 UTC (permalink / raw)
  To: Jens Axboe, linux-kernel; +Cc: Christoph Hellwig

Hi,

Three of them are fixes, another one is cleanup.

V1:
	- line break(2/4)
	- use explicit cast(3/4)

Thanks,
--
Ming Lei


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v1 next 1/4] blk-mq: free hctx->ctx_map when init failed
  2014-04-19 10:00 [PATCH v1 next 0/4] blk-mq: misc changes Ming Lei
@ 2014-04-19 10:00 ` Ming Lei
  2014-04-19 10:00 ` [PATCH v1 next 2/4] blk-mq: fix allocation of set->tags Ming Lei
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Ming Lei @ 2014-04-19 10:00 UTC (permalink / raw)
  To: Jens Axboe, linux-kernel; +Cc: Christoph Hellwig, Ming Lei

Avoid memory leak in the failure path.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
---
 block/blk-mq.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/block/blk-mq.c b/block/blk-mq.c
index ee225cc..5fbbb22 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -1289,6 +1289,7 @@ static int blk_mq_init_hw_queues(struct request_queue *q,
 
 		blk_mq_unregister_cpu_notifier(&hctx->cpu_notifier);
 		kfree(hctx->ctxs);
+		kfree(hctx->ctx_map);
 	}
 
 	return 1;
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v1 next 2/4] blk-mq: fix allocation of set->tags
  2014-04-19 10:00 [PATCH v1 next 0/4] blk-mq: misc changes Ming Lei
  2014-04-19 10:00 ` [PATCH v1 next 1/4] blk-mq: free hctx->ctx_map when init failed Ming Lei
@ 2014-04-19 10:00 ` Ming Lei
  2014-04-19 10:00 ` [PATCH v1 next 3/4] blk-mq: user (1 << order) to implement order_to_size() Ming Lei
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Ming Lei @ 2014-04-19 10:00 UTC (permalink / raw)
  To: Jens Axboe, linux-kernel; +Cc: Christoph Hellwig, Ming Lei

type of set->tags is struct blk_mq_tags **.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
---
 block/blk-mq.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/block/blk-mq.c b/block/blk-mq.c
index 5fbbb22..c277797 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -1537,7 +1537,8 @@ int blk_mq_alloc_tag_set(struct blk_mq_tag_set *set)
 		return -EINVAL;
 
 
-	set->tags = kmalloc_node(set->nr_hw_queues * sizeof(struct blk_mq_tags),
+	set->tags = kmalloc_node(set->nr_hw_queues *
+				 sizeof(struct blk_mq_tags *),
 				 GFP_KERNEL, set->numa_node);
 	if (!set->tags)
 		goto out;
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v1 next 3/4] blk-mq: user (1 << order) to implement order_to_size()
  2014-04-19 10:00 [PATCH v1 next 0/4] blk-mq: misc changes Ming Lei
  2014-04-19 10:00 ` [PATCH v1 next 1/4] blk-mq: free hctx->ctx_map when init failed Ming Lei
  2014-04-19 10:00 ` [PATCH v1 next 2/4] blk-mq: fix allocation of set->tags Ming Lei
@ 2014-04-19 10:00 ` Ming Lei
  2014-04-19 10:00 ` [PATCH v1 next 4/4] blk-mq: initialize req->q in allocation Ming Lei
  2014-04-22  1:03 ` [PATCH v1 next 0/4] blk-mq: misc changes Jens Axboe
  4 siblings, 0 replies; 7+ messages in thread
From: Ming Lei @ 2014-04-19 10:00 UTC (permalink / raw)
  To: Jens Axboe, linux-kernel
  Cc: Christoph Hellwig, Ming Lei, Jörg-Volker Peetz, Max Filippov

Cc: Jörg-Volker Peetz <jvpeetz@web.de>
Cc: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
---
 block/blk-mq.c |    7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/block/blk-mq.c b/block/blk-mq.c
index c277797..3a560a4 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -1130,12 +1130,7 @@ static void blk_mq_free_rq_map(struct blk_mq_tag_set *set,
 
 static size_t order_to_size(unsigned int order)
 {
-	size_t ret = PAGE_SIZE;
-
-	while (order--)
-		ret *= 2;
-
-	return ret;
+	return (size_t)PAGE_SIZE << order;
 }
 
 static struct blk_mq_tags *blk_mq_init_rq_map(struct blk_mq_tag_set *set,
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v1 next 4/4] blk-mq: initialize req->q in allocation
  2014-04-19 10:00 [PATCH v1 next 0/4] blk-mq: misc changes Ming Lei
                   ` (2 preceding siblings ...)
  2014-04-19 10:00 ` [PATCH v1 next 3/4] blk-mq: user (1 << order) to implement order_to_size() Ming Lei
@ 2014-04-19 10:00 ` Ming Lei
  2014-04-22  1:03 ` [PATCH v1 next 0/4] blk-mq: misc changes Jens Axboe
  4 siblings, 0 replies; 7+ messages in thread
From: Ming Lei @ 2014-04-19 10:00 UTC (permalink / raw)
  To: Jens Axboe, linux-kernel; +Cc: Christoph Hellwig, Ming Lei

The patch basically reverts the patch of(blk-mq:
initialize request on allocation) in Jens's tree(already
in -next), and only initialize req->q in allocation
for two reasons:

	- presumed cache hotness on completion
	- blk_rq_tagged(rq) depends on reset of req->mq_ctx

Signed-off-by: Ming Lei <tom.leiming@gmail.com>
---
 block/blk-mq.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/block/blk-mq.c b/block/blk-mq.c
index 3a560a4..c26b3be 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -82,7 +82,6 @@ static struct request *__blk_mq_alloc_request(struct blk_mq_hw_ctx *hctx,
 	tag = blk_mq_get_tag(hctx->tags, gfp, reserved);
 	if (tag != BLK_MQ_TAG_FAIL) {
 		rq = hctx->tags->rqs[tag];
-		blk_rq_init(hctx->queue, rq);
 		rq->tag = tag;
 
 		return rq;
@@ -187,6 +186,7 @@ static void blk_mq_rq_ctx_init(struct request_queue *q, struct blk_mq_ctx *ctx,
 	if (blk_queue_io_stat(q))
 		rw_flags |= REQ_IO_STAT;
 
+	rq->q = q;
 	rq->mq_ctx = ctx;
 	rq->cmd_flags = rw_flags;
 	rq->start_time = jiffies;
@@ -258,6 +258,7 @@ static void __blk_mq_free_request(struct blk_mq_hw_ctx *hctx,
 	const int tag = rq->tag;
 	struct request_queue *q = rq->q;
 
+	blk_rq_init(hctx->queue, rq);
 	blk_mq_put_tag(hctx->tags, tag);
 	blk_mq_queue_exit(q);
 }
@@ -1194,6 +1195,7 @@ static struct blk_mq_tags *blk_mq_init_rq_map(struct blk_mq_tag_set *set,
 		left -= to_do * rq_size;
 		for (j = 0; j < to_do; j++) {
 			tags->rqs[i] = p;
+			blk_rq_init(NULL, tags->rqs[i]);
 			if (set->ops->init_request) {
 				if (set->ops->init_request(set->driver_data,
 						tags->rqs[i], hctx_idx, i,
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v1 next 0/4] blk-mq: misc changes
  2014-04-19 10:00 [PATCH v1 next 0/4] blk-mq: misc changes Ming Lei
                   ` (3 preceding siblings ...)
  2014-04-19 10:00 ` [PATCH v1 next 4/4] blk-mq: initialize req->q in allocation Ming Lei
@ 2014-04-22  1:03 ` Jens Axboe
  2014-04-22  1:25   ` Ming Lei
  4 siblings, 1 reply; 7+ messages in thread
From: Jens Axboe @ 2014-04-22  1:03 UTC (permalink / raw)
  To: Ming Lei, linux-kernel; +Cc: Christoph Hellwig

On 2014-04-19 04:00, Ming Lei wrote:
> Hi,
>
> Three of them are fixes, another one is cleanup.
>
> V1:
> 	- line break(2/4)
> 	- use explicit cast(3/4)

I believe this is v2, but I guess your first posting was v0 :-)
Applied for testing for 3.16, thanks.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v1 next 0/4] blk-mq: misc changes
  2014-04-22  1:03 ` [PATCH v1 next 0/4] blk-mq: misc changes Jens Axboe
@ 2014-04-22  1:25   ` Ming Lei
  0 siblings, 0 replies; 7+ messages in thread
From: Ming Lei @ 2014-04-22  1:25 UTC (permalink / raw)
  To: Jens Axboe; +Cc: Linux Kernel Mailing List, Christoph Hellwig

On Tue, Apr 22, 2014 at 9:03 AM, Jens Axboe <axboe@kernel.dk> wrote:
> On 2014-04-19 04:00, Ming Lei wrote:
>>
>> Hi,
>>
>> Three of them are fixes, another one is cleanup.
>>
>> V1:
>>         - line break(2/4)
>>         - use explicit cast(3/4)
>
>
> I believe this is v2, but I guess your first posting was v0 :-)
> Applied for testing for 3.16, thanks.

Yeah, it is the C programming style, :-)

Thanks,
-- 
Ming Lei

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-04-22  1:25 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-19 10:00 [PATCH v1 next 0/4] blk-mq: misc changes Ming Lei
2014-04-19 10:00 ` [PATCH v1 next 1/4] blk-mq: free hctx->ctx_map when init failed Ming Lei
2014-04-19 10:00 ` [PATCH v1 next 2/4] blk-mq: fix allocation of set->tags Ming Lei
2014-04-19 10:00 ` [PATCH v1 next 3/4] blk-mq: user (1 << order) to implement order_to_size() Ming Lei
2014-04-19 10:00 ` [PATCH v1 next 4/4] blk-mq: initialize req->q in allocation Ming Lei
2014-04-22  1:03 ` [PATCH v1 next 0/4] blk-mq: misc changes Jens Axboe
2014-04-22  1:25   ` Ming Lei

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox