diff options
60 files changed, 5450 insertions, 1664 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 91082e60d289..6cae13718925 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -2247,7 +2247,7 @@ P: J. Bruce Fields | |||
| 2247 | M: bfields@fieldses.org | 2247 | M: bfields@fieldses.org |
| 2248 | P: Neil Brown | 2248 | P: Neil Brown |
| 2249 | M: neilb@suse.de | 2249 | M: neilb@suse.de |
| 2250 | L: nfs@lists.sourceforge.net | 2250 | L: linux-nfs@vger.kernel.org |
| 2251 | W: http://nfs.sourceforge.net/ | 2251 | W: http://nfs.sourceforge.net/ |
| 2252 | S: Supported | 2252 | S: Supported |
| 2253 | 2253 | ||
diff --git a/fs/Kconfig b/fs/Kconfig index 219ec06a8c7e..987b5d7cb21a 100644 --- a/fs/Kconfig +++ b/fs/Kconfig | |||
| @@ -1674,6 +1674,8 @@ config NFSD | |||
| 1674 | select CRYPTO_MD5 if NFSD_V4 | 1674 | select CRYPTO_MD5 if NFSD_V4 |
| 1675 | select CRYPTO if NFSD_V4 | 1675 | select CRYPTO if NFSD_V4 |
| 1676 | select FS_POSIX_ACL if NFSD_V4 | 1676 | select FS_POSIX_ACL if NFSD_V4 |
| 1677 | select PROC_FS if NFSD_V4 | ||
| 1678 | select PROC_FS if SUNRPC_GSS | ||
| 1677 | help | 1679 | help |
| 1678 | If you want your Linux box to act as an NFS *server*, so that other | 1680 | If you want your Linux box to act as an NFS *server*, so that other |
| 1679 | computers on your local network which support NFS can access certain | 1681 | computers on your local network which support NFS can access certain |
diff --git a/fs/lockd/host.c b/fs/lockd/host.c index 572601e98dcd..ca6b16fc3101 100644 --- a/fs/lockd/host.c +++ b/fs/lockd/host.c | |||
| @@ -34,10 +34,10 @@ static DEFINE_MUTEX(nlm_host_mutex); | |||
| 34 | 34 | ||
| 35 | static void nlm_gc_hosts(void); | 35 | static void nlm_gc_hosts(void); |
| 36 | static struct nsm_handle * __nsm_find(const struct sockaddr_in *, | 36 | static struct nsm_handle * __nsm_find(const struct sockaddr_in *, |
| 37 | const char *, int, int); | 37 | const char *, unsigned int, int); |
| 38 | static struct nsm_handle * nsm_find(const struct sockaddr_in *sin, | 38 | static struct nsm_handle * nsm_find(const struct sockaddr_in *sin, |
| 39 | const char *hostname, | 39 | const char *hostname, |
| 40 | int hostname_len); | 40 | unsigned int hostname_len); |
| 41 | 41 | ||
| 42 | /* | 42 | /* |
| 43 | * Common host lookup routine for server & client | 43 | * Common host lookup routine for server & client |
| @@ -45,7 +45,8 @@ static struct nsm_handle * nsm_find(const struct sockaddr_in *sin, | |||
| 45 | static struct nlm_host * | 45 | static struct nlm_host * |
| 46 | nlm_lookup_host(int server, const struct sockaddr_in *sin, | 46 | nlm_lookup_host(int server, const struct sockaddr_in *sin, |
| 47 | int proto, int version, const char *hostname, | 47 | int proto, int version, const char *hostname, |
| 48 | int hostname_len, const struct sockaddr_in *ssin) | 48 | unsigned int hostname_len, |
| 49 | const struct sockaddr_in *ssin) | ||
| 49 | { | 50 | { |
| 50 | struct hlist_head *chain; | 51 | struct hlist_head *chain; |
| 51 | struct hlist_node *pos; | 52 | struct hlist_node *pos; |
| @@ -176,7 +177,7 @@ nlm_destroy_host(struct nlm_host *host) | |||
| 176 | */ | 177 | */ |
| 177 | struct nlm_host * | 178 | struct nlm_host * |
| 178 | nlmclnt_lookup_host(const struct sockaddr_in *sin, int proto, int version, | 179 | nlmclnt_lookup_host(const struct sockaddr_in *sin, int proto, int version, |
| 179 | const char *hostname, int hostname_len) | 180 | const char *hostname, unsigned int hostname_len) |
| 180 | { | 181 | { |
| 181 | struct sockaddr_in ssin = {0}; | 182 | struct sockaddr_in ssin = {0}; |
| 182 | 183 | ||
| @@ -189,7 +190,7 @@ nlmclnt_lookup_host(const struct sockaddr_in *sin, int proto, int version, | |||
| 189 | */ | 190 | */ |
| 190 | struct nlm_host * | 191 | struct nlm_host * |
| 191 | nlmsvc_lookup_host(struct svc_rqst *rqstp, | 192 | nlmsvc_lookup_host(struct svc_rqst *rqstp, |
| 192 | const char *hostname, int hostname_len) | 193 | const char *hostname, unsigned int hostname_len) |
| 193 | { | 194 | { |
| 194 | struct sockaddr_in ssin = {0}; | 195 | struct sockaddr_in ssin = {0}; |
| 195 | 196 | ||
| @@ -307,7 +308,8 @@ void nlm_release_host(struct nlm_host *host) | |||
| 307 | * Release all resources held by that peer. | 308 | * Release all resources held by that peer. |
| 308 | */ | 309 | */ |
| 309 | void nlm_host_rebooted(const struct sockaddr_in *sin, | 310 | void nlm_host_rebooted(const struct sockaddr_in *sin, |
| 310 | const char *hostname, int hostname_len, | 311 | const char *hostname, |
| 312 | unsigned int hostname_len, | ||
| 311 | u32 new_state) | 313 | u32 new_state) |
| 312 | { | 314 | { |
| 313 | struct hlist_head *chain; | 315 | struct hlist_head *chain; |
| @@ -377,8 +379,13 @@ nlm_shutdown_hosts(void) | |||
| 377 | /* First, make all hosts eligible for gc */ | 379 | /* First, make all hosts eligible for gc */ |
| 378 | dprintk("lockd: nuking all hosts...\n"); | 380 | dprintk("lockd: nuking all hosts...\n"); |
| 379 | for (chain = nlm_hosts; chain < nlm_hosts + NLM_HOST_NRHASH; ++chain) { | 381 | for (chain = nlm_hosts; chain < nlm_hosts + NLM_HOST_NRHASH; ++chain) { |
| 380 | hlist_for_each_entry(host, pos, chain, h_hash) | 382 | hlist_for_each_entry(host, pos, chain, h_hash) { |
| 381 | host->h_expires = jiffies - 1; | 383 | host->h_expires = jiffies - 1; |
| 384 | if (host->h_rpcclnt) { | ||
| 385 | rpc_shutdown_client(host->h_rpcclnt); | ||
| 386 | host->h_rpcclnt = NULL; | ||
| 387 | } | ||
| 388 | } | ||
| 382 | } | 389 | } |
| 383 | 390 | ||
| 384 | /* Then, perform a garbage collection pass */ | 391 | /* Then, perform a garbage collection pass */ |
| @@ -449,7 +456,7 @@ static DEFINE_MUTEX(nsm_mutex); | |||
| 449 | |||
