Skip to content

Commit 6f65947

Browse files
committed
Merge tag 'nvme-6.16-2025-06-05' of git://git.infradead.org/nvme into block-6.16
Pull NVMe updates and fixes from Christoph: "nvme updates for Linux 6.16 - TCP error handling fix (Shin'ichiro Kawasaki) - TCP I/O stall handling fixes (Hannes Reinecke) - fix command limits status code (Keith Busch) - support vectored buffers also for passthrough (Pavel Begunkov) - spelling fixes (Yi Zhang)" * tag 'nvme-6.16-2025-06-05' of git://git.infradead.org/nvme: nvme: spelling fixes nvme-tcp: fix I/O stalls on congested sockets nvme-tcp: sanitize request list handling nvme-tcp: remove tag set when second admin queue config fails nvme: enable vectored registered bufs for passthrough cmds nvme: fix implicit bool to flags conversion nvme: fix command limits status code
2 parents a2f4c1a + 44e479d commit 6f65947

File tree

20 files changed

+57
-54
lines changed

20 files changed

+57
-54
lines changed

drivers/nvme/common/auth.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,7 @@ EXPORT_SYMBOL_GPL(nvme_auth_generate_key);
471471
* @c1: Value of challenge C1
472472
* @c2: Value of challenge C2
473473
* @hash_len: Hash length of the hash algorithm
474-
* @ret_psk: Pointer too the resulting generated PSK
474+
* @ret_psk: Pointer to the resulting generated PSK
475475
* @ret_len: length of @ret_psk
476476
*
477477
* Generate a PSK for TLS as specified in NVMe base specification, section
@@ -759,8 +759,8 @@ int nvme_auth_derive_tls_psk(int hmac_id, u8 *psk, size_t psk_len,
759759
goto out_free_prk;
760760

761761
/*
762-
* 2 addtional bytes for the length field from HDKF-Expand-Label,
763-
* 2 addtional bytes for the HMAC ID, and one byte for the space
762+
* 2 additional bytes for the length field from HDKF-Expand-Label,
763+
* 2 additional bytes for the HMAC ID, and one byte for the space
764764
* separator.
765765
*/
766766
info_len = strlen(psk_digest) + strlen(psk_prefix) + 5;

drivers/nvme/host/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ config NVME_TCP_TLS
106106
help
107107
Enables TLS encryption for NVMe TCP using the netlink handshake API.
108108

109-
The TLS handshake daemon is availble at
109+
The TLS handshake daemon is available at
110110
https://github.com/oracle/ktls-utils.
111111

112112
If unsure, say N.

drivers/nvme/host/constants.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ static const char * const nvme_statuses[] = {
145145
[NVME_SC_BAD_ATTRIBUTES] = "Conflicting Attributes",
146146
[NVME_SC_INVALID_PI] = "Invalid Protection Information",
147147
[NVME_SC_READ_ONLY] = "Attempted Write to Read Only Range",
148-
[NVME_SC_ONCS_NOT_SUPPORTED] = "ONCS Not Supported",
148+
[NVME_SC_CMD_SIZE_LIM_EXCEEDED ] = "Command Size Limits Exceeded",
149149
[NVME_SC_ZONE_BOUNDARY_ERROR] = "Zoned Boundary Error",
150150
[NVME_SC_ZONE_FULL] = "Zone Is Full",
151151
[NVME_SC_ZONE_READ_ONLY] = "Zone Is Read Only",

drivers/nvme/host/core.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,6 @@ static blk_status_t nvme_error_status(u16 status)
290290
case NVME_SC_NS_NOT_READY:
291291
return BLK_STS_TARGET;
292292
case NVME_SC_BAD_ATTRIBUTES:
293-
case NVME_SC_ONCS_NOT_SUPPORTED:
294293
case NVME_SC_INVALID_OPCODE:
295294
case NVME_SC_INVALID_FIELD:
296295
case NVME_SC_INVALID_NS:
@@ -1027,7 +1026,7 @@ static inline blk_status_t nvme_setup_rw(struct nvme_ns *ns,
10271026

10281027
if (ns->head->ms) {
10291028
/*
1030-
* If formated with metadata, the block layer always provides a
1029+
* If formatted with metadata, the block layer always provides a
10311030
* metadata buffer if CONFIG_BLK_DEV_INTEGRITY is enabled. Else
10321031
* we enable the PRACT bit for protection information or set the
10331032
* namespace capacity to zero to prevent any I/O.

drivers/nvme/host/fabrics.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ EXPORT_SYMBOL_GPL(nvmf_connect_io_queue);
582582
* Do not retry when:
583583
*
584584
* - the DNR bit is set and the specification states no further connect
585-
* attempts with the same set of paramenters should be attempted.
585+
* attempts with the same set of parameters should be attempted.
586586
*
587587
* - when the authentication attempt fails, because the key was invalid.
588588
* This error code is set on the host side.

drivers/nvme/host/fabrics.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ enum {
8080
* @transport: Holds the fabric transport "technology name" (for a lack of
8181
* better description) that will be used by an NVMe controller
8282
* being added.
83-
* @subsysnqn: Hold the fully qualified NQN subystem name (format defined
83+
* @subsysnqn: Hold the fully qualified NQN subsystem name (format defined
8484
* in the NVMe specification, "NVMe Qualified Names").
8585
* @traddr: The transport-specific TRADDR field for a port on the
8686
* subsystem which is adding a controller.
@@ -156,7 +156,7 @@ struct nvmf_ctrl_options {
156156
* @create_ctrl(): function pointer that points to a non-NVMe
157157
* implementation-specific fabric technology
158158
* that would go into starting up that fabric
159-
* for the purpose of conneciton to an NVMe controller
159+
* for the purpose of connection to an NVMe controller
160160
* using that fabric technology.
161161
*
162162
* Notes:
@@ -165,7 +165,7 @@ struct nvmf_ctrl_options {
165165
* 2. create_ctrl() must be defined (even if it does nothing)
166166
* 3. struct nvmf_transport_ops must be statically allocated in the
167167
* modules .bss section so that a pure module_get on @module
168-
* prevents the memory from beeing freed.
168+
* prevents the memory from being freed.
169169
*/
170170
struct nvmf_transport_ops {
171171
struct list_head entry;

drivers/nvme/host/fc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1955,7 +1955,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req)
19551955
}
19561956

19571957
/*
1958-
* For the linux implementation, if we have an unsuccesful
1958+
* For the linux implementation, if we have an unsucceesful
19591959
* status, they blk-mq layer can typically be called with the
19601960
* non-zero status and the content of the cqe isn't important.
19611961
*/
@@ -2479,7 +2479,7 @@ __nvme_fc_abort_outstanding_ios(struct nvme_fc_ctrl *ctrl, bool start_queues)
24792479
* writing the registers for shutdown and polling (call
24802480
* nvme_disable_ctrl()). Given a bunch of i/o was potentially
24812481
* just aborted and we will wait on those contexts, and given
2482-
* there was no indication of how live the controlelr is on the
2482+
* there was no indication of how live the controller is on the
24832483
* link, don't send more io to create more contexts for the
24842484
* shutdown. Let the controller fail via keepalive failure if
24852485
* its still present.

drivers/nvme/host/ioctl.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -493,13 +493,15 @@ static int nvme_uring_cmd_io(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
493493
d.timeout_ms = READ_ONCE(cmd->timeout_ms);
494494

495495
if (d.data_len && (ioucmd->flags & IORING_URING_CMD_FIXED)) {
496-
/* fixedbufs is only for non-vectored io */
497-
if (vec)
498-
return -EINVAL;
496+
int ddir = nvme_is_write(&c) ? WRITE : READ;
499497

500-
ret = io_uring_cmd_import_fixed(d.addr, d.data_len,
501-
nvme_is_write(&c) ? WRITE : READ, &iter, ioucmd,
502-
issue_flags);
498+
if (vec)
499+
ret = io_uring_cmd_import_fixed_vec(ioucmd,
500+
u64_to_user_ptr(d.addr), d.data_len,
501+
ddir, &iter, issue_flags);
502+
else
503+
ret = io_uring_cmd_import_fixed(d.addr, d.data_len,
504+
ddir, &iter, ioucmd, issue_flags);
503505
if (ret < 0)
504506
return ret;
505507

@@ -521,7 +523,7 @@ static int nvme_uring_cmd_io(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
521523
if (d.data_len) {
522524
ret = nvme_map_user_request(req, d.addr, d.data_len,
523525
nvme_to_user_ptr(d.metadata), d.metadata_len,
524-
map_iter, vec);
526+
map_iter, vec ? NVME_IOCTL_VEC : 0);
525527
if (ret)
526528
goto out_free_req;
527529
}
@@ -727,7 +729,7 @@ int nvme_ns_head_ioctl(struct block_device *bdev, blk_mode_t mode,
727729

728730
/*
729731
* Handle ioctls that apply to the controller instead of the namespace
730-
* seperately and drop the ns SRCU reference early. This avoids a
732+
* separately and drop the ns SRCU reference early. This avoids a
731733
* deadlock when deleting namespaces using the passthrough interface.
732734
*/
733735
if (is_ctrl_ioctl(cmd))

drivers/nvme/host/multipath.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -760,7 +760,7 @@ int nvme_mpath_alloc_disk(struct nvme_ctrl *ctrl, struct nvme_ns_head *head)
760760
* controller's scan_work context. If a path error occurs here, the IO
761761
* will wait until a path becomes available or all paths are torn down,
762762
* but that action also occurs within scan_work, so it would deadlock.
763-
* Defer the partion scan to a different context that does not block
763+
* Defer the partition scan to a different context that does not block
764764
* scan_work.
765765
*/
766766
set_bit(GD_SUPPRESS_PART_SCAN, &head->disk->state);

drivers/nvme/host/nvme.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,7 @@ static inline bool nvme_ns_head_multipath(struct nvme_ns_head *head)
523523
enum nvme_ns_features {
524524
NVME_NS_EXT_LBAS = 1 << 0, /* support extended LBA format */
525525
NVME_NS_METADATA_SUPPORTED = 1 << 1, /* support getting generated md */
526-
NVME_NS_DEAC = 1 << 2, /* DEAC bit in Write Zeores supported */
526+
NVME_NS_DEAC = 1 << 2, /* DEAC bit in Write Zeroes supported */
527527
};
528528

529529
struct nvme_ns {

0 commit comments

Comments
 (0)