Skip to contentSkip to conversation

knfsd: export svc_sock_enqueue, svc_sock_received

RFC PATCH In review Greg Banks 4 participants 6 messages May 16, 2007 – May 18, 2007

Subsystems (3)
lore
Share & tools
lore

Greg Banks

author
#0 lore raw

RFC PATCH 7/14 knfsd: export svc_sock_enqueue, svc_sock_received

Export svc_sock_enqueue() and svc_sock_received() so they can be used by sunrpc server transport implementations (even future modular ones).

---

 include/linux/sunrpc/svcsock.h |    2 ++
 net/sunrpc/sunrpc_syms.c       |    2 ++
 net/sunrpc/svcsock.c           |    4 ++--
 3 files changed, 6 insertions(+), 2 deletions(-)
include/linux/sunrpc/svcsock.h +2 -0
Index: linux/include/linux/sunrpc/svcsock.h
===================================================================
@@ -114,6 +114,8 @@ int		svc_addsock(struct svc_serv *serv,
 			    int fd,
 			    char *name_return,
 			    int *proto);
+void		svc_sock_enqueue(struct svc_sock *svsk);
+void		svc_sock_received(struct svc_sock *svsk);
 
 /*
  * svc_makesock socket characteristics
net/sunrpc/sunrpc_syms.c +2 -0
Index: linux/net/sunrpc/sunrpc_syms.c
===================================================================
@@ -77,6 +77,8 @@ EXPORT_SYMBOL(svc_process);
 EXPORT_SYMBOL(svc_recv);
 EXPORT_SYMBOL(svc_wake_up);
 EXPORT_SYMBOL(svc_makesock);
+EXPORT_SYMBOL_GPL(svc_sock_enqueue);
+EXPORT_SYMBOL_GPL(svc_sock_received);
 EXPORT_SYMBOL(svc_reserve);
 EXPORT_SYMBOL(svc_auth_register);
 EXPORT_SYMBOL(auth_domain_lookup);
net/sunrpc/svcsock.c +2 -2
Index: linux/net/sunrpc/svcsock.c
===================================================================
@@ -208,7 +208,7 @@ svc_release_skb(struct svc_rqst *rqstp)
  * processes, wake 'em up.
  *
  */
-static void
+void
 svc_sock_enqueue(struct svc_sock *svsk)
 {
 	struct svc_serv	*serv = svsk->sk_server;
@@ -316,7 +316,7 @@ svc_sock_dequeue(struct svc_pool *pool)
  * Note: SK_DATA only gets cleared when a read-attempt finds
  * no (or insufficient) data.
  */
-static inline void
+void
 svc_sock_received(struct svc_sock *svsk)
 {
 	svsk->sk_pool = NULL;
Signature · 12 lines
Greg Banks, R&D Software Engineer, SGI Australian Software Group.
Apparently, I'm Bedevere.  Which MPHG character are you?
I don't speak for SGI.

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
NFS maillist  -  [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs
#1 lore raw
Quoted 4 lines · Greg Banks

Export svc_sock_enqueue() and svc_sock_received() so they can be used by sunrpc server transport implementations (even future modular ones).

Have you thought about how you'll handle the reference counting in the modular case?

--b.

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs

author
#2 lore raw
Quoted 8 lines · J. Bruce Fields
Quoted 4 lines · Greg Banks

Export svc_sock_enqueue() and svc_sock_received() so they can be used by sunrpc server transport implementations (even future modular ones).

Have you thought about how you'll handle the reference counting in the modular case?

Yes, but only thought not experimented nor discussed. I was planning to add a new file to /proc/fs/nfsd roughly analagous to the ports and versions files, where the init script could write a string to indicate which transports are enabled or disabled. Transports would be managed in a global list of structures analagous to struct xprt_type in Chuck's client patches. Enabling from userspace would search this list, try a module load on failure, and bump the refcount. Disabling would shut down all svc_sock belonging to the transport type, then drop the module refcount. Neither traffic from clients nor creation of svc_socks would affect the module refcount.

Greg.

Signature · 12 lines
Greg Banks, R&D Software Engineer, SGI Australian Software Group.
Apparently, I'm Bedevere.  Which MPHG character are you?
I don't speak for SGI.

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
NFS maillist  -  [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs
#4 lore raw
In reply to Greg Banks

net/sunrpc/sunrpc_syms.c EXPORT_SYMBOL(svc_process); · line 84

Quoted 13 lines · On Thursday May 17, [email protected] wrote:

Index: linux/net/sunrpc/sunrpc_syms.c
===================================================================

net/sunrpc/sunrpc_syms.c +2 -0
@@ -77,6 +77,8 @@ EXPORT_SYMBOL(svc_process);
 EXPORT_SYMBOL(svc_recv);
 EXPORT_SYMBOL(svc_wake_up);
 EXPORT_SYMBOL(svc_makesock);
+EXPORT_SYMBOL_GPL(svc_sock_enqueue);
+EXPORT_SYMBOL_GPL(svc_sock_received);
 EXPORT_SYMBOL(svc_reserve);
 EXPORT_SYMBOL(svc_auth_register);
 EXPORT_SYMBOL(auth_domain_lookup);

Can we please put new EXPORT_SYMBOLS near the function rather than in this file? And if anyone wants to move them all out, I'm fine with that.

NeilBrown

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs

#3 lore raw
In reply to Greg Banks
Quoted 6 lines · Greg Banks

I was planning
to add a new file to /proc/fs/nfsd roughly analagous to the ports and versions files, where the init script could write a string to indicate which transports are enabled or disabled. Transports would be managed in a global list of structures analagous to struct xprt_type in Chuck's client patches.

I like this, it seems nearly the same as the /proc/fs/nfsd/thread node that's in there now. A new /proc/fs/nfsd/protocols node makes sense to me.

Another option might be to support switches to the nfsd command, like other os's do (nfsd -u). This makes a lot of sense if the current #ifdef's to enable nfsd's protocols is retained. If module loading is supported, I like the dynamic /proc aproach better.

Tom.

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs

author
#5 lore raw
In reply to Neil Brown
Quoted 17 lines · Neil Brown

net/sunrpc/sunrpc_syms.c EXPORT_SYMBOL(svc_process); · line 84

Quoted 13 lines · On Thursday May 17, [email protected] wrote:

Index: linux/net/sunrpc/sunrpc_syms.c
===================================================================

net/sunrpc/sunrpc_syms.c +2 -0
@@ -77,6 +77,8 @@ EXPORT_SYMBOL(svc_process);
 EXPORT_SYMBOL(svc_recv);
 EXPORT_SYMBOL(svc_wake_up);
 EXPORT_SYMBOL(svc_makesock);
+EXPORT_SYMBOL_GPL(svc_sock_enqueue);
+EXPORT_SYMBOL_GPL(svc_sock_received);
 EXPORT_SYMBOL(svc_reserve);
 EXPORT_SYMBOL(svc_auth_register);
 EXPORT_SYMBOL(auth_domain_lookup);

Can we please put new EXPORT_SYMBOLS near the function rather than in this file?

Fixed, in all 3 patches which did this.

Quoted 3 lines

And if anyone wants to move them all out, I'm fine with
that.

There won't be much left of sunrpc_syms.c ;-)

Greg.

Signature · 12 lines
Greg Banks, R&D Software Engineer, SGI Australian Software Group.
Apparently, I'm Bedevere.  Which MPHG character are you?
I don't speak for SGI.

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
NFS maillist  -  [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs