diff options
Diffstat (limited to 'block/bfq-iosched.c')
-rw-r--r-- | block/bfq-iosched.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c index 115747fe43c8..70f9177c4f5b 100644 --- a/block/bfq-iosched.c +++ b/block/bfq-iosched.c | |||
@@ -3725,16 +3725,10 @@ void bfq_put_queue(struct bfq_queue *bfqq) | |||
3725 | if (bfqq->ref) | 3725 | if (bfqq->ref) |
3726 | return; | 3726 | return; |
3727 | 3727 | ||
3728 | if (bfq_bfqq_sync(bfqq)) | 3728 | if (bfq_bfqq_sync(bfqq) && !hlist_unhashed(&bfqq->burst_list_node)) { |
3729 | /* | ||
3730 | * The fact that this queue is being destroyed does not | ||
3731 | * invalidate the fact that this queue may have been | ||
3732 | * activated during the current burst. As a consequence, | ||
3733 | * although the queue does not exist anymore, and hence | ||
3734 | * needs to be removed from the burst list if there, | ||
3735 | * the burst size has not to be decremented. | ||
3736 | */ | ||
3737 | hlist_del_init(&bfqq->burst_list_node); | 3729 | hlist_del_init(&bfqq->burst_list_node); |
3730 | bfqq->bfqd->burst_size--; | ||
3731 | } | ||
3738 | 3732 | ||
3739 | kmem_cache_free(bfq_pool, bfqq); | 3733 | kmem_cache_free(bfq_pool, bfqq); |
3740 | #ifdef CONFIG_BFQ_GROUP_IOSCHED | 3734 | #ifdef CONFIG_BFQ_GROUP_IOSCHED |