nvme fixes for Linux 6.10

- Fabrics fixes (Hannes)
  - Missing module description (Jeff)
  - Clang warning fix (Nathan)
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEE3Fbyvv+648XNRdHTPe3zGtjzRgkFAmZ9qRAACgkQPe3zGtjz
 Rgnm2hAA391pE4keP85MN2GI+fdgNrngjDGc1Kit/wpjOtj+AWcl0OenMcCWbwRE
 1gcS5k+9M/j+BASpQaOFLzHsSxOPuyfj/J9O1/eqUzWdZe1NJY9f9zkwYgmgvCca
 S3MX/rIMVCM61KzPCCv2Wcohs8dawGFCkrcXWhDmGZKUtU6TxIFzR1dIOyUsY4/H
 r42bDLD9MfbKF53rpuaftC+HCDUNB60QwbQf1m+NGo1pdbhZDVNaEPmAXX4LBypL
 GmABRTekbmQqsD2Un3lOmw6n4y3y5OcgZ96QB1MZq5/VLKUo5RdNRQsqNqzEZOQa
 8koTLnvI0Lz6g8fpLELjbs91DlZ1YbE827nugZ5YDzYWAVlqdnZSqU9lZdeJs1An
 YG+FrL/bQBGYEaQ3WWv8JagQpWtviLHbe9v3aHnM8wgaOCPsSTzVBBoERkZbUW/+
 yzWVMzft86MlReFLz5AtBTiJST+BwallqG9ss6nBWHr9MzhgqjmXde1+/dQhEhik
 grtMFwbW9opLfRNBGoO/GmXxv3FpYv//YgY7yLd33mwP8DtW6/TdCp2bT81+WUeM
 rfaAcSOxSw3iUC6RhKGF8wLWBZI6kyXlFtEXgjbJi8weRuQqTQOJNHj8uTiJQkfD
 JcrHmb/rNZMKLKM7ySDAG+BL5U8zpFgCGhR5VIp1rML0Y7YwPIA=
 =oWqS
 -----END PGP SIGNATURE-----

Merge tag 'nvme-6.10-2024-06-27' of git://git.infradead.org/nvme into block-6.10

Pull NVMe fixes from Keith:

"nvme fixes for Linux 6.10

 - Fabrics fixes (Hannes)
 - Missing module description (Jeff)
 - Clang warning fix (Nathan)"

* tag 'nvme-6.10-2024-06-27' of git://git.infradead.org/nvme:
  nvmet-fc: Remove __counted_by from nvmet_fc_tgt_queue.fod[]
  nvmet: make 'tsas' attribute idempotent for RDMA
  nvme: fixup comment for nvme RDMA Provider Type
  nvme-apple: add missing MODULE_DESCRIPTION()
  nvmet: do not return 'reserved' for empty TSAS values
  nvme: fix NVME_NS_DEAC may incorrectly identifying the disk as EXT_LBA.
This commit is contained in:
Jens Axboe 2024-06-27 12:15:16 -06:00
commit cab598bcef
5 changed files with 38 additions and 14 deletions

View File

@ -1602,4 +1602,5 @@ static struct platform_driver apple_nvme_driver = {
module_platform_driver(apple_nvme_driver);
MODULE_AUTHOR("Sven Peter <sven@svenpeter.dev>");
MODULE_DESCRIPTION("Apple ANS NVM Express device driver");
MODULE_LICENSE("GPL");

View File

@ -502,7 +502,7 @@ static inline bool nvme_ns_head_multipath(struct nvme_ns_head *head)
enum nvme_ns_features {
NVME_NS_EXT_LBAS = 1 << 0, /* support extended LBA format */
NVME_NS_METADATA_SUPPORTED = 1 << 1, /* support getting generated md */
NVME_NS_DEAC, /* DEAC bit in Write Zeores supported */
NVME_NS_DEAC = 1 << 2, /* DEAC bit in Write Zeores supported */
};
struct nvme_ns {

View File

@ -410,7 +410,29 @@ static ssize_t nvmet_addr_tsas_show(struct config_item *item,
return sprintf(page, "%s\n", nvmet_addr_tsas_rdma[i].name);
}
}
return sprintf(page, "reserved\n");
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,
@ -418,20 +440,19 @@ static ssize_t nvmet_addr_tsas_store(struct config_item *item,
{
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);

View File

@ -148,7 +148,7 @@ struct nvmet_fc_tgt_queue {
struct workqueue_struct *work_q;
struct kref ref;
/* array of fcp_iods */
struct nvmet_fc_fcp_iod fod[] __counted_by(sqsize);
struct nvmet_fc_fcp_iod fod[] /* __counted_by(sqsize) */;
} __aligned(sizeof(unsigned long long));
struct nvmet_fc_hostport {

View File

@ -85,10 +85,11 @@ enum {
enum {
NVMF_RDMA_QPTYPE_CONNECTED = 1, /* Reliable Connected */
NVMF_RDMA_QPTYPE_DATAGRAM = 2, /* Reliable Datagram */
NVMF_RDMA_QPTYPE_INVALID = 0xff,
};
/* RDMA QP Service Type codes for Discovery Log Page entry TSAS
* RDMA_QPTYPE field
/* RDMA Provider Type codes for Discovery Log Page entry TSAS
* RDMA_PRTYPE field
*/
enum {
NVMF_RDMA_PRTYPE_NOT_SPECIFIED = 1, /* No Provider Specified */
@ -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