aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/lightnvm/pblk-core.c
diff options
context:
space:
mode:
authorJavier González <javier@cnexlabs.com>2017-10-13 08:46:16 -0400
committerJens Axboe <axboe@kernel.dk>2017-10-13 10:34:57 -0400
commit55e836d401601e7903b36db015ce899dc11085ab (patch)
tree89608679816f984002cfd0944af27cd3eecc9b2a /drivers/lightnvm/pblk-core.c
parent2a19b10d423c6dc47449e905ed3a8eabb49c48a0 (diff)
lightnvm: pblk: put bio on bio completion
Simplify put bio by doing it on bio end_io instead of manually putting it on the completion path. Signed-off-by: Javier González <javier@cnexlabs.com> Signed-off-by: Matias Bjørling <m@bjorling.me> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/lightnvm/pblk-core.c')
-rw-r--r--drivers/lightnvm/pblk-core.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c
index 6dd4866e579c..3d27d24baa0b 100644
--- a/drivers/lightnvm/pblk-core.c
+++ b/drivers/lightnvm/pblk-core.c
@@ -417,6 +417,11 @@ int pblk_submit_io(struct pblk *pblk, struct nvm_rq *rqd)
417 return nvm_submit_io(dev, rqd); 417 return nvm_submit_io(dev, rqd);
418} 418}
419 419
420static void pblk_bio_map_addr_endio(struct bio *bio)
421{
422 bio_put(bio);
423}
424
420struct bio *pblk_bio_map_addr(struct pblk *pblk, void *data, 425struct bio *pblk_bio_map_addr(struct pblk *pblk, void *data,
421 unsigned int nr_secs, unsigned int len, 426 unsigned int nr_secs, unsigned int len,
422 int alloc_type, gfp_t gfp_mask) 427 int alloc_type, gfp_t gfp_mask)
@@ -453,6 +458,8 @@ struct bio *pblk_bio_map_addr(struct pblk *pblk, void *data,
453 458
454 kaddr += PAGE_SIZE; 459 kaddr += PAGE_SIZE;
455 } 460 }
461
462 bio->bi_end_io = pblk_bio_map_addr_endio;
456out: 463out:
457 return bio; 464 return bio;
458} 465}
@@ -671,9 +678,6 @@ next_rq:
671 atomic_dec(&pblk->inflight_io); 678 atomic_dec(&pblk->inflight_io);
672 reinit_completion(&wait); 679 reinit_completion(&wait);
673 680
674 if (likely(pblk->l_mg.emeta_alloc_type == PBLK_VMALLOC_META))
675 bio_put(bio);
676
677 if (rqd.error) { 681 if (rqd.error) {
678 if (dir == WRITE) 682 if (dir == WRITE)
679 pblk_log_write_err(pblk, &rqd); 683 pblk_log_write_err(pblk, &rqd);