Revert "dm cache: do not wake_worker() in free_migration()"
authorMike Snitzer <snitzer@redhat.com>
Wed, 29 Jul 2015 18:11:28 +0000 (14:11 -0400)
committerMike Snitzer <snitzer@redhat.com>
Wed, 29 Jul 2015 18:32:08 +0000 (14:32 -0400)
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>
drivers/md/dm-cache-target.c

index b680da5d7b93b5f68d65c0449df1b87b8e1b528b..64e96a2bed589e48d831dabbcdcbe42aa8334323 100644 (file)
@@ -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)