X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=block%2Fblk-core.c;h=a7421b772d0e0e3f4b8372fbc11aefd83763d30a;hb=b425e50492583b10cceb388af36ef0bd3bdf842a;hp=c7068520794bd0ba060b905f850efaae6a8cbd36;hpb=5be6b75610cefd1e21b98a218211922c2feb6e08;p=karo-tx-linux.git diff --git a/block/blk-core.c b/block/blk-core.c index c7068520794b..a7421b772d0e 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -648,13 +648,19 @@ int blk_init_rl(struct request_list *rl, struct request_queue *q, if (!rl->rq_pool) return -ENOMEM; + if (rl != &q->root_rl) + WARN_ON_ONCE(!blk_get_queue(q)); + return 0; } -void blk_exit_rl(struct request_list *rl) +void blk_exit_rl(struct request_queue *q, struct request_list *rl) { - if (rl->rq_pool) + if (rl->rq_pool) { mempool_destroy(rl->rq_pool); + if (rl != &q->root_rl) + blk_put_queue(q); + } } struct request_queue *blk_alloc_queue(gfp_t gfp_mask)