Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 309833
b: refs/heads/master
c: 3d1221d
h: refs/heads/master
i:
  309831: c0b3eb3
v: v3
  • Loading branch information
Stanislav Kinsbursky authored and J. Bruce Fields committed Jun 1, 2012
1 parent 96dd283 commit 8db9ca3
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 26 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7d13ec761ae45d5e401965c73d855840ff8cdd23
refs/heads/master: 3d1221dfa95ca876535c5947626f3834343e8fbc
67 changes: 42 additions & 25 deletions trunk/fs/lockd/svc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
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);
error = lockd_start_svc(serv);
if (error < 0)
goto err_start;
}

nlmsvc_users++;
/*
Expand Down

0 comments on commit 8db9ca3

Please sign in to comment.