diff options
author | Mike Snitzer <snitzer@redhat.com> | 2015-07-29 14:11:28 -0400 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2015-07-29 14:32:08 -0400 |
commit | 3508e6590d4729ac07f01f7ae2256c2f9dc738b8 (patch) | |
tree | 46cbef379c3f3b9a37cc59ff2c9fe5fb6c7d6694 /drivers/md/dm-cache-target.c | |
parent | 6ed443c07f1e7f819983422b16598facb152250d (diff) | |
download | op-kernel-dev-3508e6590d4729ac07f01f7ae2256c2f9dc738b8.zip op-kernel-dev-3508e6590d4729ac07f01f7ae2256c2f9dc738b8.tar.gz |
Revert "dm cache: do not wake_worker() in free_migration()"
This reverts commit 386cb7cdeeef97e0bf082a8d6bbfc07a2ccce07b.
Taking the wake_worker() out of free_migration() will slow writeback
dramatically, and hence adaptability.
Say we have 10k blocks that need writing back, but are only able to
issue 5 concurrently due to the migration bandwidth: it's imperative
that we wake_worker() immediately after migration completion; waiting
for the next 1 second wake up (via do_waker) means it'll take a long
time to write that all back.
Reported-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/dm-cache-target.c')
-rw-r--r-- | drivers/md/dm-cache-target.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c index b680da5..64e96a2 100644 --- a/drivers/md/dm-cache-target.c +++ b/drivers/md/dm-cache-target.c @@ -424,6 +424,7 @@ static void free_migration(struct dm_cache_migration *mg) wake_up(&cache->migration_wait); mempool_free(mg, cache->migration_pool); + wake_worker(cache); } static int prealloc_data_structs(struct cache *cache, struct prealloc *p) |