Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F176946694
D60469.1793639872.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
1 KB
Referenced Files
None
Subscribers
None
D60469.1793639872.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D60469: libnvmf: Improve handling of the CATTR field in CONNECT commands
Attached
Detach File
Event Timeline