SUNRPC: pass buffer size to svc_sock_names()
authorChuck Lever <chuck.lever@oracle.com>
Thu, 23 Apr 2009 23:32:40 +0000 (19:32 -0400)
committerJ. Bruce Fields <bfields@citi.umich.edu>
Tue, 28 Apr 2009 17:54:28 +0000 (13:54 -0400)
Adjust the synopsis of svc_sock_names() to pass in the size of the
output buffer.  Add a documenting comment.

This is a cosmetic change for now.  A subsequent patch will make sure
the buffer length is passed to one_sock_name(), where the length will
actually be useful.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
fs/nfsd/nfsctl.c
include/linux/sunrpc/svcsock.h
net/sunrpc/svcsock.c

index 1f1c215..b64a7fb 100644 (file)
@@ -966,7 +966,8 @@ static ssize_t __write_ports_delfd(char *buf)
                return -ENOMEM;
 
        if (nfsd_serv != NULL)
-               len = svc_sock_names(buf, nfsd_serv, toclose);
+               len = svc_sock_names(nfsd_serv, buf,
+                                       SIMPLE_TRANSACTION_LIMIT, toclose);
        if (len >= 0)
                lockd_down();
 
index e23241c..8271631 100644 (file)
@@ -38,7 +38,9 @@ int           svc_recv(struct svc_rqst *, long);
 int            svc_send(struct svc_rqst *);
 void           svc_drop(struct svc_rqst *);
 void           svc_sock_update_bufs(struct svc_serv *serv);
-int            svc_sock_names(char *buf, struct svc_serv *serv, char *toclose);
+int            svc_sock_names(struct svc_serv *serv, char *buf,
+                                       const size_t buflen,
+                                       const char *toclose);
 int            svc_addsock(struct svc_serv *serv, const int fd,
                                        char *name_return, const size_t len);
 void           svc_init_xprt_sock(void);
index 6bec1e2..032b52e 100644 (file)
@@ -259,8 +259,23 @@ static int one_sock_name(char *buf, struct svc_sock *svsk)
        return len;
 }
 
-int
-svc_sock_names(char *buf, struct svc_serv *serv, char *toclose)
+/**
+ * svc_sock_names - construct a list of listener names in a string
+ * @serv: pointer to RPC service
+ * @buf: pointer to a buffer to fill in with socket names
+ * @buflen: size of the buffer to be filled
+ * @toclose: pointer to '\0'-terminated C string containing the name
+ *             of a listener to be closed
+ *
+ * Fills in @buf with a '\n'-separated list of names of listener
+ * sockets.  If @toclose is not NULL, the socket named by @toclose
+ * is closed, and is not included in the output list.
+ *
+ * Returns positive length of the socket name string, or a negative
+ * errno value on error.
+ */
+int svc_sock_names(struct svc_serv *serv, char *buf, const size_t buflen,
+                  const char *toclose)
 {
        struct svc_sock *svsk, *closesk = NULL;
        int len = 0;