Lines Matching refs:rqd
319 static void gennvm_addr_to_generic_mode(struct nvm_dev *dev, struct nvm_rq *rqd) in gennvm_addr_to_generic_mode() argument
323 if (rqd->nr_pages > 1) { in gennvm_addr_to_generic_mode()
324 for (i = 0; i < rqd->nr_pages; i++) in gennvm_addr_to_generic_mode()
325 rqd->ppa_list[i] = dev_to_generic_addr(dev, in gennvm_addr_to_generic_mode()
326 rqd->ppa_list[i]); in gennvm_addr_to_generic_mode()
328 rqd->ppa_addr = dev_to_generic_addr(dev, rqd->ppa_addr); in gennvm_addr_to_generic_mode()
332 static void gennvm_generic_to_addr_mode(struct nvm_dev *dev, struct nvm_rq *rqd) in gennvm_generic_to_addr_mode() argument
336 if (rqd->nr_pages > 1) { in gennvm_generic_to_addr_mode()
337 for (i = 0; i < rqd->nr_pages; i++) in gennvm_generic_to_addr_mode()
338 rqd->ppa_list[i] = generic_to_dev_addr(dev, in gennvm_generic_to_addr_mode()
339 rqd->ppa_list[i]); in gennvm_generic_to_addr_mode()
341 rqd->ppa_addr = generic_to_dev_addr(dev, rqd->ppa_addr); in gennvm_generic_to_addr_mode()
345 static int gennvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd) in gennvm_submit_io() argument
351 gennvm_generic_to_addr_mode(dev, rqd); in gennvm_submit_io()
353 rqd->dev = dev; in gennvm_submit_io()
354 return dev->ops->submit_io(dev, rqd); in gennvm_submit_io()
383 static void gennvm_mark_blk_bad(struct nvm_dev *dev, struct nvm_rq *rqd) in gennvm_mark_blk_bad() argument
390 if (dev->ops->set_bb_tbl(dev, rqd, 1)) in gennvm_mark_blk_bad()
393 gennvm_addr_to_generic_mode(dev, rqd); in gennvm_mark_blk_bad()
396 if (rqd->nr_pages > 1) in gennvm_mark_blk_bad()
397 for (i = 0; i < rqd->nr_pages; i++) in gennvm_mark_blk_bad()
398 gennvm_blk_set_type(dev, &rqd->ppa_list[i], 2); in gennvm_mark_blk_bad()
400 gennvm_blk_set_type(dev, &rqd->ppa_addr, 2); in gennvm_mark_blk_bad()
403 static int gennvm_end_io(struct nvm_rq *rqd, int error) in gennvm_end_io() argument
405 struct nvm_tgt_instance *ins = rqd->ins; in gennvm_end_io()
414 gennvm_mark_blk_bad(rqd->dev, rqd); in gennvm_end_io()
419 ret += ins->tt->end_io(rqd, error); in gennvm_end_io()
429 struct nvm_rq rqd; in gennvm_erase_blk() local
437 rqd.nr_pages = 1; in gennvm_erase_blk()
438 rqd.ppa_addr = addr; in gennvm_erase_blk()
441 rqd.nr_pages = plane_cnt; in gennvm_erase_blk()
443 rqd.ppa_list = nvm_dev_dma_alloc(dev, GFP_KERNEL, in gennvm_erase_blk()
444 &rqd.dma_ppa_list); in gennvm_erase_blk()
445 if (!rqd.ppa_list) { in gennvm_erase_blk()
452 rqd.ppa_list[pl_idx] = addr; in gennvm_erase_blk()
456 gennvm_generic_to_addr_mode(dev, &rqd); in gennvm_erase_blk()
458 ret = dev->ops->erase_block(dev, &rqd); in gennvm_erase_blk()
461 nvm_dev_dma_free(dev, rqd.ppa_list, rqd.dma_ppa_list); in gennvm_erase_blk()