|
@@ -775,10 +775,11 @@ static void bfq_pd_offline(struct blkg_policy_data *pd)
|
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
|
int i;
|
|
int i;
|
|
|
|
|
|
|
|
|
|
+ spin_lock_irqsave(&bfqd->lock, flags);
|
|
|
|
|
+
|
|
|
if (!entity) /* root group */
|
|
if (!entity) /* root group */
|
|
|
- return;
|
|
|
|
|
|
|
+ goto put_async_queues;
|
|
|
|
|
|
|
|
- spin_lock_irqsave(&bfqd->lock, flags);
|
|
|
|
|
/*
|
|
/*
|
|
|
* Empty all service_trees belonging to this group before
|
|
* Empty all service_trees belonging to this group before
|
|
|
* deactivating the group itself.
|
|
* deactivating the group itself.
|
|
@@ -809,6 +810,8 @@ static void bfq_pd_offline(struct blkg_policy_data *pd)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
__bfq_deactivate_entity(entity, false);
|
|
__bfq_deactivate_entity(entity, false);
|
|
|
|
|
+
|
|
|
|
|
+put_async_queues:
|
|
|
bfq_put_async_queues(bfqd, bfqg);
|
|
bfq_put_async_queues(bfqd, bfqg);
|
|
|
|
|
|
|
|
spin_unlock_irqrestore(&bfqd->lock, flags);
|
|
spin_unlock_irqrestore(&bfqd->lock, flags);
|