Lines Matching refs:rqd
606 static void nvm_rq_tgt_to_dev(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd) in nvm_rq_tgt_to_dev() argument
608 struct ppa_addr *ppa_list = nvm_rq_to_ppa_list(rqd); in nvm_rq_tgt_to_dev()
610 nvm_ppa_tgt_to_dev(tgt_dev, ppa_list, rqd->nr_ppas); in nvm_rq_tgt_to_dev()
613 static void nvm_rq_dev_to_tgt(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd) in nvm_rq_dev_to_tgt() argument
615 struct ppa_addr *ppa_list = nvm_rq_to_ppa_list(rqd); in nvm_rq_dev_to_tgt()
617 nvm_ppa_dev_to_tgt(tgt_dev, ppa_list, rqd->nr_ppas); in nvm_rq_dev_to_tgt()
671 static int nvm_set_rqd_ppalist(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd, in nvm_set_rqd_ppalist() argument
680 rqd->nr_ppas = nr_ppas; in nvm_set_rqd_ppalist()
681 rqd->ppa_addr = ppas[0]; in nvm_set_rqd_ppalist()
686 rqd->nr_ppas = nr_ppas; in nvm_set_rqd_ppalist()
687 rqd->ppa_list = nvm_dev_dma_alloc(dev, GFP_KERNEL, &rqd->dma_ppa_list); in nvm_set_rqd_ppalist()
688 if (!rqd->ppa_list) { in nvm_set_rqd_ppalist()
694 rqd->nr_ppas *= plane_cnt; in nvm_set_rqd_ppalist()
700 rqd->ppa_list[(pl_idx * nr_ppas) + i] = ppa; in nvm_set_rqd_ppalist()
708 struct nvm_rq *rqd) in nvm_free_rqd_ppalist() argument
710 if (!rqd->ppa_list) in nvm_free_rqd_ppalist()
713 nvm_dev_dma_free(tgt_dev->parent, rqd->ppa_list, rqd->dma_ppa_list); in nvm_free_rqd_ppalist()
716 static int nvm_set_flags(struct nvm_geo *geo, struct nvm_rq *rqd) in nvm_set_flags() argument
723 if (rqd->is_seq) in nvm_set_flags()
726 if (rqd->opcode == NVM_OP_PREAD) in nvm_set_flags()
728 else if (rqd->opcode == NVM_OP_PWRITE) in nvm_set_flags()
734 int nvm_submit_io(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd, void *buf) in nvm_submit_io() argument
742 nvm_rq_tgt_to_dev(tgt_dev, rqd); in nvm_submit_io()
744 rqd->dev = tgt_dev; in nvm_submit_io()
745 rqd->flags = nvm_set_flags(&tgt_dev->geo, rqd); in nvm_submit_io()
748 ret = dev->ops->submit_io(dev, rqd, buf); in nvm_submit_io()
750 nvm_rq_dev_to_tgt(tgt_dev, rqd); in nvm_submit_io()
755 static void nvm_sync_end_io(struct nvm_rq *rqd) in nvm_sync_end_io() argument
757 struct completion *waiting = rqd->private; in nvm_sync_end_io()
762 static int nvm_submit_io_wait(struct nvm_dev *dev, struct nvm_rq *rqd, in nvm_submit_io_wait() argument
768 rqd->end_io = nvm_sync_end_io; in nvm_submit_io_wait()
769 rqd->private = &wait; in nvm_submit_io_wait()
771 ret = dev->ops->submit_io(dev, rqd, buf); in nvm_submit_io_wait()
780 int nvm_submit_io_sync(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd, in nvm_submit_io_sync() argument
789 nvm_rq_tgt_to_dev(tgt_dev, rqd); in nvm_submit_io_sync()
791 rqd->dev = tgt_dev; in nvm_submit_io_sync()
792 rqd->flags = nvm_set_flags(&tgt_dev->geo, rqd); in nvm_submit_io_sync()
794 ret = nvm_submit_io_wait(dev, rqd, buf); in nvm_submit_io_sync()
800 void nvm_end_io(struct nvm_rq *rqd) in nvm_end_io() argument
802 struct nvm_tgt_dev *tgt_dev = rqd->dev; in nvm_end_io()
806 nvm_rq_dev_to_tgt(tgt_dev, rqd); in nvm_end_io()
808 if (rqd->end_io) in nvm_end_io()
809 rqd->end_io(rqd); in nvm_end_io()
813 static int nvm_submit_io_sync_raw(struct nvm_dev *dev, struct nvm_rq *rqd) in nvm_submit_io_sync_raw() argument
818 rqd->dev = NULL; in nvm_submit_io_sync_raw()
819 rqd->flags = nvm_set_flags(&dev->geo, rqd); in nvm_submit_io_sync_raw()
821 return nvm_submit_io_wait(dev, rqd, NULL); in nvm_submit_io_sync_raw()
826 struct nvm_rq rqd = { NULL }; in nvm_bb_chunk_sense() local
840 rqd.bio = &bio; in nvm_bb_chunk_sense()
841 rqd.opcode = NVM_OP_PREAD; in nvm_bb_chunk_sense()
842 rqd.is_seq = 1; in nvm_bb_chunk_sense()
843 rqd.nr_ppas = 1; in nvm_bb_chunk_sense()
844 rqd.ppa_addr = generic_to_dev_addr(dev, ppa); in nvm_bb_chunk_sense()
846 ret = nvm_submit_io_sync_raw(dev, &rqd); in nvm_bb_chunk_sense()
852 return rqd.error; in nvm_bb_chunk_sense()
1069 struct nvm_rq rqd; in nvm_set_chunk_meta() local
1080 memset(&rqd, 0, sizeof(struct nvm_rq)); in nvm_set_chunk_meta()
1082 nvm_set_rqd_ppalist(tgt_dev, &rqd, ppas, nr_ppas); in nvm_set_chunk_meta()
1083 nvm_rq_tgt_to_dev(tgt_dev, &rqd); in nvm_set_chunk_meta()
1085 ret = dev->ops->set_bb_tbl(dev, &rqd.ppa_addr, rqd.nr_ppas, type); in nvm_set_chunk_meta()
1086 nvm_free_rqd_ppalist(tgt_dev, &rqd); in nvm_set_chunk_meta()