2006-01-31 10:13:42

by Olaf Kirch

[permalink] [raw]
Subject: [PATCH] Auto-load RPC authentication kernel modules (client-side)

Summary: Auto-load RPC authentication kernel modules (client-side)

This patch adds a request_module call to rpcauth_create which will try
to auto-load the kernel module for the requested authentication flavor.
For kernels with modular sunrpc, this reduces the admin overhead for
the user.

Signed-off-by: Olaf Kirch <[email protected]>

net/sunrpc/auth.c | 16 ++++++++++++++--
1 files changed, 14 insertions(+), 2 deletions(-)

Index: build/net/sunrpc/auth.c
===================================================================
--- build.orig/net/sunrpc/auth.c
+++ build/net/sunrpc/auth.c
@@ -64,14 +64,26 @@ rpcauth_create(rpc_authflavor_t pseudofl
struct rpc_authops *ops;
u32 flavor = pseudoflavor_to_flavor(pseudoflavor);

- if (flavor >= RPC_AUTH_MAXFLAVOR || !(ops = auth_flavors[flavor]))
- return ERR_PTR(-EINVAL);
+ auth = ERR_PTR(-EINVAL);
+ if (flavor >= RPC_AUTH_MAXFLAVOR)
+ goto out;
+
+ /* FIXME - auth_flavors[] really needs an rw lock,
+ * and module refcounting. */
+#ifdef CONFIG_KMOD
+ if ((ops = auth_flavors[flavor]) == NULL)
+ request_module("rpc-auth-%u", flavor);
+#endif
+ if ((ops = auth_flavors[flavor]) == NULL)
+ goto out;
auth = ops->create(clnt, pseudoflavor);
if (IS_ERR(auth))
return auth;
if (clnt->cl_auth)
rpcauth_destroy(clnt->cl_auth);
clnt->cl_auth = auth;
+
+out:
return auth;
}

--
Olaf Kirch | --- o --- Nous sommes du soleil we love when we play
[email protected] | / | \ sol.dhoop.naytheet.ah kin.ir.samse.qurax


-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs


2006-01-31 13:04:52

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH] Auto-load RPC authentication kernel modules (client-side)

On Tue, 2006-01-31 at 11:13 +0100, Olaf Kirch wrote:
> Summary: Auto-load RPC authentication kernel modules (client-side)
>
> This patch adds a request_module call to rpcauth_create which will try
> to auto-load the kernel module for the requested authentication flavor.
> For kernels with modular sunrpc, this reduces the admin overhead for
> the user.

Looks good. Applied

Cheers,
Trond



-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs

2006-01-31 16:00:56

by Chuck Lever

[permalink] [raw]
Subject: Re: [PATCH] Auto-load RPC authentication kernel modules (client-side)

i like it. i suppose i should add similar logic to load transport
modules automatically.

Olaf Kirch wrote:
> Summary: Auto-load RPC authentication kernel modules (client-side)
>
> This patch adds a request_module call to rpcauth_create which will try
> to auto-load the kernel module for the requested authentication flavor.
> For kernels with modular sunrpc, this reduces the admin overhead for
> the user.
>
> Signed-off-by: Olaf Kirch <[email protected]>
>
> net/sunrpc/auth.c | 16 ++++++++++++++--
> 1 files changed, 14 insertions(+), 2 deletions(-)
>
> Index: build/net/sunrpc/auth.c
> ===================================================================
> --- build.orig/net/sunrpc/auth.c
> +++ build/net/sunrpc/auth.c
> @@ -64,14 +64,26 @@ rpcauth_create(rpc_authflavor_t pseudofl
> struct rpc_authops *ops;
> u32 flavor = pseudoflavor_to_flavor(pseudoflavor);
>
> - if (flavor >= RPC_AUTH_MAXFLAVOR || !(ops = auth_flavors[flavor]))
> - return ERR_PTR(-EINVAL);
> + auth = ERR_PTR(-EINVAL);
> + if (flavor >= RPC_AUTH_MAXFLAVOR)
> + goto out;
> +
> + /* FIXME - auth_flavors[] really needs an rw lock,
> + * and module refcounting. */
> +#ifdef CONFIG_KMOD
> + if ((ops = auth_flavors[flavor]) == NULL)
> + request_module("rpc-auth-%u", flavor);
> +#endif
> + if ((ops = auth_flavors[flavor]) == NULL)
> + goto out;
> auth = ops->create(clnt, pseudoflavor);
> if (IS_ERR(auth))
> return auth;
> if (clnt->cl_auth)
> rpcauth_destroy(clnt->cl_auth);
> clnt->cl_auth = auth;
> +
> +out:
> return auth;
> }
>


Attachments:
cel.vcf (451.00 B)