diff options
| author | Javier González <javier@cnexlabs.com> | 2017-10-13 08:46:16 -0400 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2017-10-13 10:34:57 -0400 |
| commit | 55e836d401601e7903b36db015ce899dc11085ab (patch) | |
| tree | 89608679816f984002cfd0944af27cd3eecc9b2a /drivers/lightnvm/pblk-core.c | |
| parent | 2a19b10d423c6dc47449e905ed3a8eabb49c48a0 (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.c | 10 |
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 | ||
| 420 | static void pblk_bio_map_addr_endio(struct bio *bio) | ||
| 421 | { | ||
| 422 | bio_put(bio); | ||
| 423 | } | ||
| 424 | |||
| 420 | struct bio *pblk_bio_map_addr(struct pblk *pblk, void *data, | 425 | struct 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; | ||
| 456 | out: | 463 | out: |
| 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); |
