mirror of https://gitee.com/openkylin/linux.git
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: Christoph Hellwig <hch@lst.de> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
3deff1a70d
commit
0f5d690f7b
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue