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:
commit
cab598bcef
@ -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");
|
||||
|
@ -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 {
|
||||
|
@ -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);
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user