]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
nvme-tcp: move nvme_tcp_reclassify_socket()
authorShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Sat, 30 May 2026 05:20:44 +0000 (14:20 +0900)
committerKeith Busch <kbusch@kernel.org>
Wed, 3 Jun 2026 09:43:54 +0000 (02:43 -0700)
Move nvme_tcp_reclassify_socket() in tcp.c after the struct
nvme_tcp_queue definition. This is preparation for adding a reference
to struct nvme_tcp_queue in the function, which would otherwise cause a
compile failure due to the struct being defined after the function.

Move the entire CONFIG_DEBUG_LOCK_ALLOC block along with the function
to maintain the code organization.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/host/tcp.c

index 6241e71130c4f4a3d7e1be66a2955cffdfb534c0..353ac6ce9fbdf9aa63516ea8dacfbfd972aa6bac 100644 (file)
@@ -56,44 +56,6 @@ MODULE_PARM_DESC(tls_handshake_timeout,
 
 static atomic_t nvme_tcp_cpu_queues[NR_CPUS];
 
-#ifdef CONFIG_DEBUG_LOCK_ALLOC
-/* lockdep can detect a circular dependency of the form
- *   sk_lock -> mmap_lock (page fault) -> fs locks -> sk_lock
- * because dependencies are tracked for both nvme-tcp and user contexts. Using
- * a separate class prevents lockdep from conflating nvme-tcp socket use with
- * user-space socket API use.
- */
-static struct lock_class_key nvme_tcp_sk_key[2];
-static struct lock_class_key nvme_tcp_slock_key[2];
-
-static void nvme_tcp_reclassify_socket(struct socket *sock)
-{
-       struct sock *sk = sock->sk;
-
-       if (WARN_ON_ONCE(!sock_allow_reclassification(sk)))
-               return;
-
-       switch (sk->sk_family) {
-       case AF_INET:
-               sock_lock_init_class_and_name(sk, "slock-AF_INET-NVME",
-                                             &nvme_tcp_slock_key[0],
-                                             "sk_lock-AF_INET-NVME",
-                                             &nvme_tcp_sk_key[0]);
-               break;
-       case AF_INET6:
-               sock_lock_init_class_and_name(sk, "slock-AF_INET6-NVME",
-                                             &nvme_tcp_slock_key[1],
-                                             "sk_lock-AF_INET6-NVME",
-                                             &nvme_tcp_sk_key[1]);
-               break;
-       default:
-               WARN_ON_ONCE(1);
-       }
-}
-#else
-static void nvme_tcp_reclassify_socket(struct socket *sock) { }
-#endif
-
 enum nvme_tcp_send_state {
        NVME_TCP_SEND_CMD_PDU = 0,
        NVME_TCP_SEND_H2C_PDU,
@@ -207,6 +169,44 @@ static const struct blk_mq_ops nvme_tcp_mq_ops;
 static const struct blk_mq_ops nvme_tcp_admin_mq_ops;
 static int nvme_tcp_try_send(struct nvme_tcp_queue *queue);
 
+#ifdef CONFIG_DEBUG_LOCK_ALLOC
+/* lockdep can detect a circular dependency of the form
+ *   sk_lock -> mmap_lock (page fault) -> fs locks -> sk_lock
+ * because dependencies are tracked for both nvme-tcp and user contexts. Using
+ * a separate class prevents lockdep from conflating nvme-tcp socket use with
+ * user-space socket API use.
+ */
+static struct lock_class_key nvme_tcp_sk_key[2];
+static struct lock_class_key nvme_tcp_slock_key[2];
+
+static void nvme_tcp_reclassify_socket(struct socket *sock)
+{
+       struct sock *sk = sock->sk;
+
+       if (WARN_ON_ONCE(!sock_allow_reclassification(sk)))
+               return;
+
+       switch (sk->sk_family) {
+       case AF_INET:
+               sock_lock_init_class_and_name(sk, "slock-AF_INET-NVME",
+                                             &nvme_tcp_slock_key[0],
+                                             "sk_lock-AF_INET-NVME",
+                                             &nvme_tcp_sk_key[0]);
+               break;
+       case AF_INET6:
+               sock_lock_init_class_and_name(sk, "slock-AF_INET6-NVME",
+                                             &nvme_tcp_slock_key[1],
+                                             "sk_lock-AF_INET6-NVME",
+                                             &nvme_tcp_sk_key[1]);
+               break;
+       default:
+               WARN_ON_ONCE(1);
+       }
+}
+#else
+static void nvme_tcp_reclassify_socket(struct socket *sock) { }
+#endif
+
 static inline struct nvme_tcp_ctrl *to_tcp_ctrl(struct nvme_ctrl *ctrl)
 {
        return container_of(ctrl, struct nvme_tcp_ctrl, ctrl);