Lines Matching defs:ns

16 static bool nvme_cmd_allowed(struct nvme_ns *ns, struct nvme_command *c,
42 if (!ns) {
61 effects = nvme_command_effects(ns->ctrl, ns, c->common.opcode);
119 struct nvme_ns *ns = q->queuedata;
120 struct block_device *bdev = ns ? ns->disk->part0 : NULL;
171 struct nvme_ns *ns = q->queuedata;
193 effects = nvme_passthru_start(ctrl, ns, cmd->common.opcode);
202 nvme_passthru_end(ctrl, ns, effects, cmd, ret);
207 static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio)
228 length = (io.nblocks + 1) << ns->head->lba_shift;
231 (ns->head->ms == ns->head->pi_size)) {
241 meta_len = (io.nblocks + 1) * ns->head->ms;
245 if (ns->head->features & NVME_NS_EXT_LBAS) {
256 c.rw.nsid = cpu_to_le32(ns->head->ns_id);
265 return nvme_submit_user_cmd(ns->queue, &c, io.addr, length, metadata,
270 struct nvme_ns *ns, __u32 nsid)
272 if (ns && nsid != ns->head->ns_id) {
276 current->comm, nsid, ns->head->ns_id);
283 static int nvme_user_cmd(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
297 if (!nvme_validate_passthru_nsid(ctrl, ns, cmd.nsid))
313 if (!nvme_cmd_allowed(ns, &c, 0, open_for_write))
319 status = nvme_submit_user_cmd(ns ? ns->queue : ctrl->admin_q, &c,
331 static int nvme_user_cmd64(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
344 if (!nvme_validate_passthru_nsid(ctrl, ns, cmd.nsid))
360 if (!nvme_cmd_allowed(ns, &c, flags, open_for_write))
366 status = nvme_submit_user_cmd(ns ? ns->queue : ctrl->admin_q, &c,
444 static int nvme_uring_cmd_io(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
449 struct request_queue *q = ns ? ns->queue : ctrl->admin_q;
464 if (!nvme_validate_passthru_nsid(ctrl, ns, le32_to_cpu(c.common.nsid)))
478 if (!nvme_cmd_allowed(ns, &c, 0, ioucmd->file->f_mode & FMODE_WRITE))
556 static int nvme_ns_ioctl(struct nvme_ns *ns, unsigned int cmd,
562 return ns->head->ns_id;
564 return nvme_user_cmd(ns->ctrl, ns, argp, flags, open_for_write);
574 return nvme_submit_io(ns, argp);
579 return nvme_user_cmd64(ns->ctrl, ns, argp, flags,
589 struct nvme_ns *ns = bdev->bd_disk->private_data;
598 return nvme_ctrl_ioctl(ns->ctrl, cmd, argp, open_for_write);
599 return nvme_ns_ioctl(ns, cmd, argp, flags, open_for_write);
604 struct nvme_ns *ns =
610 return nvme_ctrl_ioctl(ns->ctrl, cmd, argp, open_for_write);
611 return nvme_ns_ioctl(ns, cmd, argp, 0, open_for_write);
624 static int nvme_ns_uring_cmd(struct nvme_ns *ns, struct io_uring_cmd *ioucmd,
627 struct nvme_ctrl *ctrl = ns->ctrl;
638 ret = nvme_uring_cmd_io(ctrl, ns, ioucmd, issue_flags, false);
641 ret = nvme_uring_cmd_io(ctrl, ns, ioucmd, issue_flags, true);
652 struct nvme_ns *ns = container_of(file_inode(ioucmd->file)->i_cdev,
655 return nvme_ns_uring_cmd(ns, ioucmd, issue_flags);
670 static int nvme_ns_head_ctrl_ioctl(struct nvme_ns *ns, unsigned int cmd,
675 struct nvme_ctrl *ctrl = ns->ctrl;
678 nvme_get_ctrl(ns->ctrl);
680 ret = nvme_ctrl_ioctl(ns->ctrl, cmd, argp, open_for_write);
692 struct nvme_ns *ns;
700 ns = nvme_find_path(head);
701 if (!ns)
706 * seperately and drop the ns SRCU reference early. This avoids a
710 return nvme_ns_head_ctrl_ioctl(ns, cmd, argp, head, srcu_idx,
713 ret = nvme_ns_ioctl(ns, cmd, argp, flags, open_for_write);
727 struct nvme_ns *ns;
731 ns = nvme_find_path(head);
732 if (!ns)
736 return nvme_ns_head_ctrl_ioctl(ns, cmd, argp, head, srcu_idx,
739 ret = nvme_ns_ioctl(ns, cmd, argp, 0, open_for_write);
751 struct nvme_ns *ns = nvme_find_path(head);
754 if (ns)
755 ret = nvme_ns_uring_cmd(ns, ioucmd, issue_flags);
791 struct nvme_ns *ns;
800 ns = list_first_entry(&ctrl->namespaces, struct nvme_ns, list);
801 if (ns != list_last_entry(&ctrl->namespaces, struct nvme_ns, list)) {
810 kref_get(&ns->kref);
813 ret = nvme_user_cmd(ctrl, ns, argp, 0, open_for_write);
814 nvme_put_ns(ns);