Lines Matching refs:ccb
29 ccb_refs(union ccb *ccb) in ccb_refs() argument
31 return ((u_int *)&ccb->ccb_h.spriv_field0); in ccb_refs()
37 nvmf_ccb_done(union ccb *ccb) in nvmf_ccb_done() argument
39 if (!refcount_release(ccb_refs(ccb))) in nvmf_ccb_done()
42 if (nvmf_cqe_aborted(&ccb->nvmeio.cpl)) { in nvmf_ccb_done()
43 struct cam_sim *sim = xpt_path_sim(ccb->ccb_h.path); in nvmf_ccb_done()
47 ccb->ccb_h.status = CAM_DEV_NOT_THERE; in nvmf_ccb_done()
49 ccb->ccb_h.status = CAM_REQUEUE_REQ; in nvmf_ccb_done()
50 xpt_done(ccb); in nvmf_ccb_done()
51 } else if (ccb->nvmeio.cpl.status != 0) { in nvmf_ccb_done()
52 ccb->ccb_h.status = CAM_NVME_STATUS_ERROR; in nvmf_ccb_done()
53 xpt_done(ccb); in nvmf_ccb_done()
54 } else if (ccb->ccb_h.spriv_ioerror != 0) { in nvmf_ccb_done()
55 KASSERT(ccb->ccb_h.spriv_ioerror != EJUSTRETURN, in nvmf_ccb_done()
57 ccb->ccb_h.status = CAM_REQ_CMP_ERR; in nvmf_ccb_done()
58 xpt_done(ccb); in nvmf_ccb_done()
60 ccb->ccb_h.status = CAM_REQ_CMP; in nvmf_ccb_done()
61 xpt_done(ccb); in nvmf_ccb_done()
68 union ccb *ccb = arg; in nvmf_ccb_io_complete() local
76 ccb->ccb_h.spriv_ioerror = error; in nvmf_ccb_io_complete()
85 ccb->ccb_h.spriv_ioerror = EJUSTRETURN; in nvmf_ccb_io_complete()
88 KASSERT(xfered == ccb->nvmeio.dxfer_len, in nvmf_ccb_io_complete()
92 nvmf_ccb_done(ccb); in nvmf_ccb_io_complete()
98 union ccb *ccb = arg; in nvmf_ccb_complete() local
100 ccb->nvmeio.cpl = *cqe; in nvmf_ccb_complete()
101 nvmf_ccb_done(ccb); in nvmf_ccb_complete()
105 nvmf_sim_io(struct nvmf_softc *sc, union ccb *ccb) in nvmf_sim_io() argument
107 struct ccb_nvmeio *nvmeio = &ccb->nvmeio; in nvmf_sim_io()
119 xpt_done(ccb); in nvmf_sim_io()
127 ccb, M_NOWAIT); in nvmf_sim_io()
131 xpt_done(ccb); in nvmf_sim_io()
136 refcount_init(ccb_refs(ccb), 2); in nvmf_sim_io()
137 mem = memdesc_ccb(ccb); in nvmf_sim_io()
139 (ccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_OUT, in nvmf_sim_io()
140 nvmf_ccb_io_complete, ccb); in nvmf_sim_io()
142 refcount_init(ccb_refs(ccb), 1); in nvmf_sim_io()
148 ccb->ccb_h.spriv_ioerror = 0; in nvmf_sim_io()
149 KASSERT(ccb->ccb_h.status == CAM_REQ_INPROG, in nvmf_sim_io()
151 ccb->ccb_h.status |= CAM_SIM_QUEUED; in nvmf_sim_io()
156 nvmf_sim_action(struct cam_sim *sim, union ccb *ccb) in nvmf_sim_action() argument
160 CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_TRACE, in nvmf_sim_action()
162 ccb->ccb_h.func_code)); in nvmf_sim_action()
164 switch (ccb->ccb_h.func_code) { in nvmf_sim_action()
167 struct ccb_pathinq *cpi = &ccb->cpi; in nvmf_sim_action()
192 xpt_path_lun_id(ccb->ccb_h.path); in nvmf_sim_action()
207 struct ccb_trans_settings *cts = &ccb->cts; in nvmf_sim_action()
231 ccb->ccb_h.status = CAM_REQ_CMP; in nvmf_sim_action()
235 nvmf_sim_io(sc, ccb); in nvmf_sim_action()
240 ccb->ccb_h.func_code); in nvmf_sim_action()
241 ccb->ccb_h.status = CAM_REQ_INVALID; in nvmf_sim_action()
244 xpt_done(ccb); in nvmf_sim_action()
289 union ccb *ccb; in nvmf_sim_rescan_ns() local
291 ccb = xpt_alloc_ccb_nowait(); in nvmf_sim_rescan_ns()
292 if (ccb == NULL) { in nvmf_sim_rescan_ns()
302 if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sc->sim), 0, in nvmf_sim_rescan_ns()
306 xpt_free_ccb(ccb); in nvmf_sim_rescan_ns()
309 xpt_rescan(ccb); in nvmf_sim_rescan_ns()