From: Stefan Metzmacher Date: Mon, 27 Oct 2025 19:57:51 +0000 (+0100) Subject: smb: smbdirect: provide explicit prototypes for cross .c file functions X-Git-Tag: v7.1-rc1~128^2~89 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=89df0942907894a92dbece12bfa35e1647959b0c;p=thirdparty%2Fkernel%2Flinux.git smb: smbdirect: provide explicit prototypes for cross .c file functions 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 Cc: Tom Talpey Cc: Long Li Cc: Namjae Jeon Cc: linux-cifs@vger.kernel.org Cc: samba-technical@lists.samba.org Signed-off-by: Stefan Metzmacher Acked-by: Namjae Jeon Signed-off-by: Steve French --- diff --git a/fs/smb/common/smbdirect/smbdirect_connection.c b/fs/smb/common/smbdirect/smbdirect_connection.c index 7f9fa2b615a22..38fb0f34dc862 100644 --- a/fs/smb/common/smbdirect/smbdirect_connection.c +++ b/fs/smb/common/smbdirect/smbdirect_connection.c @@ -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; diff --git a/fs/smb/common/smbdirect/smbdirect_internal.h b/fs/smb/common/smbdirect/smbdirect_internal.h index f8f76bfe5c3e0..ae6044ddeb598 100644 --- a/fs/smb/common/smbdirect/smbdirect_internal.h +++ b/fs/smb/common/smbdirect/smbdirect_internal.h @@ -15,13 +15,27 @@ #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__ */ diff --git a/fs/smb/common/smbdirect/smbdirect_mr.c b/fs/smb/common/smbdirect/smbdirect_mr.c index 90879bd109c18..dc85cced8dc2e 100644 --- a/fs/smb/common/smbdirect/smbdirect_mr.c +++ b/fs/smb/common/smbdirect/smbdirect_mr.c @@ -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); diff --git a/fs/smb/common/smbdirect/smbdirect_socket.c b/fs/smb/common/smbdirect/smbdirect_socket.c index a54c16daffb90..ac75860e4dd64 100644 --- a/fs/smb/common/smbdirect/smbdirect_socket.c +++ b/fs/smb/common/smbdirect/smbdirect_socket.c @@ -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;