mirror of https://gitee.com/openkylin/linux.git
LockD: service start function introduced
This is just a code move, which from my POV makes the code look better. I.e. now on start we have 3 different stages: 1) Service creation. 2) Service per-net data allocation. 3) Service start. Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
7d13ec761a
commit
3d1221dfa9
|
@ -291,6 +291,46 @@ static void lockd_down_net(struct svc_serv *serv, struct net *net)
|
|||
}
|
||||
}
|
||||
|
||||
static int lockd_start_svc(struct svc_serv *serv)
|
||||
{
|
||||
int error;
|
||||
|
||||
if (nlmsvc_rqst)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Create the kernel thread and wait for it to start.
|
||||
*/
|
||||
nlmsvc_rqst = svc_prepare_thread(serv, &serv->sv_pools[0], NUMA_NO_NODE);
|
||||
if (IS_ERR(nlmsvc_rqst)) {
|
||||
error = PTR_ERR(nlmsvc_rqst);
|
||||
printk(KERN_WARNING
|
||||
"lockd_up: svc_rqst allocation failed, error=%d\n",
|
||||
error);
|
||||
goto out_rqst;
|
||||
}
|
||||
|
||||
svc_sock_update_bufs(serv);
|
||||
serv->sv_maxconn = nlm_max_connections;
|
||||
|
||||
nlmsvc_task = kthread_run(lockd, nlmsvc_rqst, serv->sv_name);
|
||||
if (IS_ERR(nlmsvc_task)) {
|
||||
error = PTR_ERR(nlmsvc_task);
|
||||
printk(KERN_WARNING
|
||||
"lockd_up: kthread_run failed, error=%d\n", error);
|
||||
goto out_task;
|
||||
}
|
||||
dprintk("lockd_up: service started\n");
|
||||
return 0;
|
||||
|
||||
out_task:
|
||||
svc_exit_thread(nlmsvc_rqst);
|
||||
nlmsvc_task = NULL;
|
||||
out_rqst:
|
||||
nlmsvc_rqst = NULL;
|
||||
return error;
|
||||
}
|
||||
|
||||
static struct svc_serv *lockd_create_svc(void)
|
||||
{
|
||||
struct svc_serv *serv;
|
||||
|
@ -343,32 +383,9 @@ int lockd_up(struct net *net)
|
|||
if (error < 0)
|
||||
goto err_net;
|
||||
|
||||
/*
|
||||
* Create the kernel thread and wait for it to start.
|
||||
*/
|
||||
nlmsvc_rqst = svc_prepare_thread(serv, &serv->sv_pools[0], NUMA_NO_NODE);
|
||||
if (IS_ERR(nlmsvc_rqst)) {
|
||||
error = PTR_ERR(nlmsvc_rqst);
|
||||
nlmsvc_rqst = NULL;
|
||||
printk(KERN_WARNING
|
||||
"lockd_up: svc_rqst allocation failed, error=%d\n",
|
||||
error);
|
||||
error = lockd_start_svc(serv);
|
||||
if (error < 0)
|
||||
goto err_start;
|
||||
}
|
||||
|
||||
svc_sock_update_bufs(serv);
|
||||
serv->sv_maxconn = nlm_max_connections;
|
||||
|
||||
nlmsvc_task = kthread_run(lockd, nlmsvc_rqst, serv->sv_name);
|
||||
if (IS_ERR(nlmsvc_task)) {
|
||||
error = PTR_ERR(nlmsvc_task);
|
||||
svc_exit_thread(nlmsvc_rqst);
|
||||
nlmsvc_task = NULL;
|
||||
nlmsvc_rqst = NULL;
|
||||
printk(KERN_WARNING
|
||||
"lockd_up: kthread_run failed, error=%d\n", error);
|
||||
goto err_start;
|
||||
}
|
||||
|
||||
nlmsvc_users++;
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue