lightnvm: support multiple ppas in nvm_erase_ppa
authorMatias Bjørling <m@bjorling.me>
Tue, 12 Jan 2016 06:49:28 +0000 (07:49 +0100)
committerJens Axboe <axboe@fb.com>
Tue, 12 Jan 2016 15:21:17 +0000 (08:21 -0700)
Sometimes a user want to erase multiple PPAs at the same time. Extend
nvm_erase_ppa to take multiple ppas and number of ppas to be erased.

Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/lightnvm/core.c
drivers/lightnvm/gennvm.c
include/linux/lightnvm.h

index 0c8f42fc5f01efa3947e3dee93f48ca834253d46..cd674af3d17d3faf224c17b4a60492d4ab8b226e 100644 (file)
@@ -265,7 +265,7 @@ void nvm_free_rqd_ppalist(struct nvm_dev *dev, struct nvm_rq *rqd)
 }
 EXPORT_SYMBOL(nvm_free_rqd_ppalist);
 
-int nvm_erase_ppa(struct nvm_dev *dev, struct ppa_addr ppa)
+int nvm_erase_ppa(struct nvm_dev *dev, struct ppa_addr *ppas, int nr_ppas)
 {
        struct nvm_rq rqd;
        int ret;
@@ -275,7 +275,7 @@ int nvm_erase_ppa(struct nvm_dev *dev, struct ppa_addr ppa)
 
        memset(&rqd, 0, sizeof(struct nvm_rq));
 
-       ret = nvm_set_rqd_ppalist(dev, &rqd, &ppa, 1);
+       ret = nvm_set_rqd_ppalist(dev, &rqd, ppas, nr_ppas);
        if (ret)
                return ret;
 
index 12ddcaa343e998be01b963326f4ad9587a66ecc9..262da6dd90568d3cb8cd73482f6a43ebc7fa02e6 100644 (file)
@@ -396,7 +396,7 @@ static int gennvm_erase_blk(struct nvm_dev *dev, struct nvm_block *blk,
 {
        struct ppa_addr addr = block_to_ppa(dev, blk);
 
-       return nvm_erase_ppa(dev, addr);
+       return nvm_erase_ppa(dev, &addr, 1);
 }
 
 static struct nvm_lun *gennvm_get_lun(struct nvm_dev *dev, int lunid)
index 9c9fe9ca0441a00421144a3e7afa6605b65fb2ac..a83298f62122d5dd2d57efdd486484d7c218aa04 100644 (file)
@@ -435,7 +435,7 @@ extern void nvm_addr_to_generic_mode(struct nvm_dev *, struct nvm_rq *);
 extern int nvm_set_rqd_ppalist(struct nvm_dev *, struct nvm_rq *,
                                                        struct ppa_addr *, int);
 extern void nvm_free_rqd_ppalist(struct nvm_dev *, struct nvm_rq *);
-extern int nvm_erase_ppa(struct nvm_dev *, struct ppa_addr);
+extern int nvm_erase_ppa(struct nvm_dev *, struct ppa_addr *, int);
 extern int nvm_erase_blk(struct nvm_dev *, struct nvm_block *);
 extern void nvm_end_io(struct nvm_rq *, int);
 #else /* CONFIG_NVM */