Move sn->kill_tasks check to rpc_kill_tasks, so that file write function is only responsible for parsing and calling, not for logic checks.
This will allow later usage of rpc_kill_tasks without kill_tasks check duplication. https://virtuozzo.atlassian.net/browse/VSTOR-126316 Feature: improve kill-tasks Signed-off-by: Vladimir Riabchun <[email protected]> --- v1 -> v2: - Align log arguments in rpc_kill_tasks net/sunrpc/clnt.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 266cf0fbbad5..cf77eec661c1 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c @@ -3411,10 +3411,21 @@ static void rpc_kill_tasks(struct net *net) struct rpc_clnt *clnt; struct sunrpc_net *sn = net_generic(net, sunrpc_net_id); + if (sn->kill_tasks) + return; + sn->kill_tasks = true; + spin_lock(&sn->rpc_client_lock); list_for_each_entry(clnt, &sn->all_clients, cl_clients) rpc_killall_tasks(clnt); spin_unlock(&sn->rpc_client_lock); + + pr_info_ratelimited("kill-tasks: by task (%s:%d) in net:[%u]%s\n", + current->comm, current->pid, net->ns.inum, +#ifdef CONFIG_VE + net->owner_ve == &ve0 ? "(host)" : +#endif + ""); } static ssize_t write_kill_tasks(struct file *file, const char __user *buf, @@ -3422,7 +3433,6 @@ static ssize_t write_kill_tasks(struct file *file, const char __user *buf, { struct net *net = pde_data(file->f_path.dentry->d_inode); struct sunrpc_net *sn = net_generic(net, sunrpc_net_id); - bool prev_kill_tasks = sn->kill_tasks; char tbuf[20]; unsigned long kill_tasks; int res; @@ -3437,19 +3447,11 @@ static ssize_t write_kill_tasks(struct file *file, const char __user *buf, if (res) return res; - sn->kill_tasks = !!kill_tasks; - - /* Kill pending tasks */ - if (sn->kill_tasks && !prev_kill_tasks) { + /* Kill pending tasks or forget about previous murder */ + if (kill_tasks) rpc_kill_tasks(net); - pr_info_ratelimited( - "kill-tasks: by task (%s:%d) in net:[%u]%s\n", - current->comm, current->pid, net->ns.inum, -#ifdef CONFIG_VE - net->owner_ve == &ve0 ? "(host)" : -#endif - ""); - } + else + sn->kill_tasks = false; return count; } -- 2.47.1 _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
