• Jeff Layton's avatar
    nfsd: fix error handling when starting nfsd with rpcbind down · 78a8d7c8
    Jeff Layton authored
    The refcounting for nfsd is a little goofy. What happens is that we
    create the nfsd RPC service, attach sockets to it but don't actually
    start the threads until someone writes to the "threads" procfile. To do
    this, __write_ports_addfd will create the nfsd service and then will
    decrement the refcount when exiting but won't actually destroy the
    service.
    
    This is fine when there aren't errors, but when there are this can
    cause later attempts to start nfsd to fail. nfsd_serv will be set,
    and that causes __write_versions to return EBUSY.
    
    Fix this by calling svc_destroy on nfsd_serv when this function is
    going to return error.
    Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    78a8d7c8
nfsctl.c 37.5 KB