On 23.01.2018 13:07, Stanislav Kinsburskiy wrote:
> 
> 
> 23.01.2018 10:51, Kirill Tkhai пишет:
>> On 23.01.2018 12:48, Stanislav Kinsburskiy wrote:
>>> Please, see a couple of nits below
>>>
>>> 23.01.2018 10:41, Kirill Tkhai пишет:
>>>> Stanislav Kinsburskiy says:
>>>>
>>>> "SPFS manager has a special "--exit-with-spfs" options, which is used by 
>>>> CRIU.
>>>>  The idea of the option is simple: force SPFS manager to exit, when it has 
>>>> some
>>>>  SPFS processes among its children (i.e. spfs was mounted at least once),
>>>>  but all these processes have exited for whatever reason (which usually 
>>>> happens
>>>>  when restore has failed and spfs mounts where unmounted).
>>>>  Although it works in overall (main SPFS manager process exits), its 
>>>> children
>>>>  (responsible to SPFS replacement) may wait on FUTEX for "release" command
>>>>  for corresponding SPFS mount and thus never stop until they are killed".
>>>>
>>>> 1 spfs-manager
>>>> 2   \_ spfs
>>>> 3   \_ spfs-manager
>>>> 4   \_ spfs
>>>> 5   \_ spfs-manager
>>>>
>>>> 2 and 3 are pair of a mount, and 4 and 5 are pair of another mount.
>>>> The patch makes spfs-manager 1 kill 3 in case of 2 exited.
>>>>
>>>> https://jira.sw.ru/browse/PSBM-80055
>>>>
>>>> Signed-off-by: Kirill Tkhai <ktk...@virtuozzo.com>
>>>> ---
>>>>  manager/context.c |    4 ++++
>>>>  manager/spfs.c    |    1 +
>>>>  2 files changed, 5 insertions(+)
>>>>
>>>> diff --git a/manager/context.c b/manager/context.c
>>>> index 1eb37c9..4464a23 100644
>>>> --- a/manager/context.c
>>>> +++ b/manager/context.c
>>>> @@ -53,6 +53,9 @@ static void cleanup_spfs_mount(struct 
>>>> spfs_manager_context_s *ctx,
>>>>            /* SPFS master was killed. We need to release the reference */
>>>>            spfs_release_mnt(info);
>>>>  
>>>> +  if (killed || WEXITSTATUS(status))
>>>> +          kill(info->replacer, SIGKILL);
>>>> +
>>>
>>> There is "if (killed)" check above.
>>> Could you please move this hunk there?
>>
>> There is logical OR (||) in the hunk. How should I move it to unconditional 
>> check?
>>
> 
> Ah, ok. Then let the check be as it is.
> Could you please add warning message for this kill with the process pid being 
> killed and the reason why (spfs was killed of exited with error)?

Maybe we should call spfs_release_mnt() in case of exit status != 0 too?
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to