From: Mike Snitzer Date: Thu, 14 May 2015 15:28:37 +0000 (-0400) Subject: dm thin: cleanup schedule_zero() to read more logically X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=f8ae75253e4174089ffe3046715c679183f1919f;p=linux-beck.git dm thin: cleanup schedule_zero() to read more logically The overwrite has only ever about optimizing away the need to zero a block if the entire block was being overwritten. As such it is only relevant when zeroing is enabled. Signed-off-by: Mike Snitzer Signed-off-by: Joe Thornber --- diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c index c0fbb6c306b2..c552df7b3420 100644 --- a/drivers/md/dm-thin.c +++ b/drivers/md/dm-thin.c @@ -1086,16 +1086,14 @@ static void schedule_zero(struct thin_c *tc, dm_block_t virt_block, * zeroing pre-existing data, we can issue the bio immediately. * Otherwise we use kcopyd to zero the data first. */ - if (!pool->pf.zero_new_blocks) + if (pool->pf.zero_new_blocks) { + if (io_overwrites_block(pool, bio)) + remap_and_issue_overwrite(tc, bio, data_block, m); + else + ll_zero(tc, m, data_block * pool->sectors_per_block, + (data_block + 1) * pool->sectors_per_block); + } else process_prepared_mapping(m); - - else if (io_overwrites_block(pool, bio)) - remap_and_issue_overwrite(tc, bio, data_block, m); - - else - ll_zero(tc, m, - data_block * pool->sectors_per_block, - (data_block + 1) * pool->sectors_per_block); } static void schedule_external_copy(struct thin_c *tc, dm_block_t virt_block,