Re: [PATCH v7 5/5] nvmet-tcp: Support KeyUpdate

From: Christoph Hellwig

Date: Fri Mar 20 2026 - 03:55:04 EST


> static void nvmet_tcp_free_cmd_buffers(struct nvmet_tcp_cmd *cmd);
> +#ifdef CONFIG_NVME_TARGET_TCP_TLS
> +static int nvmet_tcp_tls_handshake(struct nvmet_tcp_queue *queue,
> + enum handshake_key_update_type keyupdate);
> +#endif

Can we find a way to just avoid the ifdefered here and just rely on
compiler dead code elimination?

> +#ifdef CONFIG_NVME_TARGET_TCP_TLS
> +static bool nvmet_tls_key_expired(struct nvmet_tcp_queue *queue, int ret)
> +{
> + return ret == -EKEYEXPIRED &&
> + queue->state != NVMET_TCP_Q_DISCONNECTING &&
> + queue->state != NVMET_TCP_Q_TLS_HANDSHAKE;
> +}
> +#else
> +static bool nvmet_tls_key_expired(struct nvmet_tcp_queue *queue, int ret)
> +{
> + return false;
> +}
> +#endif

This is a pretty clear candidate for IS_ENABLED().

> + spin_lock_bh(&queue->state_lock);
> + if (queue->state == NVMET_TCP_Q_TLS_HANDSHAKE) {
> + /* Socket closed during handshake */
> + tls_handshake_cancel(queue->sock->sk);
> + }
> + if (queue->state != NVMET_TCP_Q_DISCONNECTING) {
> + queue->state = NVMET_TCP_Q_DISCONNECTING;
> + kref_put(&queue->kref, nvmet_tcp_release_queue);
> + }

switch on the queue state?

> + ret = nvmet_tcp_tls_handshake(queue, HANDSHAKE_KEY_UPDATE_TYPE_RECEIVED);

Overly lone line.

> if (unlikely(ret < 0)) {
> + if (nvmet_tls_key_expired(queue, ret))
> + goto done;

This has extra indentation.