summaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-io.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2017-04-05 13:21:04 -0400
committerJens Axboe <axboe@fb.com>2017-04-08 13:25:38 -0400
commit0f5d690f7bf1b1a5354c61ac5b9d69a4329e218f (patch)
treeaa5dc525cfa91d3758d8cabc5de2edcfc077af34 /drivers/md/dm-io.c
parent3deff1a70d5901342f460f8cc36e5d0c5d51c319 (diff)
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>
Diffstat (limited to 'drivers/md/dm-io.c')
-rw-r--r--drivers/md/dm-io.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/md/dm-io.c b/drivers/md/dm-io.c
index 03940bf36f6c..b808cbe22678 100644
--- a/drivers/md/dm-io.c
+++ b/drivers/md/dm-io.c
@@ -328,11 +328,17 @@ static void do_region(int op, int op_flags, unsigned region,
328 /* 328 /*
329 * Allocate a suitably sized-bio. 329 * Allocate a suitably sized-bio.
330 */ 330 */
331 if ((op == REQ_OP_DISCARD) || (op == REQ_OP_WRITE_SAME)) 331 switch (op) {
332 case REQ_OP_DISCARD:
333 num_bvecs = 0;
334 break;
335 case REQ_OP_WRITE_SAME:
332 num_bvecs = 1; 336 num_bvecs = 1;
333 else 337 break;
338 default:
334 num_bvecs = min_t(int, BIO_MAX_PAGES, 339 num_bvecs = min_t(int, BIO_MAX_PAGES,
335 dm_sector_div_up(remaining, (PAGE_SIZE >> SECTOR_SHIFT))); 340 dm_sector_div_up(remaining, (PAGE_SIZE >> SECTOR_SHIFT)));
341 }
336 342
337 bio = bio_alloc_bioset(GFP_NOIO, num_bvecs, io->client->bios); 343 bio = bio_alloc_bioset(GFP_NOIO, num_bvecs, io->client->bios);
338 bio->bi_iter.bi_sector = where->sector + (where->count - remaining); 344 bio->bi_iter.bi_sector = where->sector + (where->count - remaining);