nvme/cuse: add subsystem reset IOCTL support
Change-Id: Id85989d0ae1246cb60fff4a41e5847a2d84e271f Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8084 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ziye Yang <ziye.yang@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
parent
8a7f6e71b6
commit
cfff04aea2
@ -270,6 +270,21 @@ cuse_nvme_reset_execute(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid, void *arg)
|
|||||||
fuse_reply_ioctl_iov(req, 0, NULL, 0);
|
fuse_reply_ioctl_iov(req, 0, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cuse_nvme_subsys_reset_execute(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid, void *arg)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
fuse_req_t req = arg;
|
||||||
|
|
||||||
|
rc = spdk_nvme_ctrlr_reset_subsystem(ctrlr);
|
||||||
|
if (rc) {
|
||||||
|
fuse_reply_err(req, rc);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
fuse_reply_ioctl_iov(req, 0, NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
cuse_nvme_reset(fuse_req_t req, int cmd, void *arg,
|
cuse_nvme_reset(fuse_req_t req, int cmd, void *arg,
|
||||||
struct fuse_file_info *fi, unsigned flags,
|
struct fuse_file_info *fi, unsigned flags,
|
||||||
@ -284,7 +299,14 @@ cuse_nvme_reset(fuse_req_t req, int cmd, void *arg,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
rv = nvme_io_msg_send(cuse_device->ctrlr, cuse_device->nsid, cuse_nvme_reset_execute, (void *)req);
|
if (cmd == NVME_IOCTL_SUBSYS_RESET) {
|
||||||
|
SPDK_DEBUGLOG(nvme_cuse, "NVME_IOCTL_SUBSYS_RESET\n");
|
||||||
|
rv = nvme_io_msg_send(cuse_device->ctrlr, cuse_device->nsid, cuse_nvme_subsys_reset_execute,
|
||||||
|
(void *)req);
|
||||||
|
} else {
|
||||||
|
SPDK_DEBUGLOG(nvme_cuse, "NVME_IOCTL_RESET\n");
|
||||||
|
rv = nvme_io_msg_send(cuse_device->ctrlr, cuse_device->nsid, cuse_nvme_reset_execute, (void *)req);
|
||||||
|
}
|
||||||
if (rv) {
|
if (rv) {
|
||||||
SPDK_ERRLOG("Cannot send reset\n");
|
SPDK_ERRLOG("Cannot send reset\n");
|
||||||
fuse_reply_err(req, EINVAL);
|
fuse_reply_err(req, EINVAL);
|
||||||
@ -589,7 +611,7 @@ cuse_ctrlr_ioctl(fuse_req_t req, int cmd, void *arg,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case NVME_IOCTL_RESET:
|
case NVME_IOCTL_RESET:
|
||||||
SPDK_DEBUGLOG(nvme_cuse, "NVME_IOCTL_RESET\n");
|
case NVME_IOCTL_SUBSYS_RESET:
|
||||||
cuse_nvme_reset(req, cmd, arg, fi, flags, in_buf, in_bufsz, out_bufsz);
|
cuse_nvme_reset(req, cmd, arg, fi, flags, in_buf, in_bufsz, out_bufsz);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -64,6 +64,8 @@ spdk_nvme_ctrlr_is_active_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid)
|
|||||||
|
|
||||||
DEFINE_STUB(spdk_nvme_ctrlr_reset, int, (struct spdk_nvme_ctrlr *ctrlr), 0);
|
DEFINE_STUB(spdk_nvme_ctrlr_reset, int, (struct spdk_nvme_ctrlr *ctrlr), 0);
|
||||||
|
|
||||||
|
DEFINE_STUB(spdk_nvme_ctrlr_reset_subsystem, int, (struct spdk_nvme_ctrlr *ctrlr), 0);
|
||||||
|
|
||||||
DEFINE_STUB(spdk_nvme_ns_cmd_read, int, (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair,
|
DEFINE_STUB(spdk_nvme_ns_cmd_read, int, (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair,
|
||||||
void *payload,
|
void *payload,
|
||||||
uint64_t lba, uint32_t lba_count, spdk_nvme_cmd_cb cb_fn, void *cb_arg,
|
uint64_t lba, uint32_t lba_count, spdk_nvme_cmd_cb cb_fn, void *cb_arg,
|
||||||
|
@ -51,6 +51,8 @@ DEFINE_STUB(spdk_nvme_ctrlr_cmd_io_raw, int, (struct spdk_nvme_ctrlr *ctrlr,
|
|||||||
|
|
||||||
DEFINE_STUB(spdk_nvme_ctrlr_reset, int, (struct spdk_nvme_ctrlr *ctrlr), 0);
|
DEFINE_STUB(spdk_nvme_ctrlr_reset, int, (struct spdk_nvme_ctrlr *ctrlr), 0);
|
||||||
|
|
||||||
|
DEFINE_STUB(spdk_nvme_ctrlr_reset_subsystem, int, (struct spdk_nvme_ctrlr *ctrlr), 0);
|
||||||
|
|
||||||
DEFINE_STUB(spdk_nvme_ns_cmd_read, int,
|
DEFINE_STUB(spdk_nvme_ns_cmd_read, int,
|
||||||
(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair,
|
(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair,
|
||||||
void *payload, uint64_t lba, uint32_t lba_count,
|
void *payload, uint64_t lba, uint32_t lba_count,
|
||||||
|
Loading…
Reference in New Issue
Block a user