diff options
author | jimharris <jimharris@FreeBSD.org> | 2012-10-18 00:32:07 +0000 |
---|---|---|
committer | jimharris <jimharris@FreeBSD.org> | 2012-10-18 00:32:07 +0000 |
commit | c070c3fe817d16552546a6954df85a4731b3e8be (patch) | |
tree | 4db66064fe7cf4ae165af763fcf230f22e61d0fc /sys/dev/nvme/nvme_ns_cmd.c | |
parent | 20df59b294c348ddc1e7d3683cb6b3fdf7858f91 (diff) | |
download | FreeBSD-src-c070c3fe817d16552546a6954df85a4731b3e8be.zip FreeBSD-src-c070c3fe817d16552546a6954df85a4731b3e8be.tar.gz |
Add return codes to all functions used for submitting commands to I/O
queues.
Sponsored by: Intel
Diffstat (limited to 'sys/dev/nvme/nvme_ns_cmd.c')
-rw-r--r-- | sys/dev/nvme/nvme_ns_cmd.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/sys/dev/nvme/nvme_ns_cmd.c b/sys/dev/nvme/nvme_ns_cmd.c index 23d6f96..fe5cc28 100644 --- a/sys/dev/nvme/nvme_ns_cmd.c +++ b/sys/dev/nvme/nvme_ns_cmd.c @@ -29,7 +29,7 @@ __FBSDID("$FreeBSD$"); #include "nvme_private.h" -void +int nvme_ns_cmd_read(struct nvme_namespace *ns, void *payload, uint64_t lba, uint32_t lba_count, nvme_cb_fn_t cb_fn, void *cb_arg) { @@ -40,6 +40,9 @@ nvme_ns_cmd_read(struct nvme_namespace *ns, void *payload, uint64_t lba, tr = nvme_allocate_tracker(ns->ctrlr, FALSE, cb_fn, cb_arg, lba_count*512, payload); + if (tr == NULL) + return (ENOMEM); + cmd = &tr->cmd; cmd->opc = NVME_OPC_READ; cmd->nsid = ns->id; @@ -52,9 +55,11 @@ nvme_ns_cmd_read(struct nvme_namespace *ns, void *payload, uint64_t lba, tr->payload_size, nvme_payload_map, tr, 0); KASSERT(err == 0, ("bus_dmamap_load returned non-zero!\n")); + + return (0); } -void +int nvme_ns_cmd_write(struct nvme_namespace *ns, void *payload, uint64_t lba, uint32_t lba_count, nvme_cb_fn_t cb_fn, void *cb_arg) { @@ -65,6 +70,9 @@ nvme_ns_cmd_write(struct nvme_namespace *ns, void *payload, uint64_t lba, tr = nvme_allocate_tracker(ns->ctrlr, FALSE, cb_fn, cb_arg, lba_count*512, payload); + if (tr == NULL) + return (ENOMEM); + cmd = &tr->cmd; cmd->opc = NVME_OPC_WRITE; cmd->nsid = ns->id; @@ -77,9 +85,11 @@ nvme_ns_cmd_write(struct nvme_namespace *ns, void *payload, uint64_t lba, tr->payload_size, nvme_payload_map, tr, 0); KASSERT(err == 0, ("bus_dmamap_load returned non-zero!\n")); + + return (0); } -void +int nvme_ns_cmd_deallocate(struct nvme_namespace *ns, void *payload, uint8_t num_ranges, nvme_cb_fn_t cb_fn, void *cb_arg) { @@ -90,6 +100,9 @@ nvme_ns_cmd_deallocate(struct nvme_namespace *ns, void *payload, tr = nvme_allocate_tracker(ns->ctrlr, FALSE, cb_fn, cb_arg, num_ranges * sizeof(struct nvme_dsm_range), payload); + if (tr == NULL) + return (ENOMEM); + cmd = &tr->cmd; cmd->opc = NVME_OPC_DATASET_MANAGEMENT; cmd->nsid = ns->id; @@ -102,9 +115,11 @@ nvme_ns_cmd_deallocate(struct nvme_namespace *ns, void *payload, tr->payload_size, nvme_payload_map, tr, 0); KASSERT(err == 0, ("bus_dmamap_load returned non-zero!\n")); + + return (0); } -void +int nvme_ns_cmd_flush(struct nvme_namespace *ns, nvme_cb_fn_t cb_fn, void *cb_arg) { struct nvme_tracker *tr; @@ -112,9 +127,14 @@ nvme_ns_cmd_flush(struct nvme_namespace *ns, nvme_cb_fn_t cb_fn, void *cb_arg) tr = nvme_allocate_tracker(ns->ctrlr, FALSE, cb_fn, cb_arg, 0, NULL); + if (tr == NULL) + return (ENOMEM); + cmd = &tr->cmd; cmd->opc = NVME_OPC_FLUSH; cmd->nsid = ns->id; nvme_qpair_submit_cmd(tr->qpair, tr); + + return (0); } |