Lines Matching +full:0 +full:ns

62 	struct nvme_ns *ns = q->queuedata;  in nvme_submit_user_cmd()  local
63 struct block_device *bdev = ns ? ns->disk->part0 : NULL; in nvme_submit_user_cmd()
69 req = nvme_alloc_request(q, cmd, 0); in nvme_submit_user_cmd()
113 static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio) in nvme_submit_io() argument
134 length = (io.nblocks + 1) << ns->lba_shift; in nvme_submit_io()
137 ns->ms == sizeof(struct t10_pi_tuple)) { in nvme_submit_io()
144 meta_len = 0; in nvme_submit_io()
147 meta_len = (io.nblocks + 1) * ns->ms; in nvme_submit_io()
151 if (ns->features & NVME_NS_EXT_LBAS) { in nvme_submit_io()
153 meta_len = 0; in nvme_submit_io()
159 memset(&c, 0, sizeof(c)); in nvme_submit_io()
162 c.rw.nsid = cpu_to_le32(ns->head->ns_id); in nvme_submit_io()
171 return nvme_submit_user_cmd(ns->queue, &c, in nvme_submit_io()
173 metadata, meta_len, lower_32_bits(io.slba), NULL, 0); in nvme_submit_io()
177 struct nvme_ns *ns, __u32 nsid) in nvme_validate_passthru_nsid() argument
179 if (ns && nsid != ns->head->ns_id) { in nvme_validate_passthru_nsid()
183 current->comm, nsid, ns->head->ns_id); in nvme_validate_passthru_nsid()
190 static int nvme_user_cmd(struct nvme_ctrl *ctrl, struct nvme_ns *ns, in nvme_user_cmd() argument
195 unsigned timeout = 0; in nvme_user_cmd()
205 if (!nvme_validate_passthru_nsid(ctrl, ns, cmd.nsid)) in nvme_user_cmd()
208 memset(&c, 0, sizeof(c)); in nvme_user_cmd()
212 c.common.cdw2[0] = cpu_to_le32(cmd.cdw2); in nvme_user_cmd()
224 status = nvme_submit_user_cmd(ns ? ns->queue : ctrl->admin_q, &c, in nvme_user_cmd()
227 0, &result, timeout); in nvme_user_cmd()
229 if (status >= 0) { in nvme_user_cmd()
237 static int nvme_user_cmd64(struct nvme_ctrl *ctrl, struct nvme_ns *ns, in nvme_user_cmd64() argument
242 unsigned timeout = 0; in nvme_user_cmd64()
251 if (!nvme_validate_passthru_nsid(ctrl, ns, cmd.nsid)) in nvme_user_cmd64()
254 memset(&c, 0, sizeof(c)); in nvme_user_cmd64()
258 c.common.cdw2[0] = cpu_to_le32(cmd.cdw2); in nvme_user_cmd64()
270 status = nvme_submit_user_cmd(ns ? ns->queue : ctrl->admin_q, &c, in nvme_user_cmd64()
273 0, &cmd.result, timeout); in nvme_user_cmd64()
275 if (status >= 0) { in nvme_user_cmd64()
320 #define NVME_IOCTL_SUBMIT_IO32 _IOW('N', 0x42, struct nvme_user_io32)
323 static int nvme_ns_ioctl(struct nvme_ns *ns, unsigned int cmd, in nvme_ns_ioctl() argument
329 return ns->head->ns_id; in nvme_ns_ioctl()
331 return nvme_user_cmd(ns->ctrl, ns, argp); in nvme_ns_ioctl()
341 return nvme_submit_io(ns, argp); in nvme_ns_ioctl()
343 return nvme_user_cmd64(ns->ctrl, ns, argp); in nvme_ns_ioctl()
349 static int __nvme_ioctl(struct nvme_ns *ns, unsigned int cmd, void __user *arg) in __nvme_ioctl() argument
352 return nvme_ctrl_ioctl(ns->ctrl, cmd, arg); in __nvme_ioctl()
353 return nvme_ns_ioctl(ns, cmd, arg); in __nvme_ioctl()
359 struct nvme_ns *ns = bdev->bd_disk->private_data; in nvme_ioctl() local
361 return __nvme_ioctl(ns, cmd, (void __user *)arg); in nvme_ioctl()
366 struct nvme_ns *ns = in nvme_ns_chr_ioctl() local
369 return __nvme_ioctl(ns, cmd, (void __user *)arg); in nvme_ns_chr_ioctl()
373 static int nvme_ns_head_ctrl_ioctl(struct nvme_ns *ns, unsigned int cmd, in nvme_ns_head_ctrl_ioctl() argument
377 struct nvme_ctrl *ctrl = ns->ctrl; in nvme_ns_head_ctrl_ioctl()
380 nvme_get_ctrl(ns->ctrl); in nvme_ns_head_ctrl_ioctl()
382 ret = nvme_ctrl_ioctl(ns->ctrl, cmd, argp); in nvme_ns_head_ctrl_ioctl()
393 struct nvme_ns *ns; in nvme_ns_head_ioctl() local
397 ns = nvme_find_path(head); in nvme_ns_head_ioctl()
398 if (!ns) in nvme_ns_head_ioctl()
403 * seperately and drop the ns SRCU reference early. This avoids a in nvme_ns_head_ioctl()
407 return nvme_ns_head_ctrl_ioctl(ns, cmd, argp, head, srcu_idx); in nvme_ns_head_ioctl()
409 ret = nvme_ns_ioctl(ns, cmd, argp); in nvme_ns_head_ioctl()
422 struct nvme_ns *ns; in nvme_ns_head_chr_ioctl() local
426 ns = nvme_find_path(head); in nvme_ns_head_chr_ioctl()
427 if (!ns) in nvme_ns_head_chr_ioctl()
431 return nvme_ns_head_ctrl_ioctl(ns, cmd, argp, head, srcu_idx); in nvme_ns_head_chr_ioctl()
433 ret = nvme_ns_ioctl(ns, cmd, argp); in nvme_ns_head_chr_ioctl()
442 struct nvme_ns *ns; in nvme_dev_user_cmd() local
451 ns = list_first_entry(&ctrl->namespaces, struct nvme_ns, list); in nvme_dev_user_cmd()
452 if (ns != list_last_entry(&ctrl->namespaces, struct nvme_ns, list)) { in nvme_dev_user_cmd()
461 kref_get(&ns->kref); in nvme_dev_user_cmd()
464 ret = nvme_user_cmd(ctrl, ns, argp); in nvme_dev_user_cmd()
465 nvme_put_ns(ns); in nvme_dev_user_cmd()
493 return 0; in nvme_dev_ioctl()