mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
smb: smbdirect: make use of DEFAULT_SYMBOL_NAMESPACE and EXPORT_SYMBOL_GPL
This is a better solution than EXPORT_SYMBOL_FOR_MODULES(__sym, "cifs,ksmbd") as it makes it possible to rebuild smbdirect.ko against a running kernel and then load the existing cifs.ko and ksmbd.ko from the running kernel. Suggested-by: Christoph Hellwig <hch@infradead.org> Link: https://lore.kernel.org/linux-cifs/aehrPuY60VMcYGU8@infradead.org/ 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: Christoph Hellwig <hch@infradead.org> Cc: linux-cifs@vger.kernel.org Cc: samba-technical@lists.samba.org Signed-off-by: Stefan Metzmacher <metze@samba.org> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
227c3d546e
commit
5234094c01
|
|
@ -558,3 +558,5 @@ void smbd_debug_proc_show(struct TCP_Server_Info *server, struct seq_file *m)
|
|||
server->rdma_readwrite_threshold,
|
||||
m);
|
||||
}
|
||||
|
||||
MODULE_IMPORT_NS("SMBDIRECT");
|
||||
|
|
|
|||
|
|
@ -540,3 +540,5 @@ static const struct ksmbd_transport_ops ksmbd_smb_direct_transport_ops = {
|
|||
.rdma_write = smb_direct_rdma_write,
|
||||
.free_transport = smb_direct_free_transport,
|
||||
};
|
||||
|
||||
MODULE_IMPORT_NS("SMBDIRECT");
|
||||
|
|
|
|||
|
|
@ -854,4 +854,4 @@ struct smbdirect_socket *smbdirect_socket_accept(struct smbdirect_socket *lsc,
|
|||
|
||||
return nsc;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_accept);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_socket_accept);
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ int smbdirect_connect(struct smbdirect_socket *sc, const struct sockaddr *dst)
|
|||
*/
|
||||
return 0;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connect);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_connect);
|
||||
|
||||
static int smbdirect_connect_setup_connection(struct smbdirect_socket *sc)
|
||||
{
|
||||
|
|
@ -922,4 +922,4 @@ int smbdirect_connect_sync(struct smbdirect_socket *sc,
|
|||
|
||||
return 0;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connect_sync);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_connect_sync);
|
||||
|
|
|
|||
|
|
@ -706,7 +706,7 @@ bool smbdirect_connection_is_connected(struct smbdirect_socket *sc)
|
|||
return false;
|
||||
return true;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_is_connected);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_connection_is_connected);
|
||||
|
||||
int smbdirect_connection_wait_for_connected(struct smbdirect_socket *sc)
|
||||
{
|
||||
|
|
@ -779,7 +779,7 @@ int smbdirect_connection_wait_for_connected(struct smbdirect_socket *sc)
|
|||
|
||||
return 0;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_wait_for_connected);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_connection_wait_for_connected);
|
||||
|
||||
void smbdirect_connection_idle_timer_work(struct work_struct *work)
|
||||
{
|
||||
|
|
@ -958,7 +958,7 @@ int smbdirect_connection_send_batch_flush(struct smbdirect_socket *sc,
|
|||
|
||||
return ret;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_send_batch_flush);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_connection_send_batch_flush);
|
||||
|
||||
struct smbdirect_send_batch *
|
||||
smbdirect_init_send_batch_storage(struct smbdirect_send_batch_storage *storage,
|
||||
|
|
@ -976,7 +976,7 @@ smbdirect_init_send_batch_storage(struct smbdirect_send_batch_storage *storage,
|
|||
|
||||
return batch;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_init_send_batch_storage);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_init_send_batch_storage);
|
||||
|
||||
static int smbdirect_connection_wait_for_send_bcredit(struct smbdirect_socket *sc,
|
||||
struct smbdirect_send_batch *batch)
|
||||
|
|
@ -1263,7 +1263,7 @@ int smbdirect_connection_send_single_iter(struct smbdirect_socket *sc,
|
|||
bcredit_failed:
|
||||
return ret;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_send_single_iter);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_connection_send_single_iter);
|
||||
|
||||
int smbdirect_connection_send_wait_zero_pending(struct smbdirect_socket *sc)
|
||||
{
|
||||
|
|
@ -1288,7 +1288,7 @@ int smbdirect_connection_send_wait_zero_pending(struct smbdirect_socket *sc)
|
|||
|
||||
return 0;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_send_wait_zero_pending);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_connection_send_wait_zero_pending);
|
||||
|
||||
int smbdirect_connection_send_iter(struct smbdirect_socket *sc,
|
||||
struct iov_iter *iter,
|
||||
|
|
@ -1373,7 +1373,7 @@ int smbdirect_connection_send_iter(struct smbdirect_socket *sc,
|
|||
|
||||
return total_count;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_send_iter);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_connection_send_iter);
|
||||
|
||||
static void smbdirect_connection_send_io_done(struct ib_cq *cq, struct ib_wc *wc)
|
||||
{
|
||||
|
|
@ -1937,7 +1937,7 @@ int smbdirect_connection_recvmsg(struct smbdirect_socket *sc,
|
|||
|
||||
goto again;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_recvmsg);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_connection_recvmsg);
|
||||
|
||||
static bool smbdirect_map_sges_single_page(struct smbdirect_map_sges *state,
|
||||
struct page *page, size_t off, size_t len)
|
||||
|
|
|
|||
|
|
@ -85,4 +85,4 @@ void smbdirect_connection_legacy_debug_proc_show(struct smbdirect_socket *sc,
|
|||
atomic_read(&sc->mr_io.ready.count),
|
||||
atomic_read(&sc->mr_io.used.count));
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_legacy_debug_proc_show);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_connection_legacy_debug_proc_show);
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ u8 smbdirect_netdev_rdma_capable_node_type(struct net_device *netdev)
|
|||
|
||||
return RDMA_NODE_UNSPECIFIED;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_netdev_rdma_capable_node_type);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_netdev_rdma_capable_node_type);
|
||||
|
||||
__init int smbdirect_devices_init(void)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#ifndef __FS_SMB_COMMON_SMBDIRECT_INTERNAL_H__
|
||||
#define __FS_SMB_COMMON_SMBDIRECT_INTERNAL_H__
|
||||
|
||||
#define DEFAULT_SYMBOL_NAMESPACE "SMBDIRECT"
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include "smbdirect.h"
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ int smbdirect_socket_listen(struct smbdirect_socket *sc, int backlog)
|
|||
*/
|
||||
return 0;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_listen);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_socket_listen);
|
||||
|
||||
static int smbdirect_new_rdma_event_handler(struct rdma_cm_id *new_id,
|
||||
struct rdma_cm_event *event)
|
||||
|
|
|
|||
|
|
@ -380,7 +380,7 @@ smbdirect_connection_register_mr_io(struct smbdirect_socket *sc,
|
|||
mutex_unlock(&mr->mutex);
|
||||
return NULL;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_register_mr_io);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_connection_register_mr_io);
|
||||
|
||||
void smbdirect_mr_io_fill_buffer_descriptor(struct smbdirect_mr_io *mr,
|
||||
struct smbdirect_buffer_descriptor_v1 *v1)
|
||||
|
|
@ -397,7 +397,7 @@ void smbdirect_mr_io_fill_buffer_descriptor(struct smbdirect_mr_io *mr,
|
|||
}
|
||||
mutex_unlock(&mr->mutex);
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_mr_io_fill_buffer_descriptor);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_mr_io_fill_buffer_descriptor);
|
||||
|
||||
/*
|
||||
* Deregister a MR after I/O is done
|
||||
|
|
@ -490,4 +490,4 @@ void smbdirect_connection_deregister_mr_io(struct smbdirect_mr_io *mr)
|
|||
if (!kref_put(&mr->kref, smbdirect_mr_io_free_locked))
|
||||
mutex_unlock(&mr->mutex);
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_deregister_mr_io);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_connection_deregister_mr_io);
|
||||
|
|
|
|||
|
|
@ -13,8 +13,6 @@ struct smbdirect_socket;
|
|||
struct smbdirect_send_batch;
|
||||
struct smbdirect_mr_io;
|
||||
|
||||
#define __SMBDIRECT_EXPORT_SYMBOL__(__sym) EXPORT_SYMBOL_FOR_MODULES(__sym, "cifs,ksmbd")
|
||||
|
||||
#include <rdma/rw.h>
|
||||
|
||||
u8 smbdirect_netdev_rdma_capable_node_type(struct net_device *netdev);
|
||||
|
|
|
|||
|
|
@ -252,4 +252,4 @@ int smbdirect_connection_rdma_xmit(struct smbdirect_socket *sc,
|
|||
kfree(msg);
|
||||
goto out;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_connection_rdma_xmit);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_connection_rdma_xmit);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ bool smbdirect_frwr_is_supported(const struct ib_device_attr *attrs)
|
|||
return false;
|
||||
return true;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_frwr_is_supported);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_frwr_is_supported);
|
||||
|
||||
static void smbdirect_socket_cleanup_work(struct work_struct *work);
|
||||
|
||||
|
|
@ -107,7 +107,7 @@ int smbdirect_socket_create_kern(struct net *net, struct smbdirect_socket **_sc)
|
|||
alloc_failed:
|
||||
return ret;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_create_kern);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_socket_create_kern);
|
||||
|
||||
int smbdirect_socket_init_accepting(struct rdma_cm_id *id, struct smbdirect_socket *sc)
|
||||
{
|
||||
|
|
@ -148,7 +148,7 @@ int smbdirect_socket_create_accepting(struct rdma_cm_id *id, struct smbdirect_so
|
|||
alloc_failed:
|
||||
return ret;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_create_accepting);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_socket_create_accepting);
|
||||
|
||||
int smbdirect_socket_set_initial_parameters(struct smbdirect_socket *sc,
|
||||
const struct smbdirect_socket_parameters *sp)
|
||||
|
|
@ -189,14 +189,14 @@ int smbdirect_socket_set_initial_parameters(struct smbdirect_socket *sc,
|
|||
|
||||
return 0;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_set_initial_parameters);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_socket_set_initial_parameters);
|
||||
|
||||
const struct smbdirect_socket_parameters *
|
||||
smbdirect_socket_get_current_parameters(struct smbdirect_socket *sc)
|
||||
{
|
||||
return &sc->parameters;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_get_current_parameters);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_socket_get_current_parameters);
|
||||
|
||||
int smbdirect_socket_set_kernel_settings(struct smbdirect_socket *sc,
|
||||
enum ib_poll_context poll_ctx,
|
||||
|
|
@ -220,7 +220,7 @@ int smbdirect_socket_set_kernel_settings(struct smbdirect_socket *sc,
|
|||
|
||||
return 0;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_set_kernel_settings);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_socket_set_kernel_settings);
|
||||
|
||||
void smbdirect_socket_set_logging(struct smbdirect_socket *sc,
|
||||
void *private_ptr,
|
||||
|
|
@ -240,7 +240,7 @@ void smbdirect_socket_set_logging(struct smbdirect_socket *sc,
|
|||
sc->logging.needed = needed;
|
||||
sc->logging.vaprintf = vaprintf;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_set_logging);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_socket_set_logging);
|
||||
|
||||
static void smbdirect_socket_wake_up_all(struct smbdirect_socket *sc)
|
||||
{
|
||||
|
|
@ -663,13 +663,13 @@ int smbdirect_socket_bind(struct smbdirect_socket *sc, struct sockaddr *addr)
|
|||
|
||||
return 0;
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_bind);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_socket_bind);
|
||||
|
||||
void smbdirect_socket_shutdown(struct smbdirect_socket *sc)
|
||||
{
|
||||
smbdirect_socket_schedule_cleanup_lvl(sc, SMBDIRECT_LOG_INFO, -ESHUTDOWN);
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_shutdown);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_socket_shutdown);
|
||||
|
||||
static void smbdirect_socket_release_disconnect(struct kref *kref)
|
||||
{
|
||||
|
|
@ -712,7 +712,7 @@ void smbdirect_socket_release(struct smbdirect_socket *sc)
|
|||
*/
|
||||
kref_put(&sc->refs.destroy, smbdirect_socket_release_destroy);
|
||||
}
|
||||
__SMBDIRECT_EXPORT_SYMBOL__(smbdirect_socket_release);
|
||||
EXPORT_SYMBOL_GPL(smbdirect_socket_release);
|
||||
|
||||
int smbdirect_socket_wait_for_credits(struct smbdirect_socket *sc,
|
||||
enum smbdirect_socket_status expected_status,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user