aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/lightnvm/pblk-core.c
diff options
context:
space:
mode:
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);