Commit 0f1f5803 authored by Hannes Reinecke's avatar Hannes Reinecke Committed by Keith Busch

nvmet: make 'tsas' attribute idempotent for RDMA

The RDMA transport defines values for TSAS, but it cannot be changed as
we only support the 'connected' mode.
So to avoid errors during reconfiguration we should allow to write the
current value.

Fixes: 3f123494 ("nvmet: make TCP sectype settable via configfs")
Signed-off-by: default avatarHannes Reinecke <hare@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
parent f80a55fa
......@@ -413,25 +413,46 @@ static ssize_t nvmet_addr_tsas_show(struct config_item *item,
return sprintf(page, "\n");
}
static u8 nvmet_addr_tsas_rdma_store(const char *page)
{
int i;
for (i = 0; i < ARRAY_SIZE(nvmet_addr_tsas_rdma); i++) {
if (sysfs_streq(page, nvmet_addr_tsas_rdma[i].name))
return nvmet_addr_tsas_rdma[i].type;
}
return NVMF_RDMA_QPTYPE_INVALID;
}
static u8 nvmet_addr_tsas_tcp_store(const char *page)
{
int i;
for (i = 0; i < ARRAY_SIZE(nvmet_addr_tsas_tcp); i++) {
if (sysfs_streq(page, nvmet_addr_tsas_tcp[i].name))
return nvmet_addr_tsas_tcp[i].type;
}
return NVMF_TCP_SECTYPE_INVALID;
}
static ssize_t nvmet_addr_tsas_store(struct config_item *item,
const char *page, size_t count)
{
struct nvmet_port *port = to_nvmet_port(item);
u8 treq = nvmet_port_disc_addr_treq_mask(port);
u8 sectype;
int i;
u8 sectype, qptype;
if (nvmet_is_port_enabled(port, __func__))
return -EACCES;
if (port->disc_addr.trtype != NVMF_TRTYPE_TCP)
return -EINVAL;
for (i = 0; i < ARRAY_SIZE(nvmet_addr_tsas_tcp); i++) {
if (sysfs_streq(page, nvmet_addr_tsas_tcp[i].name)) {
sectype = nvmet_addr_tsas_tcp[i].type;
if (port->disc_addr.trtype == NVMF_TRTYPE_RDMA) {
qptype = nvmet_addr_tsas_rdma_store(page);
if (qptype == port->disc_addr.tsas.rdma.qptype)
return count;
} else if (port->disc_addr.trtype == NVMF_TRTYPE_TCP) {
sectype = nvmet_addr_tsas_tcp_store(page);
if (sectype != NVMF_TCP_SECTYPE_INVALID)
goto found;
}
}
pr_err("Invalid value '%s' for tsas\n", page);
......
......@@ -85,6 +85,7 @@ enum {
enum {
NVMF_RDMA_QPTYPE_CONNECTED = 1, /* Reliable Connected */
NVMF_RDMA_QPTYPE_DATAGRAM = 2, /* Reliable Datagram */
NVMF_RDMA_QPTYPE_INVALID = 0xff,
};
/* RDMA Provider Type codes for Discovery Log Page entry TSAS
......@@ -110,6 +111,7 @@ enum {
NVMF_TCP_SECTYPE_NONE = 0, /* No Security */
NVMF_TCP_SECTYPE_TLS12 = 1, /* TLSv1.2, NVMe-oF 1.1 and NVMe-TCP 3.6.1.1 */
NVMF_TCP_SECTYPE_TLS13 = 2, /* TLSv1.3, NVMe-oF 1.1 and NVMe-TCP 3.6.1.1 */
NVMF_TCP_SECTYPE_INVALID = 0xff,
};
#define NVME_AQ_DEPTH 32
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment