forked from luck/tmp_suning_uos_patched
dm thin: wake worker when discard is prepared
When discards are prepared it is best to directly wake the worker that will process them. The worker will be woken anyway, via periodic commit, but there is no reason to not wake_worker here. Signed-off-by: Joe Thornber <ejt@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
This commit is contained in:
parent
e8088073c9
commit
563af186df
@ -2676,10 +2676,13 @@ static int thin_endio(struct dm_target *ti,
|
|||||||
if (h->all_io_entry) {
|
if (h->all_io_entry) {
|
||||||
INIT_LIST_HEAD(&work);
|
INIT_LIST_HEAD(&work);
|
||||||
dm_deferred_entry_dec(h->all_io_entry, &work);
|
dm_deferred_entry_dec(h->all_io_entry, &work);
|
||||||
spin_lock_irqsave(&pool->lock, flags);
|
if (!list_empty(&work)) {
|
||||||
list_for_each_entry_safe(m, tmp, &work, list)
|
spin_lock_irqsave(&pool->lock, flags);
|
||||||
list_add(&m->list, &pool->prepared_discards);
|
list_for_each_entry_safe(m, tmp, &work, list)
|
||||||
spin_unlock_irqrestore(&pool->lock, flags);
|
list_add(&m->list, &pool->prepared_discards);
|
||||||
|
spin_unlock_irqrestore(&pool->lock, flags);
|
||||||
|
wake_worker(pool);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mempool_free(h, pool->endio_hook_pool);
|
mempool_free(h, pool->endio_hook_pool);
|
||||||
|
Loading…
Reference in New Issue
Block a user