Re: [PATCH] blk-mq: move the kdump check to blk_mq_alloc_tag_set

2014-11-30 Thread Jens Axboe

On 11/30/2014 05:00 PM, Shaohua Li wrote:

We call blk_mq_alloc_tag_set() first then blk_mq_init_queue(). The requests are
allocated in the former function. So the kdump check should be moved to there
to really save memory.


Strange, it was even tested, but must have been altered after the fact. 
Patch looks good to me, applied.


--
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] blk-mq: move the kdump check to blk_mq_alloc_tag_set

2014-11-30 Thread Shaohua Li
We call blk_mq_alloc_tag_set() first then blk_mq_init_queue(). The requests are
allocated in the former function. So the kdump check should be moved to there
to really save memory.

Signed-off-by: Shaohua Li 
---
 block/blk-mq.c | 20 ++--
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/block/blk-mq.c b/block/blk-mq.c
index 1d016fc..d5b4643 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -1784,16 +1784,6 @@ struct request_queue *blk_mq_init_queue(struct 
blk_mq_tag_set *set)
if (!ctx)
return ERR_PTR(-ENOMEM);
 
-   /*
-* If a crashdump is active, then we are potentially in a very
-* memory constrained environment. Limit us to 1 queue and
-* 64 tags to prevent using too much memory.
-*/
-   if (is_kdump_kernel()) {
-   set->nr_hw_queues = 1;
-   set->queue_depth = min(64U, set->queue_depth);
-   }
-
hctxs = kmalloc_node(set->nr_hw_queues * sizeof(*hctxs), GFP_KERNEL,
set->numa_node);
 
@@ -2065,6 +2055,16 @@ int blk_mq_alloc_tag_set(struct blk_mq_tag_set *set)
set->queue_depth = BLK_MQ_MAX_DEPTH;
}
 
+   /*
+* If a crashdump is active, then we are potentially in a very
+* memory constrained environment. Limit us to 1 queue and
+* 64 tags to prevent using too much memory.
+*/
+   if (is_kdump_kernel()) {
+   set->nr_hw_queues = 1;
+   set->queue_depth = min(64U, set->queue_depth);
+   }
+
set->tags = kmalloc_node(set->nr_hw_queues *
 sizeof(struct blk_mq_tags *),
 GFP_KERNEL, set->numa_node);
-- 
1.8.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/