diff options
| -rw-r--r-- | fs/nfsd/nfsctl.c | 3 | ||||
| -rw-r--r-- | include/linux/sunrpc/svcsock.h | 4 | ||||
| -rw-r--r-- | net/sunrpc/svcsock.c | 19 |
3 files changed, 22 insertions, 4 deletions
diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c index 1f1c2159b802..b64a7fbfccf5 100644 --- a/fs/nfsd/nfsctl.c +++ b/fs/nfsd/nfsctl.c | |||
| @@ -966,7 +966,8 @@ static ssize_t __write_ports_delfd(char *buf) | |||
| 966 | return -ENOMEM; | 966 | return -ENOMEM; |
| 967 | 967 | ||
| 968 | if (nfsd_serv != NULL) | 968 | if (nfsd_serv != NULL) |
| 969 | len = svc_sock_names(buf, nfsd_serv, toclose); | 969 | len = svc_sock_names(nfsd_serv, buf, |
| 970 | SIMPLE_TRANSACTION_LIMIT, toclose); | ||
| 970 | if (len >= 0) | 971 | if (len >= 0) |
| 971 | lockd_down(); | 972 | lockd_down(); |
| 972 | 973 | ||
diff --git a/include/linux/sunrpc/svcsock.h b/include/linux/sunrpc/svcsock.h index e23241c53f42..827163138949 100644 --- a/include/linux/sunrpc/svcsock.h +++ b/include/linux/sunrpc/svcsock.h | |||
| @@ -38,7 +38,9 @@ int svc_recv(struct svc_rqst *, long); | |||
| 38 | int svc_send(struct svc_rqst *); | 38 | int svc_send(struct svc_rqst *); |
| 39 | void svc_drop(struct svc_rqst *); | 39 | void svc_drop(struct svc_rqst *); |
| 40 | void svc_sock_update_bufs(struct svc_serv *serv); | 40 | void svc_sock_update_bufs(struct svc_serv *serv); |
| 41 | int svc_sock_names(char *buf, struct svc_serv *serv, char *toclose); | 41 | int svc_sock_names(struct svc_serv *serv, char *buf, |
| 42 | const size_t buflen, | ||
| 43 | const char *toclose); | ||
| 42 | int svc_addsock(struct svc_serv *serv, const int fd, | 44 | int svc_addsock(struct svc_serv *serv, const int fd, |
| 43 | char *name_return, const size_t len); | 45 | char *name_return, const size_t len); |
| 44 | void svc_init_xprt_sock(void); | 46 | void svc_init_xprt_sock(void); |
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c index 6bec1e25b542..032b52ea9541 100644 --- a/net/sunrpc/svcsock.c +++ b/net/sunrpc/svcsock.c | |||
| @@ -259,8 +259,23 @@ static int one_sock_name(char *buf, struct svc_sock *svsk) | |||
| 259 | return len; | 259 | return len; |
| 260 | } | 260 | } |
| 261 | 261 | ||
| 262 | int | 262 | /** |
| 263 | svc_sock_names(char *buf, struct svc_serv *serv, char *toclose) | 263 | * svc_sock_names - construct a list of listener names in a string |
| 264 | * @serv: pointer to RPC service | ||
| 265 | * @buf: pointer to a buffer to fill in with socket names | ||
| 266 | * @buflen: size of the buffer to be filled | ||
| 267 | * @toclose: pointer to '\0'-terminated C string containing the name | ||
| 268 | * of a listener to be closed | ||
| 269 | * | ||
| 270 | * Fills in @buf with a '\n'-separated list of names of listener | ||
| 271 | * sockets. If @toclose is not NULL, the socket named by @toclose | ||
| 272 | * is closed, and is not included in the output list. | ||
| 273 | * | ||
| 274 | * Returns positive length of the socket name string, or a negative | ||
| 275 | * errno value on error. | ||
| 276 | */ | ||
| 277 | int svc_sock_names(struct svc_serv *serv, char *buf, const size_t buflen, | ||
| 278 | const char *toclose) | ||
| 264 | { | 279 | { |
| 265 | struct svc_sock *svsk, *closesk = NULL; | 280 | struct svc_sock *svsk, *closesk = NULL; |
| 266 | int len = 0; | 281 | int len = 0; |
