summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--block/blk-core.c10
-rw-r--r--block/blk-stat.c3
2 files changed, 8 insertions, 5 deletions
diff --git a/block/blk-core.c b/block/blk-core.c
index 78d04ddededc..ad388d5e309a 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -720,6 +720,10 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
720 if (!q->backing_dev_info) 720 if (!q->backing_dev_info)
721 goto fail_split; 721 goto fail_split;
722 722
723 q->stats = blk_alloc_queue_stats();
724 if (!q->stats)
725 goto fail_stats;
726
723 q->backing_dev_info->ra_pages = 727 q->backing_dev_info->ra_pages =
724 (VM_MAX_READAHEAD * 1024) / PAGE_SIZE; 728 (VM_MAX_READAHEAD * 1024) / PAGE_SIZE;
725 q->backing_dev_info->capabilities = BDI_CAP_CGROUP_WRITEBACK; 729 q->backing_dev_info->capabilities = BDI_CAP_CGROUP_WRITEBACK;
@@ -776,6 +780,8 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
776fail_ref: 780fail_ref:
777 percpu_ref_exit(&q->q_usage_counter); 781 percpu_ref_exit(&q->q_usage_counter);
778fail_bdi: 782fail_bdi:
783 blk_free_queue_stats(q->stats);
784fail_stats:
779 bdi_put(q->backing_dev_info); 785 bdi_put(q->backing_dev_info);
780fail_split: 786fail_split:
781 bioset_free(q->bio_split); 787 bioset_free(q->bio_split);
@@ -852,10 +858,6 @@ static blk_qc_t blk_queue_bio(struct request_queue *q, struct bio *bio);
852 858
853int blk_init_allocated_queue(struct request_queue *q) 859int blk_init_allocated_queue(struct request_queue *q)
854{ 860{
855 q->stats = blk_alloc_queue_stats();
856 if (!q->stats)
857 return -ENOMEM;
858
859 q->fq = blk_alloc_flush_queue(q, NUMA_NO_NODE, q->cmd_size); 861 q->fq = blk_alloc_flush_queue(q, NUMA_NO_NODE, q->cmd_size);
860 if (!q->fq) 862 if (!q->fq)
861 return -ENOMEM; 863 return -ENOMEM;
diff --git a/block/blk-stat.c b/block/blk-stat.c
index 0d8721a60db9..188b535cf4d6 100644
--- a/block/blk-stat.c
+++ b/block/blk-stat.c
@@ -210,7 +210,8 @@ static void blk_stat_free_callback_rcu(struct rcu_head *head)
210 210
211void blk_stat_free_callback(struct blk_stat_callback *cb) 211void blk_stat_free_callback(struct blk_stat_callback *cb)
212{ 212{
213 call_rcu(&cb->rcu, blk_stat_free_callback_rcu); 213 if (cb)
214 call_rcu(&cb->rcu, blk_stat_free_callback_rcu);
214} 215}
215EXPORT_SYMBOL_GPL(blk_stat_free_callback); 216EXPORT_SYMBOL_GPL(blk_stat_free_callback);
216 217