On Thu, 2008-12-18 at 22:12 +0530, Gowrishankar M wrote:
> At present we scan all processes in init namespace, whether in new namespace
> or not, to send signal to all processes for container. Also we filter out
> processes belonging to same namespace using task_pid_vnr().
> 
> Below patch proposes to use new macro controller to save time using pidmap.
> In init namespace, this saving can be more or less achieved, as we check to
> take every process with task_pid_vnr() otherwise.

> diff --git a/kernel/signal.c b/kernel/signal.c
> index 4530fc6..a2651bc 100644
> --- a/kernel/signal.c
> +++ b/kernel/signal.c
> @@ -1143,9 +1143,8 @@ static int kill_something_info(int sig, struct siginfo 
> *info, pid_t pid)
>               int retval = 0, count = 0;
>               struct task_struct * p;
> 
> -             for_each_process(p) {
> -                     if (task_pid_vnr(p) > 1 &&
> -                                     !same_thread_group(p, current)) {
> +             for_each_process_in_ns(p, current->nsproxy->pid_ns) {
> +                     if (!same_thread_group(p, current)) {
>                               int err = group_send_sig_info(sig, info, p);
>                               ++count;
>                               if (err != -EPERM)

So this is a performance optimization?

Isn't that task_pid_vnr() basically an is_container_init() check?  Why
did it go away?

This patch implies that ever process in another's thread group is also
in the same pid namespace.  That seems like a sane assumption, but I'd
probably hesitate without Oleg or Eric taking a good look.

-- Dave

_______________________________________________
Containers mailing list
contain...@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
Devel@openvz.org
https://openvz.org/mailman/listinfo/devel

Reply via email to