Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f5d690f authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

dm io: discards don't take a payload



Fix up do_region to not allocate a bio_vec for discards.  We've
got rid of the discard payload allocated by the caller years ago.

Obviously this wasn't actually harmful given how long it's been
there, but it's still good to avoid the pointless allocation.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 3deff1a7
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -328,11 +328,17 @@ static void do_region(int op, int op_flags, unsigned region,
		/*
		 * Allocate a suitably sized-bio.
		 */
		if ((op == REQ_OP_DISCARD) || (op == REQ_OP_WRITE_SAME))
		switch (op) {
		case REQ_OP_DISCARD:
			num_bvecs = 0;
			break;
		case REQ_OP_WRITE_SAME:
			num_bvecs = 1;
		else
			break;
		default:
			num_bvecs = min_t(int, BIO_MAX_PAGES,
					  dm_sector_div_up(remaining, (PAGE_SIZE >> SECTOR_SHIFT)));
		}

		bio = bio_alloc_bioset(GFP_NOIO, num_bvecs, io->client->bios);
		bio->bi_iter.bi_sector = where->sector + (where->count - remaining);