Loading drivers/lightnvm/core.c +9 −32 Original line number Diff line number Diff line Loading @@ -407,31 +407,17 @@ static int nvm_register_map(struct nvm_dev *dev) return -ENOMEM; } static int nvm_map_to_dev(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *p) static void nvm_map_to_dev(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *p) { struct nvm_dev_map *dev_map = tgt_dev->map; struct nvm_ch_map *ch_map = &dev_map->chnls[p->g.ch]; int lun_off = ch_map->lun_offs[p->g.lun]; struct nvm_dev *dev = tgt_dev->parent; struct nvm_dev_map *dev_rmap = dev->rmap; struct nvm_ch_map *ch_rmap; int lun_roff; p->g.ch += ch_map->ch_off; p->g.lun += lun_off; ch_rmap = &dev_rmap->chnls[p->g.ch]; lun_roff = ch_rmap->lun_offs[p->g.lun]; if (unlikely(ch_rmap->ch_off < 0 || lun_roff < 0)) { pr_err("nvm: corrupted device partition table\n"); return -EINVAL; } return 0; } static int nvm_map_to_tgt(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *p) static void nvm_map_to_tgt(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *p) { struct nvm_dev *dev = tgt_dev->parent; struct nvm_dev_map *dev_rmap = dev->rmap; Loading @@ -440,34 +426,27 @@ static int nvm_map_to_tgt(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *p) p->g.ch -= ch_rmap->ch_off; p->g.lun -= lun_roff; return 0; } static int nvm_trans_rq(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd, static void nvm_trans_rq(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd, int flag) { int i; int ret; if (rqd->nr_ppas == 1) { if (flag == TRANS_TGT_TO_DEV) return nvm_map_to_dev(tgt_dev, &rqd->ppa_addr); nvm_map_to_dev(tgt_dev, &rqd->ppa_addr); else return nvm_map_to_tgt(tgt_dev, &rqd->ppa_addr); nvm_map_to_tgt(tgt_dev, &rqd->ppa_addr); return; } for (i = 0; i < rqd->nr_ppas; i++) { if (flag == TRANS_TGT_TO_DEV) ret = nvm_map_to_dev(tgt_dev, &rqd->ppa_list[i]); nvm_map_to_dev(tgt_dev, &rqd->ppa_list[i]); else ret = nvm_map_to_tgt(tgt_dev, &rqd->ppa_list[i]); if (ret) break; nvm_map_to_tgt(tgt_dev, &rqd->ppa_list[i]); } return ret; } static struct ppa_addr nvm_trans_ppa(struct nvm_tgt_dev *tgt_dev, Loading Loading @@ -665,9 +644,7 @@ int nvm_erase_blk(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *ppas, int flags) if (!dev->ops->erase_block) return 0; ret = nvm_map_to_dev(tgt_dev, ppas); if (ret) return ret; nvm_map_to_dev(tgt_dev, ppas); memset(&rqd, 0, sizeof(struct nvm_rq)); Loading Loading
drivers/lightnvm/core.c +9 −32 Original line number Diff line number Diff line Loading @@ -407,31 +407,17 @@ static int nvm_register_map(struct nvm_dev *dev) return -ENOMEM; } static int nvm_map_to_dev(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *p) static void nvm_map_to_dev(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *p) { struct nvm_dev_map *dev_map = tgt_dev->map; struct nvm_ch_map *ch_map = &dev_map->chnls[p->g.ch]; int lun_off = ch_map->lun_offs[p->g.lun]; struct nvm_dev *dev = tgt_dev->parent; struct nvm_dev_map *dev_rmap = dev->rmap; struct nvm_ch_map *ch_rmap; int lun_roff; p->g.ch += ch_map->ch_off; p->g.lun += lun_off; ch_rmap = &dev_rmap->chnls[p->g.ch]; lun_roff = ch_rmap->lun_offs[p->g.lun]; if (unlikely(ch_rmap->ch_off < 0 || lun_roff < 0)) { pr_err("nvm: corrupted device partition table\n"); return -EINVAL; } return 0; } static int nvm_map_to_tgt(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *p) static void nvm_map_to_tgt(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *p) { struct nvm_dev *dev = tgt_dev->parent; struct nvm_dev_map *dev_rmap = dev->rmap; Loading @@ -440,34 +426,27 @@ static int nvm_map_to_tgt(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *p) p->g.ch -= ch_rmap->ch_off; p->g.lun -= lun_roff; return 0; } static int nvm_trans_rq(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd, static void nvm_trans_rq(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd, int flag) { int i; int ret; if (rqd->nr_ppas == 1) { if (flag == TRANS_TGT_TO_DEV) return nvm_map_to_dev(tgt_dev, &rqd->ppa_addr); nvm_map_to_dev(tgt_dev, &rqd->ppa_addr); else return nvm_map_to_tgt(tgt_dev, &rqd->ppa_addr); nvm_map_to_tgt(tgt_dev, &rqd->ppa_addr); return; } for (i = 0; i < rqd->nr_ppas; i++) { if (flag == TRANS_TGT_TO_DEV) ret = nvm_map_to_dev(tgt_dev, &rqd->ppa_list[i]); nvm_map_to_dev(tgt_dev, &rqd->ppa_list[i]); else ret = nvm_map_to_tgt(tgt_dev, &rqd->ppa_list[i]); if (ret) break; nvm_map_to_tgt(tgt_dev, &rqd->ppa_list[i]); } return ret; } static struct ppa_addr nvm_trans_ppa(struct nvm_tgt_dev *tgt_dev, Loading Loading @@ -665,9 +644,7 @@ int nvm_erase_blk(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *ppas, int flags) if (!dev->ops->erase_block) return 0; ret = nvm_map_to_dev(tgt_dev, ppas); if (ret) return ret; nvm_map_to_dev(tgt_dev, ppas); memset(&rqd, 0, sizeof(struct nvm_rq)); Loading