Re: [PATCH] NFSD: Fix BUG during NFSD shutdown processing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Oct 22, 2008 at 01:12:36PM -0400, Chuck Lever wrote:
> The Linux NFS server can be started via a user-space write to
> /proc/fs/nfs/threads or to /proc/fs/nfs/portlist.  In the first case,
> all default listeners are started (both UDP and TCP).  In the second,
> a listener is started only for one specified transport.
> 
> The NFS server has to make sure lockd stays up until the last listener
> transport goes away.  To support both start-up interfaces, it should
> do one lockd_up() for each NFSD listener.
> 
> The nfsd_init_socks() function used to do one lockd_up() call for each
> svc_create_xprt().  Recently commit
> 26a414092353590ceaa5955bcb53f863d6ea7549 mistakenly changed
> nfsd_init_socks() to do only one lockd_up() call even though it still
> does two svc_create_xprt() calls.
> 
> The end result is a lockd_down() BUG during NFSD shutdown processing
> because nfsd_last_threads() does a lockd_down() call for each entry
> on the sv_permsocks list, but the start-up code doesn't do a matching
> number of lockd_up() calls.
> 
> Add a second lockd_up() in nfsd_init_socks() to make sure the number
> of lockd_up() calls matches the number of entries on the NFS servers's
> sv_permsocks list.
> 
> Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>

Thanks; applied to for-2.6.28; I'll pass it along to Linus soon.

--b.

> ---
> 
>  fs/nfsd/nfssvc.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
> 
> diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
> index 59eeb46..07e4f5d 100644
> --- a/fs/nfsd/nfssvc.c
> +++ b/fs/nfsd/nfssvc.c
> @@ -249,6 +249,10 @@ static int nfsd_init_socks(int port)
>  	if (error < 0)
>  		return error;
>  
> +	error = lockd_up();
> +	if (error < 0)
> +		return error;
> +
>  	error = svc_create_xprt(nfsd_serv, "tcp", port,
>  					SVC_SOCK_DEFAULTS);
>  	if (error < 0)
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux