Message ID | 20211103193823.111007-5-linux@weissschuh.net (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net/9p: optimize transport module loading | expand |
Hi Dominique, On 2021-11-03 20:38+0100, Thomas Weißschuh wrote: > 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@weissschuh.net> > --- > 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 I did not notice that you already had applied "net/9p: autoload transport modules" to your tree when sending this series. Please note that in this series I modified patch 1 a bit, from the ony you applied, to prevent warnings in patch 4. Concretely I modified the prototypes of `v9fs_get_trans_by_name()` and `_p9_get_trans_by_name()` to take const parameters. Feel free to roll those changes into this patch when applying or I can resend the patch/series. Thomas
Hi, Thomas Weißschuh wrote on Mon, Nov 08, 2021 at 07:50:34PM +0100: > I did not notice that you already had applied "net/9p: autoload transport modules" > to your tree when sending this series. > > Please note that in this series I modified patch 1 a bit, from the ony you > applied, to prevent warnings in patch 4. > Concretely I modified the prototypes of `v9fs_get_trans_by_name()` and > `_p9_get_trans_by_name()` to take const parameters. > > Feel free to roll those changes into this patch when applying or I can resend > the patch/series. Thanks for the heads up, it's ok -- I'll move the constification of these functions to patch 4 myself. I've just sent my pull request to Linus so will take your patches to my for-next branch when that's merged.
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);
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@weissschuh.net> --- net/9p/mod.c | 9 +++++++++ 1 file changed, 9 insertions(+)