diff options
author | Javier González <jg@lightnvm.io> | 2016-11-29 00:39:13 +0300 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2016-11-29 22:12:51 +0300 |
commit | da2d7cb828ce2714c603827ac5a6e1c98a02e861 (patch) | |
tree | bd15a53bc10f800acf7b9d8e2f37bcf105e369bb /drivers/lightnvm/core.c | |
parent | a279006afa3377493c4240395c70430f2a9b0d2b (diff) | |
download | linux-da2d7cb828ce2714c603827ac5a6e1c98a02e861.tar.xz |
lightnvm: use target nvm on target-specific ops.
On target-specific operations pass on nvm_tgt_dev instead of the generic
nvm device.
Signed-off-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers/lightnvm/core.c')
-rw-r--r-- | drivers/lightnvm/core.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c index 3d8eaac99ba8..07bf989d2f77 100644 --- a/drivers/lightnvm/core.c +++ b/drivers/lightnvm/core.c @@ -86,8 +86,7 @@ void *nvm_dev_dma_alloc(struct nvm_dev *dev, gfp_t mem_flags, } EXPORT_SYMBOL(nvm_dev_dma_alloc); -void nvm_dev_dma_free(struct nvm_dev *dev, void *addr, - dma_addr_t dma_handler) +void nvm_dev_dma_free(struct nvm_dev *dev, void *addr, dma_addr_t dma_handler) { dev->ops->dev_dma_free(dev->dma_pool, addr, dma_handler); } @@ -227,9 +226,11 @@ int nvm_erase_blk(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *p, int flags) } EXPORT_SYMBOL(nvm_erase_blk); -int nvm_get_l2p_tbl(struct nvm_dev *dev, u64 slba, u32 nlb, +int nvm_get_l2p_tbl(struct nvm_tgt_dev *tgt_dev, u64 slba, u32 nlb, nvm_l2p_update_fn *update_l2p, void *priv) { + struct nvm_dev *dev = tgt_dev->parent; + if (!dev->ops->get_l2p_tbl) return 0; @@ -237,14 +238,18 @@ int nvm_get_l2p_tbl(struct nvm_dev *dev, u64 slba, u32 nlb, } EXPORT_SYMBOL(nvm_get_l2p_tbl); -int nvm_get_area(struct nvm_dev *dev, sector_t *lba, sector_t len) +int nvm_get_area(struct nvm_tgt_dev *tgt_dev, sector_t *lba, sector_t len) { + struct nvm_dev *dev = tgt_dev->parent; + return dev->mt->get_area(dev, lba, len); } EXPORT_SYMBOL(nvm_get_area); -void nvm_put_area(struct nvm_dev *dev, sector_t lba) +void nvm_put_area(struct nvm_tgt_dev *tgt_dev, sector_t lba) { + struct nvm_dev *dev = tgt_dev->parent; + dev->mt->put_area(dev, lba); } EXPORT_SYMBOL(nvm_put_area); |