Lines Matching refs:rqd
611 static void nvm_rq_tgt_to_dev(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd) in nvm_rq_tgt_to_dev() argument
613 struct ppa_addr *ppa_list = nvm_rq_to_ppa_list(rqd); in nvm_rq_tgt_to_dev()
615 nvm_ppa_tgt_to_dev(tgt_dev, ppa_list, rqd->nr_ppas); in nvm_rq_tgt_to_dev()
618 static void nvm_rq_dev_to_tgt(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd) in nvm_rq_dev_to_tgt() argument
620 struct ppa_addr *ppa_list = nvm_rq_to_ppa_list(rqd); in nvm_rq_dev_to_tgt()
622 nvm_ppa_dev_to_tgt(tgt_dev, ppa_list, rqd->nr_ppas); in nvm_rq_dev_to_tgt()
676 static int nvm_set_rqd_ppalist(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd, in nvm_set_rqd_ppalist() argument
685 rqd->nr_ppas = nr_ppas; in nvm_set_rqd_ppalist()
686 rqd->ppa_addr = ppas[0]; in nvm_set_rqd_ppalist()
691 rqd->nr_ppas = nr_ppas; in nvm_set_rqd_ppalist()
692 rqd->ppa_list = nvm_dev_dma_alloc(dev, GFP_KERNEL, &rqd->dma_ppa_list); in nvm_set_rqd_ppalist()
693 if (!rqd->ppa_list) { in nvm_set_rqd_ppalist()
699 rqd->nr_ppas *= plane_cnt; in nvm_set_rqd_ppalist()
705 rqd->ppa_list[(pl_idx * nr_ppas) + i] = ppa; in nvm_set_rqd_ppalist()
713 struct nvm_rq *rqd) in nvm_free_rqd_ppalist() argument
715 if (!rqd->ppa_list) in nvm_free_rqd_ppalist()
718 nvm_dev_dma_free(tgt_dev->parent, rqd->ppa_list, rqd->dma_ppa_list); in nvm_free_rqd_ppalist()
721 static int nvm_set_flags(struct nvm_geo *geo, struct nvm_rq *rqd) in nvm_set_flags() argument
728 if (rqd->is_seq) in nvm_set_flags()
731 if (rqd->opcode == NVM_OP_PREAD) in nvm_set_flags()
733 else if (rqd->opcode == NVM_OP_PWRITE) in nvm_set_flags()
739 int nvm_submit_io(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd, void *buf) in nvm_submit_io() argument
747 nvm_rq_tgt_to_dev(tgt_dev, rqd); in nvm_submit_io()
749 rqd->dev = tgt_dev; in nvm_submit_io()
750 rqd->flags = nvm_set_flags(&tgt_dev->geo, rqd); in nvm_submit_io()
753 ret = dev->ops->submit_io(dev, rqd, buf); in nvm_submit_io()
755 nvm_rq_dev_to_tgt(tgt_dev, rqd); in nvm_submit_io()
760 static void nvm_sync_end_io(struct nvm_rq *rqd) in nvm_sync_end_io() argument
762 struct completion *waiting = rqd->private; in nvm_sync_end_io()
767 static int nvm_submit_io_wait(struct nvm_dev *dev, struct nvm_rq *rqd, in nvm_submit_io_wait() argument
773 rqd->end_io = nvm_sync_end_io; in nvm_submit_io_wait()
774 rqd->private = &wait; in nvm_submit_io_wait()
776 ret = dev->ops->submit_io(dev, rqd, buf); in nvm_submit_io_wait()
785 int nvm_submit_io_sync(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd, in nvm_submit_io_sync() argument
794 nvm_rq_tgt_to_dev(tgt_dev, rqd); in nvm_submit_io_sync()
796 rqd->dev = tgt_dev; in nvm_submit_io_sync()
797 rqd->flags = nvm_set_flags(&tgt_dev->geo, rqd); in nvm_submit_io_sync()
799 ret = nvm_submit_io_wait(dev, rqd, buf); in nvm_submit_io_sync()
805 void nvm_end_io(struct nvm_rq *rqd) in nvm_end_io() argument
807 struct nvm_tgt_dev *tgt_dev = rqd->dev; in nvm_end_io()
811 nvm_rq_dev_to_tgt(tgt_dev, rqd); in nvm_end_io()
813 if (rqd->end_io) in nvm_end_io()
814 rqd->end_io(rqd); in nvm_end_io()
818 static int nvm_submit_io_sync_raw(struct nvm_dev *dev, struct nvm_rq *rqd) in nvm_submit_io_sync_raw() argument
823 rqd->dev = NULL; in nvm_submit_io_sync_raw()
824 rqd->flags = nvm_set_flags(&dev->geo, rqd); in nvm_submit_io_sync_raw()
826 return nvm_submit_io_wait(dev, rqd, NULL); in nvm_submit_io_sync_raw()
831 struct nvm_rq rqd = { NULL }; in nvm_bb_chunk_sense() local
845 rqd.bio = &bio; in nvm_bb_chunk_sense()
846 rqd.opcode = NVM_OP_PREAD; in nvm_bb_chunk_sense()
847 rqd.is_seq = 1; in nvm_bb_chunk_sense()
848 rqd.nr_ppas = 1; in nvm_bb_chunk_sense()
849 rqd.ppa_addr = generic_to_dev_addr(dev, ppa); in nvm_bb_chunk_sense()
851 ret = nvm_submit_io_sync_raw(dev, &rqd); in nvm_bb_chunk_sense()
857 return rqd.error; in nvm_bb_chunk_sense()
1074 struct nvm_rq rqd; in nvm_set_chunk_meta() local
1085 memset(&rqd, 0, sizeof(struct nvm_rq)); in nvm_set_chunk_meta()
1087 nvm_set_rqd_ppalist(tgt_dev, &rqd, ppas, nr_ppas); in nvm_set_chunk_meta()
1088 nvm_rq_tgt_to_dev(tgt_dev, &rqd); in nvm_set_chunk_meta()
1090 ret = dev->ops->set_bb_tbl(dev, &rqd.ppa_addr, rqd.nr_ppas, type); in nvm_set_chunk_meta()
1091 nvm_free_rqd_ppalist(tgt_dev, &rqd); in nvm_set_chunk_meta()