]> git.karo-electronics.de Git - linux-beck.git/commitdiff
nfsd: remove unused listener-removal interfaces
authorJ. Bruce Fields <bfields@redhat.com>
Wed, 15 Aug 2012 22:07:43 +0000 (18:07 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 10 Sep 2012 14:55:19 +0000 (10:55 -0400)
You can use nfsd/portlist to give nfsd additional sockets to listen on.
In theory you can also remove listening sockets this way.  But nobody's
ever done that as far as I can tell.

Also this was partially broken in 2.6.25, by
a217813f9067b785241cb7f31956e51d2071703a "knfsd: Support adding
transports by writing portlist file".

(Note that we decide whether to take the "delfd" case by checking for a
digit--but what's actually expected in that case is something made by
svc_one_sock_name(), which won't begin with a digit.)

So, let's just rip out this stuff.

Acked-by: NeilBrown <neilb@suse.de>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfsctl.c
include/linux/sunrpc/svcsock.h
net/sunrpc/svcsock.c

index e41a08ffbe0a5b1b289df4222278048691d62e43..dab350dfc376e48435817b2b136129bfb92de799 100644 (file)
@@ -682,25 +682,6 @@ static ssize_t __write_ports_addfd(char *buf)
        return err;
 }
 
-/*
- * A '-' followed by the 'name' of a socket means we close the socket.
- */
-static ssize_t __write_ports_delfd(char *buf)
-{
-       char *toclose;
-       int len = 0;
-
-       toclose = kstrdup(buf + 1, GFP_KERNEL);
-       if (toclose == NULL)
-               return -ENOMEM;
-
-       if (nfsd_serv != NULL)
-               len = svc_sock_names(nfsd_serv, buf,
-                                       SIMPLE_TRANSACTION_LIMIT, toclose);
-       kfree(toclose);
-       return len;
-}
-
 /*
  * A transport listener is added by writing it's transport name and
  * a port number.
@@ -746,31 +727,6 @@ out_err:
        return err;
 }
 
-/*
- * A transport listener is removed by writing a "-", it's transport
- * name, and it's port number.
- */
-static ssize_t __write_ports_delxprt(char *buf)
-{
-       struct svc_xprt *xprt;
-       char transport[16];
-       int port;
-
-       if (sscanf(&buf[1], "%15s %4u", transport, &port) != 2)
-               return -EINVAL;
-
-       if (port < 1 || port > USHRT_MAX || nfsd_serv == NULL)
-               return -EINVAL;
-
-       xprt = svc_find_xprt(nfsd_serv, transport, &init_net, AF_UNSPEC, port);
-       if (xprt == NULL)
-               return -ENOTCONN;
-
-       svc_close_xprt(xprt);
-       svc_xprt_put(xprt);
-       return 0;
-}
-
 static ssize_t __write_ports(struct file *file, char *buf, size_t size)
 {
        if (size == 0)
@@ -779,15 +735,9 @@ static ssize_t __write_ports(struct file *file, char *buf, size_t size)
        if (isdigit(buf[0]))
                return __write_ports_addfd(buf);
 
-       if (buf[0] == '-' && isdigit(buf[1]))
-               return __write_ports_delfd(buf);
-
        if (isalpha(buf[0]))
                return __write_ports_addxprt(buf);
 
-       if (buf[0] == '-' && isalpha(buf[1]))
-               return __write_ports_delxprt(buf);
-
        return -EINVAL;
 }
 
@@ -825,21 +775,6 @@ static ssize_t __write_ports(struct file *file, char *buf, size_t size)
  * OR
  *
  * Input:
- *                     buf:            C string containing a "-" followed
- *                                     by an integer value representing a
- *                                     previously passed in socket file
- *                                     descriptor
- *                     size:           non-zero length of C string in @buf
- * Output:
- *     On success:     NFS service no longer listens on that socket;
- *                     passed-in buffer filled with a '\n'-terminated C
- *                     string containing a unique name of the listener;
- *                     return code is the size in bytes of the string
- *     On error:       return code is a negative errno value
- *
- * OR
- *
- * Input:
  *                     buf:            C string containing a transport
  *                                     name and an unsigned integer value
  *                                     representing the port to listen on,
@@ -848,19 +783,6 @@ static ssize_t __write_ports(struct file *file, char *buf, size_t size)
  * Output:
  *     On success:     returns zero; NFS service is started
  *     On error:       return code is a negative errno value
- *
- * OR
- *
- * Input:
- *                     buf:            C string containing a "-" followed
- *                                     by a transport name and an unsigned
- *                                     integer value representing the port
- *                                     to listen on, separated by whitespace
- *                     size:           non-zero length of C string in @buf
- * Output:
- *     On success:     returns zero; NFS service no longer listens
- *                     on that transport
- *     On error:       return code is a negative errno value
  */
 static ssize_t write_ports(struct file *file, char *buf, size_t size)
 {
index cb4ac69e1f3356aeb96cdeed3ca83e106b45ba25..92ad02f0dcc0ea9409a09c1b3637e1f5c1869bc1 100644 (file)
@@ -39,9 +39,6 @@ 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(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 7aee54c3fe4615e4a392fa69e686189ba9aa064a..03827cef1fa783174409e23b2241bba903809e3a 100644 (file)
@@ -305,57 +305,6 @@ static int svc_one_sock_name(struct svc_sock *svsk, char *buf, int remaining)
        return len;
 }
 
-/**
- * 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;
-
-       if (!serv)
-               return 0;
-
-       spin_lock_bh(&serv->sv_lock);
-       list_for_each_entry(svsk, &serv->sv_permsocks, sk_xprt.xpt_list) {
-               int onelen = svc_one_sock_name(svsk, buf + len, buflen - len);
-               if (onelen < 0) {
-                       len = onelen;
-                       break;
-               }
-               if (toclose && strcmp(toclose, buf + len) == 0) {
-                       closesk = svsk;
-                       svc_xprt_get(&closesk->sk_xprt);
-               } else
-                       len += onelen;
-       }
-       spin_unlock_bh(&serv->sv_lock);
-
-       if (closesk) {
-               /* Should unregister with portmap, but you cannot
-                * unregister just one protocol...
-                */
-               svc_close_xprt(&closesk->sk_xprt);
-               svc_xprt_put(&closesk->sk_xprt);
-       } else if (toclose)
-               return -ENOENT;
-       return len;
-}
-EXPORT_SYMBOL_GPL(svc_sock_names);
-
 /*
  * Check input queue length
  */