diff options
-rw-r--r-- | block/blk-core.c | 10 | ||||
-rw-r--r-- | block/blk-stat.c | 3 |
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) | |||
776 | fail_ref: | 780 | fail_ref: |
777 | percpu_ref_exit(&q->q_usage_counter); | 781 | percpu_ref_exit(&q->q_usage_counter); |
778 | fail_bdi: | 782 | fail_bdi: |
783 | blk_free_queue_stats(q->stats); | ||
784 | fail_stats: | ||
779 | bdi_put(q->backing_dev_info); | 785 | bdi_put(q->backing_dev_info); |
780 | fail_split: | 786 | fail_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 | ||
853 | int blk_init_allocated_queue(struct request_queue *q) | 859 | int 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 | ||
211 | void blk_stat_free_callback(struct blk_stat_callback *cb) | 211 | void 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 | } |
215 | EXPORT_SYMBOL_GPL(blk_stat_free_callback); | 216 | EXPORT_SYMBOL_GPL(blk_stat_free_callback); |
216 | 217 | ||