[CRIU] [PATCH 11/28] ns: Add top_net_ns global variable

Andrei Vagin avagin at virtuozzo.com
Tue Jun 6 20:48:06 MSK 2017


On Mon, Jun 05, 2017 at 08:25:05PM +0300, Kirill Tkhai wrote:
> It will be need for fast obtaining root_item's net_ns,
> and to fixup old dumps.
> 
> lookup_ns_by_id() can't fail otherwise it'd failed
> in MARK_ROOT_NS().
> 
> Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
> ---
>  criu/include/namespaces.h |    1 +
>  criu/namespaces.c         |    2 ++
>  2 files changed, 3 insertions(+)
> 
> diff --git a/criu/include/namespaces.h b/criu/include/namespaces.h
> index 631d6228a..4e06ebc0f 100644
> --- a/criu/include/namespaces.h
> +++ b/criu/include/namespaces.h
> @@ -163,6 +163,7 @@ struct ns_id {
>  extern struct ns_id *ns_ids;
>  extern struct ns_id *top_pid_ns;
>  extern struct ns_id *root_user_ns;

Pls, add a description what top_net_ns is and how we are going to use
it?

> +extern struct ns_id *top_net_ns;
>  
>  #define NS_DESC_ENTRY(_cflag, _str, _alt_str)		\
>  	{						\
> diff --git a/criu/namespaces.c b/criu/namespaces.c
> index d73b2d9f9..ea8e3e391 100644
> --- a/criu/namespaces.c
> +++ b/criu/namespaces.c
> @@ -895,6 +895,7 @@ static int set_ns_hookups(struct ns_id *ns)
>  
>  struct ns_id *top_pid_ns = NULL;
>  struct ns_id *root_user_ns = NULL;
> +struct ns_id *top_net_ns = NULL;
>  /* Mapping NS_ROOT to NS_CRIU */
>  UsernsEntry *userns_entry;
>  
> @@ -2158,6 +2159,7 @@ int set_ns_roots(void)
>  	if (MARK_ROOT_NS(ids, net) || MARK_ROOT_NS(ids, ipc) || MARK_ROOT_NS(ids, uts) ||
>  	    MARK_ROOT_NS(ids, mnt) || MARK_ROOT_NS(ids, cgroup))
>  		return -1;
> +	top_net_ns = lookup_ns_by_id(ids->net_ns_id, &net_ns_desc);

It is a second lookup of ids->net_ns_id in this function, can we avoid
it?

>  	return 0;
>  }
>  
> 


More information about the CRIU mailing list