summaryrefslogtreecommitdiffstats
path: root/drivers/lightnvm/gennvm.c
diff options
context:
space:
mode:
authorMatias Bjørling <m@bjorling.me>2015-11-16 09:34:44 -0500
committerJens Axboe <axboe@fb.com>2015-11-16 17:20:34 -0500
commit7386af270c72be65c7cb2ba4ad0d4e70dc373106 (patch)
treec7974069275f06d340ad7b14f0cb69479bad6110 /drivers/lightnvm/gennvm.c
parentc1480ad5943261e01a62eaa7132eab76f9c490e0 (diff)
lightnvm: remove linear and device addr modes
The linear and device specific address modes can be replaced with a simple offset and bit length conversion that is generic across all devices. This both simplifies the specification and removes the special case for qemu nvme, that previously relied on the linear address mapping. Signed-off-by: Matias Bjørling <m@bjorling.me> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers/lightnvm/gennvm.c')
-rw-r--r--drivers/lightnvm/gennvm.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/lightnvm/gennvm.c b/drivers/lightnvm/gennvm.c
index 8cfc0114ff13..c0d0eb2357a8 100644
--- a/drivers/lightnvm/gennvm.c
+++ b/drivers/lightnvm/gennvm.c
@@ -73,7 +73,7 @@ static int gennvm_block_bb(struct ppa_addr ppa, int nr_blocks, u8 *blks,
73 struct nvm_block *blk; 73 struct nvm_block *blk;
74 int i; 74 int i;
75 75
76 ppa = addr_to_generic_mode(gn->dev, ppa); 76 ppa = dev_to_generic_addr(gn->dev, ppa);
77 lun = &gn->luns[(dev->nr_luns * ppa.g.ch) + ppa.g.lun]; 77 lun = &gn->luns[(dev->nr_luns * ppa.g.ch) + ppa.g.lun];
78 78
79 for (i = 0; i < nr_blocks; i++) { 79 for (i = 0; i < nr_blocks; i++) {
@@ -179,7 +179,7 @@ static int gennvm_blocks_init(struct nvm_dev *dev, struct gen_nvm *gn)
179 ppa.ppa = 0; 179 ppa.ppa = 0;
180 ppa.g.ch = lun->vlun.chnl_id; 180 ppa.g.ch = lun->vlun.chnl_id;
181 ppa.g.lun = lun->vlun.id; 181 ppa.g.lun = lun->vlun.id;
182 ppa = generic_to_addr_mode(dev, ppa); 182 ppa = generic_to_dev_addr(dev, ppa);
183 183
184 ret = dev->ops->get_bb_tbl(dev->q, ppa, 184 ret = dev->ops->get_bb_tbl(dev->q, ppa,
185 dev->blks_per_lun, 185 dev->blks_per_lun,
@@ -304,10 +304,10 @@ static void gennvm_addr_to_generic_mode(struct nvm_dev *dev, struct nvm_rq *rqd)
304 304
305 if (rqd->nr_pages > 1) { 305 if (rqd->nr_pages > 1) {
306 for (i = 0; i < rqd->nr_pages; i++) 306 for (i = 0; i < rqd->nr_pages; i++)
307 rqd->ppa_list[i] = addr_to_generic_mode(dev, 307 rqd->ppa_list[i] = dev_to_generic_addr(dev,
308 rqd->ppa_list[i]); 308 rqd->ppa_list[i]);
309 } else { 309 } else {
310 rqd->ppa_addr = addr_to_generic_mode(dev, rqd->ppa_addr); 310 rqd->ppa_addr = dev_to_generic_addr(dev, rqd->ppa_addr);
311 } 311 }
312} 312}
313 313
@@ -317,10 +317,10 @@ static void gennvm_generic_to_addr_mode(struct nvm_dev *dev, struct nvm_rq *rqd)
317 317
318 if (rqd->nr_pages > 1) { 318 if (rqd->nr_pages > 1) {
319 for (i = 0; i < rqd->nr_pages; i++) 319 for (i = 0; i < rqd->nr_pages; i++)
320 rqd->ppa_list[i] = generic_to_addr_mode(dev, 320 rqd->ppa_list[i] = generic_to_dev_addr(dev,
321 rqd->ppa_list[i]); 321 rqd->ppa_list[i]);
322 } else { 322 } else {
323 rqd->ppa_addr = generic_to_addr_mode(dev, rqd->ppa_addr); 323 rqd->ppa_addr = generic_to_dev_addr(dev, rqd->ppa_addr);
324 } 324 }
325} 325}
326 326