===================================================================
@@ -565,22 +565,11 @@ static int verity_verify_io(struct dm_ve
bool is_zero;
struct dm_verity *v = io->v;
struct bvec_iter start;
- struct bvec_iter iter_copy;
- struct bvec_iter *iter;
+ struct bvec_iter iter_copy = io->iter;
struct crypto_wait wait;
struct bio *bio = dm_bio_from_per_bio_data(io, v->ti->per_io_data_size);
unsigned int b;
- if (static_branch_unlikely(&use_tasklet_enabled) && io->in_tasklet) {
- /*
- * Copy the iterator in case we need to restart
- * verification in a work-queue.
- */
- iter_copy = io->iter;
- iter = &iter_copy;
- } else
- iter = &io->iter;
-
for (b = 0; b < io->n_blocks; b++) {
int r;
sector_t cur_block = io->block + b;
@@ -588,7 +577,7 @@ static int verity_verify_io(struct dm_ve
if (v->validated_blocks && bio->bi_status == BLK_STS_OK &&
likely(test_bit(cur_block, v->validated_blocks))) {
- verity_bv_skip_block(v, io, iter);
+ verity_bv_skip_block(v, io, &iter_copy);
continue;
}
@@ -603,7 +592,7 @@ static int verity_verify_io(struct dm_ve
* If we expect a zero block, don't validate, just
* return zeros.
*/
- r = verity_for_bv_block(v, io, iter,
+ r = verity_for_bv_block(v, io, &iter_copy,
verity_bv_zero);
if (unlikely(r < 0))
return r;
@@ -615,8 +604,8 @@ static int verity_verify_io(struct dm_ve
if (unlikely(r < 0))
return r;
- start = *iter;
- r = verity_for_io_block(v, io, iter, &wait);
+ start = iter_copy;
+ r = verity_for_io_block(v, io, &iter_copy, &wait);
if (unlikely(r < 0))
return r;
The patch e9307e3deb52 was supposed to be an optimization, but it actually increases the size of the function verity_verify_io (by 112 bytes), so let's revert it. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> --- drivers/md/dm-verity-target.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-)