NFSd: call svc rpcbind cleanup explicitly
We have to call svc_rpcb_cleanup() explicitly from nfsd_last_thread() since this function is registered as service shutdown callback and thus nobody else will done it for us. Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
8e356b1e2a
commit
16d0587090
|
@ -256,6 +256,8 @@ static void nfsd_last_thread(struct svc_serv *serv)
|
||||||
nfsd_serv = NULL;
|
nfsd_serv = NULL;
|
||||||
nfsd_shutdown();
|
nfsd_shutdown();
|
||||||
|
|
||||||
|
svc_rpcb_cleanup(serv);
|
||||||
|
|
||||||
printk(KERN_WARNING "nfsd: last server has exited, flushing export "
|
printk(KERN_WARNING "nfsd: last server has exited, flushing export "
|
||||||
"cache\n");
|
"cache\n");
|
||||||
nfsd_export_flush();
|
nfsd_export_flush();
|
||||||
|
|
|
@ -401,6 +401,7 @@ struct svc_procedure {
|
||||||
/*
|
/*
|
||||||
* Function prototypes.
|
* Function prototypes.
|
||||||
*/
|
*/
|
||||||
|
void svc_rpcb_cleanup(struct svc_serv *serv);
|
||||||
struct svc_serv *svc_create(struct svc_program *, unsigned int,
|
struct svc_serv *svc_create(struct svc_program *, unsigned int,
|
||||||
void (*shutdown)(struct svc_serv *));
|
void (*shutdown)(struct svc_serv *));
|
||||||
struct svc_rqst *svc_prepare_thread(struct svc_serv *serv,
|
struct svc_rqst *svc_prepare_thread(struct svc_serv *serv,
|
||||||
|
|
|
@ -367,11 +367,12 @@ static int svc_rpcb_setup(struct svc_serv *serv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void svc_rpcb_cleanup(struct svc_serv *serv)
|
void svc_rpcb_cleanup(struct svc_serv *serv)
|
||||||
{
|
{
|
||||||
svc_unregister(serv);
|
svc_unregister(serv);
|
||||||
rpcb_put_local();
|
rpcb_put_local();
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(svc_rpcb_cleanup);
|
||||||
|
|
||||||
static int svc_uses_rpcbind(struct svc_serv *serv)
|
static int svc_uses_rpcbind(struct svc_serv *serv)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue