Lines Matching full:ns

61 static bool nvme_ns_cmd_allowed(struct nvme_ns *ns, struct nvme_command *c,  in nvme_ns_cmd_allowed()  argument
71 effects = nvme_command_effects(ns->ctrl, ns, c->common.opcode); in nvme_ns_cmd_allowed()
96 static bool nvme_cmd_allowed(struct nvme_ctrl *ctrl, struct nvme_ns *ns, in nvme_cmd_allowed() argument
115 if (!ns) in nvme_cmd_allowed()
118 return nvme_ns_cmd_allowed(ns, c, open_for_write); in nvme_cmd_allowed()
137 struct nvme_ns *ns = q->queuedata; in nvme_alloc_user_request() local
145 if (ns && nvme_ns_head_multipath(ns->head)) in nvme_alloc_user_request()
161 struct nvme_ns *ns = q->queuedata; in nvme_map_user_request() local
162 struct block_device *bdev = ns ? ns->disk->part0 : NULL; in nvme_map_user_request()
198 struct nvme_ns *ns = q->queuedata; in nvme_submit_user_cmd() local
220 effects = nvme_passthru_start(ctrl, ns, cmd->common.opcode); in nvme_submit_user_cmd()
229 nvme_passthru_end(ctrl, ns, effects, cmd, ret); in nvme_submit_user_cmd()
237 static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio, in nvme_submit_io() argument
259 length = (io.nblocks + 1) << ns->head->lba_shift; in nvme_submit_io()
262 (ns->head->ms == ns->head->pi_size)) { in nvme_submit_io()
272 meta_len = (io.nblocks + 1) * ns->head->ms; in nvme_submit_io()
276 if (ns->head->features & NVME_NS_EXT_LBAS) { in nvme_submit_io()
287 c.rw.nsid = cpu_to_le32(ns->head->ns_id); in nvme_submit_io()
296 if (!nvme_cmd_allowed(ns->ctrl, ns, &c, flags, open_for_write)) in nvme_submit_io()
299 return nvme_submit_user_cmd(ns->queue, &c, io.addr, length, metadata, in nvme_submit_io()
304 struct nvme_ns *ns, __u32 nsid) in nvme_validate_passthru_nsid() argument
306 if (ns && nsid != ns->head->ns_id) { in nvme_validate_passthru_nsid()
309 current->comm, nsid, ns->head->ns_id); in nvme_validate_passthru_nsid()
316 static int nvme_user_cmd(struct nvme_ctrl *ctrl, struct nvme_ns *ns, in nvme_user_cmd() argument
330 if (!nvme_validate_passthru_nsid(ctrl, ns, cmd.nsid)) in nvme_user_cmd()
346 if (!nvme_cmd_allowed(ctrl, ns, &c, 0, open_for_write)) in nvme_user_cmd()
352 status = nvme_submit_user_cmd(ns ? ns->queue : ctrl->admin_q, &c, in nvme_user_cmd()
364 static int nvme_user_cmd64(struct nvme_ctrl *ctrl, struct nvme_ns *ns, in nvme_user_cmd64() argument
377 if (!nvme_validate_passthru_nsid(ctrl, ns, cmd.nsid)) in nvme_user_cmd64()
393 if (!nvme_cmd_allowed(ctrl, ns, &c, flags, open_for_write)) in nvme_user_cmd64()
399 status = nvme_submit_user_cmd(ns ? ns->queue : ctrl->admin_q, &c, in nvme_user_cmd64()
481 static int nvme_uring_cmd_io(struct nvme_ctrl *ctrl, struct nvme_ns *ns, in nvme_uring_cmd_io() argument
487 struct request_queue *q = ns ? ns->queue : ctrl->admin_q; in nvme_uring_cmd_io()
505 if (!nvme_validate_passthru_nsid(ctrl, ns, le32_to_cpu(c.common.nsid))) in nvme_uring_cmd_io()
519 if (!nvme_cmd_allowed(ctrl, ns, &c, 0, open_for_write)) in nvme_uring_cmd_io()
617 static int nvme_ns_ioctl(struct nvme_ns *ns, unsigned int cmd, in nvme_ns_ioctl() argument
623 return ns->head->ns_id; in nvme_ns_ioctl()
625 return nvme_user_cmd(ns->ctrl, ns, argp, flags, open_for_write); in nvme_ns_ioctl()
635 return nvme_submit_io(ns, argp, flags, open_for_write); in nvme_ns_ioctl()
640 return nvme_user_cmd64(ns->ctrl, ns, argp, flags, in nvme_ns_ioctl()
650 struct nvme_ns *ns = bdev->bd_disk->private_data; in nvme_ioctl() local
659 return nvme_ctrl_ioctl(ns->ctrl, cmd, argp, open_for_write); in nvme_ioctl()
660 return nvme_ns_ioctl(ns, cmd, argp, flags, open_for_write); in nvme_ioctl()
665 struct nvme_ns *ns = in nvme_ns_chr_ioctl() local
671 return nvme_ctrl_ioctl(ns->ctrl, cmd, argp, open_for_write); in nvme_ns_chr_ioctl()
672 return nvme_ns_ioctl(ns, cmd, argp, 0, open_for_write); in nvme_ns_chr_ioctl()
685 static int nvme_ns_uring_cmd(struct nvme_ns *ns, struct io_uring_cmd *ioucmd, in nvme_ns_uring_cmd() argument
688 struct nvme_ctrl *ctrl = ns->ctrl; in nvme_ns_uring_cmd()
697 ret = nvme_uring_cmd_io(ctrl, ns, ioucmd, issue_flags, false); in nvme_ns_uring_cmd()
700 ret = nvme_uring_cmd_io(ctrl, ns, ioucmd, issue_flags, true); in nvme_ns_uring_cmd()
711 struct nvme_ns *ns = container_of(file_inode(ioucmd->file)->i_cdev, in nvme_ns_chr_uring_cmd() local
714 return nvme_ns_uring_cmd(ns, ioucmd, issue_flags); in nvme_ns_chr_uring_cmd()
729 static int nvme_ns_head_ctrl_ioctl(struct nvme_ns *ns, unsigned int cmd, in nvme_ns_head_ctrl_ioctl() argument
734 struct nvme_ctrl *ctrl = ns->ctrl; in nvme_ns_head_ctrl_ioctl()
737 nvme_get_ctrl(ns->ctrl); in nvme_ns_head_ctrl_ioctl()
751 struct nvme_ns *ns; in nvme_ns_head_ioctl() local
759 ns = nvme_find_path(head); in nvme_ns_head_ioctl()
760 if (!ns) in nvme_ns_head_ioctl()
765 * separately and drop the ns SRCU reference early. This avoids a in nvme_ns_head_ioctl()
769 return nvme_ns_head_ctrl_ioctl(ns, cmd, argp, head, srcu_idx, in nvme_ns_head_ioctl()
772 ret = nvme_ns_ioctl(ns, cmd, argp, flags, open_for_write); in nvme_ns_head_ioctl()
786 struct nvme_ns *ns; in nvme_ns_head_chr_ioctl() local
790 ns = nvme_find_path(head); in nvme_ns_head_chr_ioctl()
791 if (!ns) in nvme_ns_head_chr_ioctl()
795 return nvme_ns_head_ctrl_ioctl(ns, cmd, argp, head, srcu_idx, in nvme_ns_head_chr_ioctl()
798 ret = nvme_ns_ioctl(ns, cmd, argp, 0, open_for_write); in nvme_ns_head_chr_ioctl()
810 struct nvme_ns *ns = nvme_find_path(head); in nvme_ns_head_chr_uring_cmd() local
813 if (ns) in nvme_ns_head_chr_uring_cmd()
814 ret = nvme_ns_uring_cmd(ns, ioucmd, issue_flags); in nvme_ns_head_chr_uring_cmd()
846 struct nvme_ns *ns; in nvme_dev_user_cmd() local
855 ns = list_first_or_null_rcu(&ctrl->namespaces, struct nvme_ns, list); in nvme_dev_user_cmd()
856 if (ns != list_last_entry(&ctrl->namespaces, struct nvme_ns, list)) { in nvme_dev_user_cmd()
865 if (!nvme_get_ns(ns)) { in nvme_dev_user_cmd()
871 ret = nvme_user_cmd(ctrl, ns, argp, 0, open_for_write); in nvme_dev_user_cmd()
872 nvme_put_ns(ns); in nvme_dev_user_cmd()