]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
smb: smbdirect: provide explicit prototypes for cross .c file functions
authorStefan Metzmacher <metze@samba.org>
Mon, 27 Oct 2025 19:57:51 +0000 (20:57 +0100)
committerSteve French <stfrench@microsoft.com>
Thu, 16 Apr 2026 02:58:20 +0000 (21:58 -0500)
These prototypes are used between private .c files,
when they will be compiled alone into smbdirect.ko.

For now this uses the SMBDIRECT_USE_INLINE_C_FILES code path
and marks all function as '__maybe_unused static',
but this will make further changes easier.

Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Cc: Namjae Jeon <linkinjeon@kernel.org>
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/common/smbdirect/smbdirect_connection.c
fs/smb/common/smbdirect/smbdirect_internal.h
fs/smb/common/smbdirect/smbdirect_mr.c
fs/smb/common/smbdirect/smbdirect_socket.c

index 7f9fa2b615a22d703bfdd0c063cc16c15d61ba6f..38fb0f34dc86254fe32d7aa4238122e3561b775f 100644 (file)
@@ -143,8 +143,8 @@ static int smbdirect_connection_rdma_event_handler(struct rdma_cm_id *id,
        return 0;
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_connection_rdma_established(struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_rdma_established(struct smbdirect_socket *sc)
 {
        smbdirect_log_rdma_event(sc, SMBDIRECT_LOG_INFO,
                "rdma established: device: %.*s local: %pISpsfc remote: %pISpsfc\n",
@@ -157,8 +157,8 @@ static void smbdirect_connection_rdma_established(struct smbdirect_socket *sc)
        sc->rdma.expected_event = RDMA_CM_EVENT_DISCONNECTED;
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_connection_negotiation_done(struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_negotiation_done(struct smbdirect_socket *sc)
 {
        if (unlikely(sc->first_error))
                return;
@@ -233,8 +233,8 @@ static u32 smbdirect_rdma_rw_send_wrs(struct ib_device *dev,
        return factor * attr->cap.max_rdma_ctxs;
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_connection_create_qp(struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+int smbdirect_connection_create_qp(struct smbdirect_socket *sc)
 {
        const struct smbdirect_socket_parameters *sp = &sc->parameters;
        struct ib_qp_init_attr qp_attr;
@@ -391,7 +391,8 @@ err:
        return ret;
 }
 
-static void smbdirect_connection_destroy_qp(struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_destroy_qp(struct smbdirect_socket *sc)
 {
        if (sc->ib.qp) {
                ib_drain_qp(sc->ib.qp);
@@ -412,8 +413,8 @@ static void smbdirect_connection_destroy_qp(struct smbdirect_socket *sc)
        }
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_connection_create_mem_pools(struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+int smbdirect_connection_create_mem_pools(struct smbdirect_socket *sc)
 {
        const struct smbdirect_socket_parameters *sp = &sc->parameters;
        char name[80];
@@ -490,7 +491,8 @@ err:
        return -ENOMEM;
 }
 
-static void smbdirect_connection_destroy_mem_pools(struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_destroy_mem_pools(struct smbdirect_socket *sc)
 {
        struct smbdirect_recv_io *recv_io, *next_io;
 
@@ -517,8 +519,8 @@ static void smbdirect_connection_destroy_mem_pools(struct smbdirect_socket *sc)
        sc->send_io.mem.cache = NULL;
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static struct smbdirect_send_io *smbdirect_connection_alloc_send_io(struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+struct smbdirect_send_io *smbdirect_connection_alloc_send_io(struct smbdirect_socket *sc)
 {
        struct smbdirect_send_io *msg;
 
@@ -532,8 +534,8 @@ static struct smbdirect_send_io *smbdirect_connection_alloc_send_io(struct smbdi
        return msg;
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_connection_free_send_io(struct smbdirect_send_io *msg)
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_free_send_io(struct smbdirect_send_io *msg)
 {
        struct smbdirect_socket *sc = msg->socket;
        size_t i;
@@ -564,8 +566,8 @@ static void smbdirect_connection_free_send_io(struct smbdirect_send_io *msg)
        mempool_free(msg, sc->send_io.mem.pool);
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static struct smbdirect_recv_io *smbdirect_connection_get_recv_io(struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+struct smbdirect_recv_io *smbdirect_connection_get_recv_io(struct smbdirect_socket *sc)
 {
        struct smbdirect_recv_io *msg = NULL;
        unsigned long flags;
@@ -584,8 +586,8 @@ static struct smbdirect_recv_io *smbdirect_connection_get_recv_io(struct smbdire
        return msg;
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_connection_put_recv_io(struct smbdirect_recv_io *msg)
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_put_recv_io(struct smbdirect_recv_io *msg)
 {
        struct smbdirect_socket *sc = msg->socket;
        unsigned long flags;
@@ -606,10 +608,10 @@ static void smbdirect_connection_put_recv_io(struct smbdirect_recv_io *msg)
        queue_work(sc->workqueue, &sc->recv_io.posted.refill_work);
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_connection_reassembly_append_recv_io(struct smbdirect_socket *sc,
-                                                          struct smbdirect_recv_io *msg,
-                                                          u32 data_length)
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_reassembly_append_recv_io(struct smbdirect_socket *sc,
+                                                   struct smbdirect_recv_io *msg,
+                                                   u32 data_length)
 {
        unsigned long flags;
 
@@ -628,8 +630,8 @@ static void smbdirect_connection_reassembly_append_recv_io(struct smbdirect_sock
        sc->statistics.enqueue_reassembly_queue++;
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static struct smbdirect_recv_io *
+__SMBDIRECT_PRIVATE__
+struct smbdirect_recv_io *
 smbdirect_connection_reassembly_first_recv_io(struct smbdirect_socket *sc)
 {
        struct smbdirect_recv_io *msg;
@@ -641,11 +643,11 @@ smbdirect_connection_reassembly_first_recv_io(struct smbdirect_socket *sc)
        return msg;
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_connection_negotiate_rdma_resources(struct smbdirect_socket *sc,
-                                                         u8 peer_initiator_depth,
-                                                         u8 peer_responder_resources,
-                                                         const struct rdma_conn_param *param)
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_negotiate_rdma_resources(struct smbdirect_socket *sc,
+                                                  u8 peer_initiator_depth,
+                                                  u8 peer_responder_resources,
+                                                  const struct rdma_conn_param *param)
 {
        struct smbdirect_socket_parameters *sp = &sc->parameters;
 
@@ -786,7 +788,8 @@ int smbdirect_connection_wait_for_connected(struct smbdirect_socket *sc)
 }
 __SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_wait_for_connected);
 
-static void smbdirect_connection_idle_timer_work(struct work_struct *work)
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_idle_timer_work(struct work_struct *work)
 {
        struct smbdirect_socket *sc =
                container_of(work, struct smbdirect_socket, idle.timer_work.work);
@@ -817,8 +820,8 @@ static void smbdirect_connection_idle_timer_work(struct work_struct *work)
        queue_work(sc->workqueue, &sc->idle.immediate_work);
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static u16 smbdirect_connection_grant_recv_credits(struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+u16 smbdirect_connection_grant_recv_credits(struct smbdirect_socket *sc)
 {
        int missing;
        int available;
@@ -874,8 +877,9 @@ static bool smbdirect_connection_request_keep_alive(struct smbdirect_socket *sc)
        return false;
 }
 
-static int smbdirect_connection_post_send_wr(struct smbdirect_socket *sc,
-                                            struct ib_send_wr *wr)
+__SMBDIRECT_PRIVATE__
+int smbdirect_connection_post_send_wr(struct smbdirect_socket *sc,
+                                     struct ib_send_wr *wr)
 {
        int ret;
 
@@ -1456,8 +1460,8 @@ static void smbdirect_connection_send_immediate_work(struct work_struct *work)
        }
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_connection_post_recv_io(struct smbdirect_recv_io *msg)
+__SMBDIRECT_PRIVATE__
+int smbdirect_connection_post_recv_io(struct smbdirect_recv_io *msg)
 {
        struct smbdirect_socket *sc = msg->socket;
        const struct smbdirect_socket_parameters *sp = &sc->parameters;
@@ -1498,8 +1502,8 @@ static int smbdirect_connection_post_recv_io(struct smbdirect_recv_io *msg)
        return ret;
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_connection_recv_io_done(struct ib_cq *cq, struct ib_wc *wc)
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_recv_io_done(struct ib_cq *cq, struct ib_wc *wc)
 {
        struct smbdirect_recv_io *recv_io =
                container_of(wc->wr_cqe, struct smbdirect_recv_io, cqe);
@@ -1668,7 +1672,8 @@ error:
        smbdirect_socket_schedule_cleanup(sc, -ECONNABORTED);
 }
 
-static int smbdirect_connection_recv_io_refill(struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+int smbdirect_connection_recv_io_refill(struct smbdirect_socket *sc)
 {
        int missing;
        int posted = 0;
index f8f76bfe5c3e055f02ba44351c8813f3c75fa6ba..ae6044ddeb598b749d7f7a91d406a4232d465be5 100644 (file)
 #include "smbdirect_public.h"
 #include "smbdirect_socket.h"
 
-static void __smbdirect_socket_schedule_cleanup(struct smbdirect_socket *sc,
-                                               const char *macro_name,
-                                               unsigned int lvl,
-                                               const char *func,
-                                               unsigned int line,
-                                               int error,
-                                               enum smbdirect_socket_status *force_status);
+#ifdef SMBDIRECT_USE_INLINE_C_FILES
+/* this is temporary while this file is included in others */
+#define __SMBDIRECT_PRIVATE__ __maybe_unused static
+#else
+#define __SMBDIRECT_PRIVATE__
+#endif
+
+__SMBDIRECT_PRIVATE__
+int smbdirect_socket_init_new(struct net *net, struct smbdirect_socket *sc);
+
+__SMBDIRECT_PRIVATE__
+int smbdirect_socket_init_accepting(struct rdma_cm_id *id, struct smbdirect_socket *sc);
+
+__SMBDIRECT_PRIVATE__
+void __smbdirect_socket_schedule_cleanup(struct smbdirect_socket *sc,
+                                        const char *macro_name,
+                                        unsigned int lvl,
+                                        const char *func,
+                                        unsigned int line,
+                                        int error,
+                                        enum smbdirect_socket_status *force_status);
 #define smbdirect_socket_schedule_cleanup(__sc, __error) \
        __smbdirect_socket_schedule_cleanup(__sc, \
                "smbdirect_socket_schedule_cleanup", SMBDIRECT_LOG_ERR, \
@@ -37,21 +51,85 @@ static void __smbdirect_socket_schedule_cleanup(struct smbdirect_socket *sc,
                __func__, __LINE__, __error, &__force_status); \
 } while (0)
 
-static int smbdirect_socket_wait_for_credits(struct smbdirect_socket *sc,
-                                            enum smbdirect_socket_status expected_status,
-                                            int unexpected_errno,
-                                            wait_queue_head_t *waitq,
-                                            atomic_t *total_credits,
-                                            int needed);
+__SMBDIRECT_PRIVATE__
+void smbdirect_socket_destroy_sync(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PRIVATE__
+int smbdirect_socket_wait_for_credits(struct smbdirect_socket *sc,
+                                     enum smbdirect_socket_status expected_status,
+                                     int unexpected_errno,
+                                     wait_queue_head_t *waitq,
+                                     atomic_t *total_credits,
+                                     int needed);
+
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_rdma_established(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_negotiation_done(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PRIVATE__
+int smbdirect_connection_create_qp(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_destroy_qp(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PRIVATE__
+int smbdirect_connection_create_mem_pools(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_destroy_mem_pools(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PRIVATE__
+struct smbdirect_send_io *smbdirect_connection_alloc_send_io(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_free_send_io(struct smbdirect_send_io *msg);
+
+__SMBDIRECT_PRIVATE__
+struct smbdirect_recv_io *smbdirect_connection_get_recv_io(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_put_recv_io(struct smbdirect_recv_io *msg);
+
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_reassembly_append_recv_io(struct smbdirect_socket *sc,
+                                                   struct smbdirect_recv_io *msg,
+                                                   u32 data_length);
+
+__SMBDIRECT_PRIVATE__
+struct smbdirect_recv_io *
+smbdirect_connection_reassembly_first_recv_io(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_negotiate_rdma_resources(struct smbdirect_socket *sc,
+                                                  u8 peer_initiator_depth,
+                                                  u8 peer_responder_resources,
+                                                  const struct rdma_conn_param *param);
+
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_idle_timer_work(struct work_struct *work);
+
+__SMBDIRECT_PRIVATE__
+u16 smbdirect_connection_grant_recv_credits(struct smbdirect_socket *sc);
+
+__SMBDIRECT_PRIVATE__
+int smbdirect_connection_post_send_wr(struct smbdirect_socket *sc,
+                                     struct ib_send_wr *wr);
 
-static void smbdirect_connection_destroy_qp(struct smbdirect_socket *sc);
+__SMBDIRECT_PRIVATE__
+int smbdirect_connection_post_recv_io(struct smbdirect_recv_io *msg);
 
-static void smbdirect_connection_destroy_mem_pools(struct smbdirect_socket *sc);
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_recv_io_done(struct ib_cq *cq, struct ib_wc *wc);
 
-static void smbdirect_connection_put_recv_io(struct smbdirect_recv_io *msg);
+__SMBDIRECT_PRIVATE__
+int smbdirect_connection_recv_io_refill(struct smbdirect_socket *sc);
 
-static void smbdirect_connection_idle_timer_work(struct work_struct *work);
+__SMBDIRECT_PRIVATE__
+int smbdirect_connection_create_mr_list(struct smbdirect_socket *sc);
 
-static void smbdirect_connection_destroy_mr_list(struct smbdirect_socket *sc);
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_destroy_mr_list(struct smbdirect_socket *sc);
 
 #endif /* __FS_SMB_COMMON_SMBDIRECT_INTERNAL_H__ */
index 90879bd109c18ae479953458849b5491b2acb6a8..dc85cced8dc2e29756858792bc030b09e02c8ba7 100644 (file)
@@ -15,8 +15,8 @@ static void smbdirect_connection_mr_io_recovery_work(struct work_struct *work);
  * Recovery is done in smbd_mr_recovery_work. The content of list entry changes
  * as MRs are used and recovered for I/O, but the list links will not change
  */
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_connection_create_mr_list(struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+int smbdirect_connection_create_mr_list(struct smbdirect_socket *sc)
 {
        const struct smbdirect_socket_parameters *sp = &sc->parameters;
        struct smbdirect_mr_io *mr;
@@ -120,7 +120,8 @@ static void smbdirect_mr_io_free_locked(struct kref *kref)
        kfree(mr);
 }
 
-static void smbdirect_connection_destroy_mr_list(struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+void smbdirect_connection_destroy_mr_list(struct smbdirect_socket *sc)
 {
        struct smbdirect_mr_io *mr, *tmp;
        LIST_HEAD(all_list);
index a54c16daffb90bea6d0f5d0d4c454b2acccbcd16..ac75860e4dd6499d1c568578d4e8cae34bbb6d31 100644 (file)
@@ -52,7 +52,8 @@ static int smbdirect_socket_rdma_event_handler(struct rdma_cm_id *id,
        return -ESTALE;
 }
 
-static int smbdirect_socket_init_new(struct net *net, struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+int smbdirect_socket_init_new(struct net *net, struct smbdirect_socket *sc)
 {
        struct rdma_cm_id *id;
        int ret;
@@ -111,7 +112,8 @@ alloc_failed:
 }
 __SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_create_kern);
 
-static int smbdirect_socket_init_accepting(struct rdma_cm_id *id, struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+int smbdirect_socket_init_accepting(struct rdma_cm_id *id, struct smbdirect_socket *sc)
 {
        smbdirect_socket_init(sc);
 
@@ -308,13 +310,14 @@ static void smbdirect_socket_wake_up_all(struct smbdirect_socket *sc)
        wake_up_all(&sc->mr_io.cleanup.wait_queue);
 }
 
-static void __smbdirect_socket_schedule_cleanup(struct smbdirect_socket *sc,
-                                               const char *macro_name,
-                                               unsigned int lvl,
-                                               const char *func,
-                                               unsigned int line,
-                                               int error,
-                                               enum smbdirect_socket_status *force_status)
+__SMBDIRECT_PRIVATE__
+void __smbdirect_socket_schedule_cleanup(struct smbdirect_socket *sc,
+                                        const char *macro_name,
+                                        unsigned int lvl,
+                                        const char *func,
+                                        unsigned int line,
+                                        int error,
+                                        enum smbdirect_socket_status *force_status)
 {
        bool was_first = false;
 
@@ -559,8 +562,8 @@ static void smbdirect_socket_destroy(struct smbdirect_socket *sc)
                "rdma session destroyed\n");
 }
 
-__maybe_unused /* this is temporary while this file is included in others */
-static void smbdirect_socket_destroy_sync(struct smbdirect_socket *sc)
+__SMBDIRECT_PRIVATE__
+void smbdirect_socket_destroy_sync(struct smbdirect_socket *sc)
 {
        smbdirect_log_rdma_event(sc, SMBDIRECT_LOG_INFO,
                "status=%s first_error=%1pe",
@@ -659,13 +662,13 @@ void smbdirect_socket_release(struct smbdirect_socket *sc)
 }
 __SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_release);
 
-__maybe_unused /* this is temporary while this file is included in others */
-static int smbdirect_socket_wait_for_credits(struct smbdirect_socket *sc,
-                                            enum smbdirect_socket_status expected_status,
-                                            int unexpected_errno,
-                                            wait_queue_head_t *waitq,
-                                            atomic_t *total_credits,
-                                            int needed)
+__SMBDIRECT_PRIVATE__
+int smbdirect_socket_wait_for_credits(struct smbdirect_socket *sc,
+                                     enum smbdirect_socket_status expected_status,
+                                     int unexpected_errno,
+                                     wait_queue_head_t *waitq,
+                                     atomic_t *total_credits,
+                                     int needed)
 {
        int ret;