[dm-devel] [PATCH v2 4/4] brd: implement secure erase and write zeroes
Chaitanya Kulkarni
chaitanyak at nvidia.com
Wed Sep 21 05:03:15 UTC 2022
> /*
> @@ -300,23 +303,34 @@ out:
>
> void brd_do_discard(struct brd_device *brd, struct bio *bio)
> {
> - sector_t sector, len, front_pad;
> + bool zero_padding;
> + sector_t sector, len, front_pad, end_pad;
>
> if (unlikely(!discard)) {
> bio->bi_status = BLK_STS_NOTSUPP;
> return;
> }
>
> + zero_padding = bio_op(bio) == REQ_OP_SECURE_ERASE || bio_op(bio) == REQ_OP_WRITE_ZEROES;
> sector = bio->bi_iter.bi_sector;
> len = bio_sectors(bio);
> front_pad = -sector & (PAGE_SECTORS - 1);
> +
> + if (zero_padding && unlikely(front_pad != 0))
> + copy_to_brd(brd, page_address(ZERO_PAGE(0)), sector, min(len, front_pad) << SECTOR_SHIFT);
> +
> sector += front_pad;
> if (unlikely(len <= front_pad))
> return;
> len -= front_pad;
> - len = round_down(len, PAGE_SECTORS);
> +
> + end_pad = len & (PAGE_SECTORS - 1);
> + if (zero_padding && unlikely(end_pad != 0))
> + copy_to_brd(brd, page_address(ZERO_PAGE(0)), sector + len - end_pad, end_pad << SECTOR_SHIFT);
> + len -= end_pad;
> +
>
Is it possible to avoid these long lines ?
-ck
More information about the dm-devel
mailing list