diff options
author | Javier González <jg@lightnvm.io> | 2017-04-15 14:55:39 -0400 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-04-16 12:06:25 -0400 |
commit | 7a3de2b33f5213c423a59aeaaae2249196b4b5cc (patch) | |
tree | a04656714a7599a143877d9db1eb2c8feda42dbd /drivers/lightnvm/core.c | |
parent | a7737f39c70d9c63ba530d6316724d7be67de541 (diff) |
lightnvm: free reverse device map
Free the reverse mapping table correctly on target tear down
Signed-off-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <matias@cnexlabs.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers/lightnvm/core.c')
-rw-r--r-- | drivers/lightnvm/core.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c index 95105c47e082..a14c52c24e23 100644 --- a/drivers/lightnvm/core.c +++ b/drivers/lightnvm/core.c | |||
@@ -411,6 +411,18 @@ err_rmap: | |||
411 | return -ENOMEM; | 411 | return -ENOMEM; |
412 | } | 412 | } |
413 | 413 | ||
414 | static void nvm_unregister_map(struct nvm_dev *dev) | ||
415 | { | ||
416 | struct nvm_dev_map *rmap = dev->rmap; | ||
417 | int i; | ||
418 | |||
419 | for (i = 0; i < dev->geo.nr_chnls; i++) | ||
420 | kfree(rmap->chnls[i].lun_offs); | ||
421 | |||
422 | kfree(rmap->chnls); | ||
423 | kfree(rmap); | ||
424 | } | ||
425 | |||
414 | static void nvm_map_to_dev(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *p) | 426 | static void nvm_map_to_dev(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *p) |
415 | { | 427 | { |
416 | struct nvm_dev_map *dev_map = tgt_dev->map; | 428 | struct nvm_dev_map *dev_map = tgt_dev->map; |
@@ -992,7 +1004,7 @@ void nvm_free(struct nvm_dev *dev) | |||
992 | if (dev->dma_pool) | 1004 | if (dev->dma_pool) |
993 | dev->ops->destroy_dma_pool(dev->dma_pool); | 1005 | dev->ops->destroy_dma_pool(dev->dma_pool); |
994 | 1006 | ||
995 | kfree(dev->rmap); | 1007 | nvm_unregister_map(dev); |
996 | kfree(dev->lptbl); | 1008 | kfree(dev->lptbl); |
997 | kfree(dev->lun_map); | 1009 | kfree(dev->lun_map); |
998 | kfree(dev); | 1010 | kfree(dev); |