Lines Matching full:req
10 static void nvmet_execute_prop_set(struct nvmet_req *req) in nvmet_execute_prop_set() argument
12 u64 val = le64_to_cpu(req->cmd->prop_set.value); in nvmet_execute_prop_set()
15 if (!nvmet_check_transfer_len(req, 0)) in nvmet_execute_prop_set()
18 if (req->cmd->prop_set.attrib & 1) { in nvmet_execute_prop_set()
19 req->error_loc = in nvmet_execute_prop_set()
25 switch (le32_to_cpu(req->cmd->prop_set.offset)) { in nvmet_execute_prop_set()
27 nvmet_update_cc(req->sq->ctrl, val); in nvmet_execute_prop_set()
30 req->error_loc = in nvmet_execute_prop_set()
35 nvmet_req_complete(req, status); in nvmet_execute_prop_set()
38 static void nvmet_execute_prop_get(struct nvmet_req *req) in nvmet_execute_prop_get() argument
40 struct nvmet_ctrl *ctrl = req->sq->ctrl; in nvmet_execute_prop_get()
44 if (!nvmet_check_transfer_len(req, 0)) in nvmet_execute_prop_get()
47 if (req->cmd->prop_get.attrib & 1) { in nvmet_execute_prop_get()
48 switch (le32_to_cpu(req->cmd->prop_get.offset)) { in nvmet_execute_prop_get()
57 switch (le32_to_cpu(req->cmd->prop_get.offset)) { in nvmet_execute_prop_get()
73 if (status && req->cmd->prop_get.attrib & 1) { in nvmet_execute_prop_get()
74 req->error_loc = in nvmet_execute_prop_get()
77 req->error_loc = in nvmet_execute_prop_get()
81 req->cqe->result.u64 = cpu_to_le64(val); in nvmet_execute_prop_get()
82 nvmet_req_complete(req, status); in nvmet_execute_prop_get()
85 u16 nvmet_parse_fabrics_cmd(struct nvmet_req *req) in nvmet_parse_fabrics_cmd() argument
87 struct nvme_command *cmd = req->cmd; in nvmet_parse_fabrics_cmd()
91 req->execute = nvmet_execute_prop_set; in nvmet_parse_fabrics_cmd()
94 req->execute = nvmet_execute_prop_get; in nvmet_parse_fabrics_cmd()
99 req->error_loc = offsetof(struct nvmf_common_command, fctype); in nvmet_parse_fabrics_cmd()
106 static u16 nvmet_install_queue(struct nvmet_ctrl *ctrl, struct nvmet_req *req) in nvmet_install_queue() argument
108 struct nvmf_connect_command *c = &req->cmd->connect; in nvmet_install_queue()
114 old = cmpxchg(&req->sq->ctrl, NULL, ctrl); in nvmet_install_queue()
117 req->error_loc = offsetof(struct nvmf_connect_command, opcode); in nvmet_install_queue()
122 req->error_loc = offsetof(struct nvmf_connect_command, sqsize); in nvmet_install_queue()
123 req->cqe->result.u32 = IPO_IATTR_CONNECT_SQE(sqsize); in nvmet_install_queue()
129 nvmet_cq_setup(ctrl, req->cq, qid, sqsize + 1); in nvmet_install_queue()
130 nvmet_sq_setup(ctrl, req->sq, qid, sqsize + 1); in nvmet_install_queue()
133 req->sq->sqhd_disabled = true; in nvmet_install_queue()
134 req->cqe->sq_head = cpu_to_le16(0xffff); in nvmet_install_queue()
138 ret = ctrl->ops->install_queue(req->sq); in nvmet_install_queue()
149 req->sq->ctrl = NULL; in nvmet_install_queue()
153 static void nvmet_execute_admin_connect(struct nvmet_req *req) in nvmet_execute_admin_connect() argument
155 struct nvmf_connect_command *c = &req->cmd->connect; in nvmet_execute_admin_connect()
160 if (!nvmet_check_transfer_len(req, sizeof(struct nvmf_connect_data))) in nvmet_execute_admin_connect()
169 status = nvmet_copy_from_sgl(req, 0, d, sizeof(*d)); in nvmet_execute_admin_connect()
174 req->cqe->result.u32 = 0; in nvmet_execute_admin_connect()
179 req->error_loc = offsetof(struct nvmf_connect_command, recfmt); in nvmet_execute_admin_connect()
188 req->cqe->result.u32 = IPO_IATTR_CONNECT_DATA(cntlid); in nvmet_execute_admin_connect()
192 status = nvmet_alloc_ctrl(d->subsysnqn, d->hostnqn, req, in nvmet_execute_admin_connect()
196 req->error_loc = in nvmet_execute_admin_connect()
205 status = nvmet_install_queue(ctrl, req); in nvmet_execute_admin_connect()
214 req->cqe->result.u16 = cpu_to_le16(ctrl->cntlid); in nvmet_execute_admin_connect()
219 nvmet_req_complete(req, status); in nvmet_execute_admin_connect()
222 static void nvmet_execute_io_connect(struct nvmet_req *req) in nvmet_execute_io_connect() argument
224 struct nvmf_connect_command *c = &req->cmd->connect; in nvmet_execute_io_connect()
230 if (!nvmet_check_transfer_len(req, sizeof(struct nvmf_connect_data))) in nvmet_execute_io_connect()
239 status = nvmet_copy_from_sgl(req, 0, d, sizeof(*d)); in nvmet_execute_io_connect()
244 req->cqe->result.u32 = 0; in nvmet_execute_io_connect()
255 req, &ctrl); in nvmet_execute_io_connect()
262 req->cqe->result.u32 = IPO_IATTR_CONNECT_SQE(qid); in nvmet_execute_io_connect()
266 status = nvmet_install_queue(ctrl, req); in nvmet_execute_io_connect()
271 req->cqe->result.u16 = cpu_to_le16(ctrl->cntlid); in nvmet_execute_io_connect()
278 nvmet_req_complete(req, status); in nvmet_execute_io_connect()
286 u16 nvmet_parse_connect_cmd(struct nvmet_req *req) in nvmet_parse_connect_cmd() argument
288 struct nvme_command *cmd = req->cmd; in nvmet_parse_connect_cmd()
293 req->error_loc = offsetof(struct nvme_common_command, opcode); in nvmet_parse_connect_cmd()
299 req->error_loc = offsetof(struct nvmf_common_command, fctype); in nvmet_parse_connect_cmd()
304 req->execute = nvmet_execute_admin_connect; in nvmet_parse_connect_cmd()
306 req->execute = nvmet_execute_io_connect; in nvmet_parse_connect_cmd()