Page MenuHomeFreeBSD

D60469.1793639872.diff
No OneTemporary

Authored By
Unknown
Size
1 KB
Referenced Files
None
Subscribers
None

D60469.1793639872.diff

diff --git a/lib/libnvmf/libnvmf.h b/lib/libnvmf/libnvmf.h
--- a/lib/libnvmf/libnvmf.h
+++ b/lib/libnvmf/libnvmf.h
@@ -27,6 +27,7 @@
*/
struct nvmf_association_params {
bool sq_flow_control; /* SQ flow control required. */
+ bool delete_io_queues; /* Support for deleting I/O queues. */
bool dynamic_controller_model; /* Controller only */
uint16_t max_admin_qsize; /* Controller only */
uint32_t max_io_qsize; /* Controller only, 0 for discovery */
diff --git a/lib/libnvmf/nvmf_controller.c b/lib/libnvmf/nvmf_controller.c
--- a/lib/libnvmf/nvmf_controller.c
+++ b/lib/libnvmf/nvmf_controller.c
@@ -255,6 +255,16 @@
offsetof(struct nvmf_fabric_connect_cmd, sqsize));
goto error;
}
+
+ /* Connection attributes. */
+ if ((cmd->cattr & ~(NVMF_CONNECT_ATTR_IO_QUEUE_DELETION |
+ NVMF_CONNECT_ATTR_DISABLE_SQ_FC)) != 0) {
+ na_error(na, "Reserved connect attributes set");
+ nvmf_connect_invalid_parameters(cc, false,
+ offsetof(struct nvmf_fabric_connect_cmd, cattr));
+ goto error;
+ }
+
qp->nq_admin = true;
} else {
/* I/O queues not allowed for discovery. */
@@ -275,6 +285,16 @@
goto error;
}
+ /* Connection attributes. */
+ if ((cmd->cattr & ~(NVMF_CONNECT_ATTR_IO_QUEUE_DELETION |
+ NVMF_CONNECT_ATTR_DISABLE_SQ_FC |
+ NVMF_CONNECT_ATTR_PRIORITY_CLASS)) != 0) {
+ na_error(na, "Reserved connect attributes set");
+ nvmf_connect_invalid_parameters(cc, false,
+ offsetof(struct nvmf_fabric_connect_cmd, cattr));
+ goto error;
+ }
+
/* KATO is reserved for I/O queues. */
if (cmd->kato != 0) {
na_error(na,
diff --git a/lib/libnvmf/nvmf_host.c b/lib/libnvmf/nvmf_host.c
--- a/lib/libnvmf/nvmf_host.c
+++ b/lib/libnvmf/nvmf_host.c
@@ -96,6 +96,8 @@
cmd.sqsize = htole16(queue_size - 1);
if (!na->na_params.sq_flow_control)
cmd.cattr |= NVMF_CONNECT_ATTR_DISABLE_SQ_FC;
+ if (na->na_params.delete_io_queues)
+ cmd.cattr |= NVMF_CONNECT_ATTR_IO_QUEUE_DELETION;
cmd.kato = htole32(kato);
cc = nvmf_allocate_command(qp, &cmd);

File Metadata

Mime Type
text/plain
Expires
Mon, Nov 2, 5:17 PM (18 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41337654
Default Alt Text
D60469.1793639872.diff (1 KB)

Event Timeline