|
@@ -988,10 +988,14 @@ static void migration_success_post_commit(struct dm_cache_migration *mg)
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
- clear_dirty(cache, mg->new_oblock, mg->cblock);
|
|
|
- if (mg->requeue_holder)
|
|
|
+ if (mg->requeue_holder) {
|
|
|
+ clear_dirty(cache, mg->new_oblock, mg->cblock);
|
|
|
cell_defer(cache, mg->new_ocell, true);
|
|
|
- else {
|
|
|
+ } else {
|
|
|
+ /*
|
|
|
+ * The block was promoted via an overwrite, so it's dirty.
|
|
|
+ */
|
|
|
+ set_dirty(cache, mg->new_oblock, mg->cblock);
|
|
|
bio_endio(mg->new_ocell->holder, 0);
|
|
|
cell_defer(cache, mg->new_ocell, false);
|
|
|
}
|