diff options
-rw-r--r-- | drivers/md/dm-cache-target.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c index 14256b7fce79..db0944465127 100644 --- a/drivers/md/dm-cache-target.c +++ b/drivers/md/dm-cache-target.c | |||
@@ -1010,13 +1010,15 @@ static void overwrite_endio(struct bio *bio, int err) | |||
1010 | struct per_bio_data *pb = get_per_bio_data(bio, pb_data_size); | 1010 | struct per_bio_data *pb = get_per_bio_data(bio, pb_data_size); |
1011 | unsigned long flags; | 1011 | unsigned long flags; |
1012 | 1012 | ||
1013 | dm_unhook_bio(&pb->hook_info, bio); | ||
1014 | |||
1013 | if (err) | 1015 | if (err) |
1014 | mg->err = true; | 1016 | mg->err = true; |
1015 | 1017 | ||
1018 | mg->requeue_holder = false; | ||
1019 | |||
1016 | spin_lock_irqsave(&cache->lock, flags); | 1020 | spin_lock_irqsave(&cache->lock, flags); |
1017 | list_add_tail(&mg->list, &cache->completed_migrations); | 1021 | list_add_tail(&mg->list, &cache->completed_migrations); |
1018 | dm_unhook_bio(&pb->hook_info, bio); | ||
1019 | mg->requeue_holder = false; | ||
1020 | spin_unlock_irqrestore(&cache->lock, flags); | 1022 | spin_unlock_irqrestore(&cache->lock, flags); |
1021 | 1023 | ||
1022 | wake_worker(cache); | 1024 | wake_worker(cache); |