[Devel] [PATCH 3/6] proc connector: proc listeners helpers added
Stanislav Kinsburskiy
skinsbursky at virtuozzo.com
Tue Aug 15 17:20:25 MSK 2017
15.08.2017 17:13, Andrey Ryabinin пишет:
>
>
> On 08/15/2017 04:58 PM, Stanislav Kinsburskiy wrote:
>>
>>
>> 15.08.2017 16:52, Andrey Ryabinin пишет:
>>> On 08/15/2017 03:42 PM, Stanislav Kinsburskiy wrote:
>>>> These are precursor helpers, which will hide all the containerization magic.
>>>>
>>>> Signed-off-by: Stanislav Kinsburskiy <skinsbursky at virtuozzo.com>
>>>> ---
>>>> drivers/connector/cn_proc.c | 57 +++++++++++++++++++++++++++++++++----------
>>>> 1 file changed, 44 insertions(+), 13 deletions(-)
>>>>
>>>
>>>> void proc_fork_connector(struct task_struct *task)
>>>> {
>>>> struct cn_msg *msg;
>>>> @@ -73,8 +95,9 @@ void proc_fork_connector(struct task_struct *task)
>>>> __u8 buffer[CN_PROC_MSG_SIZE] __aligned(8);
>>>> struct timespec ts;
>>>> struct task_struct *parent;
>>>> + struct net *net = task_net(task);
>>>>
>>>> - if (atomic_read(&proc_event_num_listeners) < 1)
>>>> + if (get_listeners(net) < 1)
>>>
>>> And now the listener on host won't receive anything, because the forked task has different net namespace.
>>
>> Makes sense. Looks like get_exec_enc()->ve_netns has to be used instead.
>> The structure is created for containers init net anyways.
>>
>>> This should remain the global counter.
>>>
>>
>> Why?
>>
>>> Also you need to craft and send multiple messages for every listener with pid of tasks in the *listener's* pid namespace.
>>> And same for all other connectors.
>>>
>>
>> Didn't get it.
>>
>
> E.g. we have listener on host, i.e. with all init namespaces. And we also have listener in some container.
> Let's say we have task "A" in the container which have global pid 10 and pid 3 in container.
> So if "A" forks, the host listener must receive message that task 10 forked, and the containers listener must receive message that task 3 forked.
>
Hmm. This also makes sense. But painful.
Sending one message for both ve#0 and CT initial pid namespaces should be enough, what do you think?
More information about the Devel
mailing list