|
@@ -2210,12 +2210,12 @@ static int blk_mq_init_hctx(struct request_queue *q,
|
|
|
* runtime
|
|
|
*/
|
|
|
hctx->ctxs = kmalloc_array_node(nr_cpu_ids, sizeof(void *),
|
|
|
- GFP_KERNEL, node);
|
|
|
+ GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY, node);
|
|
|
if (!hctx->ctxs)
|
|
|
goto unregister_cpu_notifier;
|
|
|
|
|
|
- if (sbitmap_init_node(&hctx->ctx_map, nr_cpu_ids, ilog2(8), GFP_KERNEL,
|
|
|
- node))
|
|
|
+ if (sbitmap_init_node(&hctx->ctx_map, nr_cpu_ids, ilog2(8),
|
|
|
+ GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY, node))
|
|
|
goto free_ctxs;
|
|
|
|
|
|
hctx->nr_ctx = 0;
|
|
@@ -2228,7 +2228,8 @@ static int blk_mq_init_hctx(struct request_queue *q,
|
|
|
set->ops->init_hctx(hctx, set->driver_data, hctx_idx))
|
|
|
goto free_bitmap;
|
|
|
|
|
|
- hctx->fq = blk_alloc_flush_queue(q, hctx->numa_node, set->cmd_size);
|
|
|
+ hctx->fq = blk_alloc_flush_queue(q, hctx->numa_node, set->cmd_size,
|
|
|
+ GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY);
|
|
|
if (!hctx->fq)
|
|
|
goto exit_hctx;
|
|
|
|
|
@@ -2536,12 +2537,14 @@ static void blk_mq_realloc_hw_ctxs(struct blk_mq_tag_set *set,
|
|
|
|
|
|
node = blk_mq_hw_queue_to_node(q->mq_map, i);
|
|
|
hctxs[i] = kzalloc_node(blk_mq_hw_ctx_size(set),
|
|
|
- GFP_KERNEL, node);
|
|
|
+ GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY,
|
|
|
+ node);
|
|
|
if (!hctxs[i])
|
|
|
break;
|
|
|
|
|
|
- if (!zalloc_cpumask_var_node(&hctxs[i]->cpumask, GFP_KERNEL,
|
|
|
- node)) {
|
|
|
+ if (!zalloc_cpumask_var_node(&hctxs[i]->cpumask,
|
|
|
+ GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY,
|
|
|
+ node)) {
|
|
|
kfree(hctxs[i]);
|
|
|
hctxs[i] = NULL;
|
|
|
break;
|