Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'nvme-6.18-2025-10-16' of git://git.infradead.org/nvme into block-6.18

Pull NVMe fixes from Keith:

"- iostats accounting fixed on multipath retries (Amit)
- secure concatenation response fixup (Martin)
- tls partial record fixup (Wilfred)"

* tag 'nvme-6.18-2025-10-16' of git://git.infradead.org/nvme:
nvme/tcp: handle tls partially sent records in write_space()
nvme-auth: update sc_c in host response
nvme-multipath: Skip nr_active increments in RETRY disposition

+12 -3
+5 -1
drivers/nvme/host/auth.c
··· 36 36 u8 status; 37 37 u8 dhgroup_id; 38 38 u8 hash_id; 39 + u8 sc_c; 39 40 size_t hash_len; 40 41 u8 c1[64]; 41 42 u8 c2[64]; ··· 154 153 data->auth_protocol[0].dhchap.idlist[33] = NVME_AUTH_DHGROUP_4096; 155 154 data->auth_protocol[0].dhchap.idlist[34] = NVME_AUTH_DHGROUP_6144; 156 155 data->auth_protocol[0].dhchap.idlist[35] = NVME_AUTH_DHGROUP_8192; 156 + 157 + chap->sc_c = data->sc_c; 157 158 158 159 return size; 159 160 } ··· 492 489 ret = crypto_shash_update(shash, buf, 2); 493 490 if (ret) 494 491 goto out; 495 - memset(buf, 0, sizeof(buf)); 492 + *buf = chap->sc_c; 496 493 ret = crypto_shash_update(shash, buf, 1); 497 494 if (ret) 498 495 goto out; ··· 503 500 strlen(ctrl->opts->host->nqn)); 504 501 if (ret) 505 502 goto out; 503 + memset(buf, 0, sizeof(buf)); 506 504 ret = crypto_shash_update(shash, buf, 1); 507 505 if (ret) 508 506 goto out;
+4 -2
drivers/nvme/host/multipath.c
··· 182 182 struct nvme_ns *ns = rq->q->queuedata; 183 183 struct gendisk *disk = ns->head->disk; 184 184 185 - if (READ_ONCE(ns->head->subsys->iopolicy) == NVME_IOPOLICY_QD) { 185 + if ((READ_ONCE(ns->head->subsys->iopolicy) == NVME_IOPOLICY_QD) && 186 + !(nvme_req(rq)->flags & NVME_MPATH_CNT_ACTIVE)) { 186 187 atomic_inc(&ns->ctrl->nr_active); 187 188 nvme_req(rq)->flags |= NVME_MPATH_CNT_ACTIVE; 188 189 } 189 190 190 - if (!blk_queue_io_stat(disk->queue) || blk_rq_is_passthrough(rq)) 191 + if (!blk_queue_io_stat(disk->queue) || blk_rq_is_passthrough(rq) || 192 + (nvme_req(rq)->flags & NVME_MPATH_IO_STATS)) 191 193 return; 192 194 193 195 nvme_req(rq)->flags |= NVME_MPATH_IO_STATS;
+3
drivers/nvme/host/tcp.c
··· 1081 1081 queue = sk->sk_user_data; 1082 1082 if (likely(queue && sk_stream_is_writeable(sk))) { 1083 1083 clear_bit(SOCK_NOSPACE, &sk->sk_socket->flags); 1084 + /* Ensure pending TLS partial records are retried */ 1085 + if (nvme_tcp_queue_tls(queue)) 1086 + queue->write_space(sk); 1084 1087 queue_work_on(queue->io_cpu, nvme_tcp_wq, &queue->io_work); 1085 1088 } 1086 1089 read_unlock_bh(&sk->sk_callback_lock);