[PATCH v2 4/4] net/p9: load default transports

From: Thomas Weißschuh
Date: Wed Nov 03 2021 - 15:38:45 EST


Now that all transports are split into modules it may happen that no
transports are registered when v9fs_get_default_trans() is called.
When that is the case try to load more transports from modules.

Signed-off-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx>
---
net/9p/mod.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/net/9p/mod.c b/net/9p/mod.c
index 8f1d067b272e..7bb875cd279f 100644
--- a/net/9p/mod.c
+++ b/net/9p/mod.c
@@ -128,6 +128,10 @@ struct p9_trans_module *v9fs_get_trans_by_name(const char *s)
}
EXPORT_SYMBOL(v9fs_get_trans_by_name);

+static const char * const v9fs_default_transports[] = {
+ "virtio", "tcp", "fd", "unix", "xen", "rdma",
+};
+
/**
* v9fs_get_default_trans - get the default transport
*
@@ -136,6 +140,7 @@ EXPORT_SYMBOL(v9fs_get_trans_by_name);
struct p9_trans_module *v9fs_get_default_trans(void)
{
struct p9_trans_module *t, *found = NULL;
+ int i;

spin_lock(&v9fs_trans_lock);

@@ -153,6 +158,10 @@ struct p9_trans_module *v9fs_get_default_trans(void)
}

spin_unlock(&v9fs_trans_lock);
+
+ for (i = 0; !found && i < ARRAY_SIZE(v9fs_default_transports); i++)
+ found = v9fs_get_trans_by_name(v9fs_default_transports[i]);
+
return found;
}
EXPORT_SYMBOL(v9fs_get_default_trans);
--
2.33.1