|
@@ -713,7 +713,6 @@ static void blk_rq_timed_out_timer(unsigned long data)
|
|
|
struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
|
|
|
{
|
|
|
struct request_queue *q;
|
|
|
- int err;
|
|
|
|
|
|
q = kmem_cache_alloc_node(blk_requestq_cachep,
|
|
|
gfp_mask | __GFP_ZERO, node_id);
|
|
@@ -728,17 +727,16 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
|
|
|
if (!q->bio_split)
|
|
|
goto fail_id;
|
|
|
|
|
|
- q->backing_dev_info = &q->_backing_dev_info;
|
|
|
+ q->backing_dev_info = bdi_alloc_node(gfp_mask, node_id);
|
|
|
+ if (!q->backing_dev_info)
|
|
|
+ goto fail_split;
|
|
|
+
|
|
|
q->backing_dev_info->ra_pages =
|
|
|
(VM_MAX_READAHEAD * 1024) / PAGE_SIZE;
|
|
|
q->backing_dev_info->capabilities = BDI_CAP_CGROUP_WRITEBACK;
|
|
|
q->backing_dev_info->name = "block";
|
|
|
q->node = node_id;
|
|
|
|
|
|
- err = bdi_init(q->backing_dev_info);
|
|
|
- if (err)
|
|
|
- goto fail_split;
|
|
|
-
|
|
|
setup_timer(&q->backing_dev_info->laptop_mode_wb_timer,
|
|
|
laptop_mode_timer_fn, (unsigned long) q);
|
|
|
setup_timer(&q->timeout, blk_rq_timed_out_timer, (unsigned long) q);
|
|
@@ -789,7 +787,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
|
|
|
fail_ref:
|
|
|
percpu_ref_exit(&q->q_usage_counter);
|
|
|
fail_bdi:
|
|
|
- bdi_destroy(q->backing_dev_info);
|
|
|
+ bdi_put(q->backing_dev_info);
|
|
|
fail_split:
|
|
|
bioset_free(q->bio_split);
|
|
|
fail_id:
|