mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-18 17:14:28 +00:00
We currently have all mouninfo-s from all mnt namespaces collected in one big list. On dump we scan through it to find the namespaces we need to dump. This can be optimized by walking the list of namespaces instead. Signed-off-by: Pavel Emelyanov <xemul@parallels.com> Acked-by: Andrew Vagin <avagin@parallels.com>
60 lines
1.5 KiB
C
60 lines
1.5 KiB
C
#ifndef __CR_NS_H__
|
|
#define __CR_NS_H__
|
|
|
|
#include "files.h"
|
|
|
|
struct ns_desc {
|
|
unsigned int cflag;
|
|
char *str;
|
|
size_t len;
|
|
};
|
|
|
|
struct ns_id {
|
|
unsigned int kid;
|
|
unsigned int id;
|
|
pid_t pid;
|
|
struct ns_desc *nd;
|
|
struct ns_id *next;
|
|
futex_t created; /* boolean */
|
|
union {
|
|
struct {
|
|
struct mount_info *mntinfo_list;
|
|
struct mount_info *mntinfo_tree;
|
|
} mnt;
|
|
};
|
|
};
|
|
extern struct ns_id *ns_ids;
|
|
|
|
#define NS_DESC_ENTRY(_cflag, _str) \
|
|
{ \
|
|
.cflag = _cflag, \
|
|
.str = _str, \
|
|
.len = sizeof(_str) - 1, \
|
|
}
|
|
|
|
extern bool check_ns_proc(struct fd_link *link);
|
|
|
|
extern struct ns_desc pid_ns_desc;
|
|
extern struct ns_desc user_ns_desc;
|
|
extern unsigned long root_ns_mask;
|
|
|
|
extern const struct fdtype_ops nsfile_dump_ops;
|
|
extern struct collect_image_info nsfile_cinfo;
|
|
|
|
extern int collect_mnt_namespaces(void);
|
|
extern int dump_mnt_namespaces(void);
|
|
extern int dump_namespaces(struct pstree_item *item, unsigned int ns_flags);
|
|
extern int prepare_namespace(struct pstree_item *item, unsigned long clone_flags);
|
|
extern int try_show_namespaces(int pid);
|
|
|
|
extern int switch_ns(int pid, struct ns_desc *nd, int *rst);
|
|
extern int restore_ns(int rst, struct ns_desc *nd);
|
|
|
|
extern int dump_task_ns_ids(struct pstree_item *);
|
|
extern struct ns_id *rst_new_ns_id(unsigned int id, pid_t pid, struct ns_desc *nd);
|
|
extern int rst_add_ns_id(unsigned int id, pid_t pid, struct ns_desc *nd);
|
|
extern struct ns_id *lookup_ns_by_id(unsigned int id, struct ns_desc *nd);
|
|
|
|
extern int gen_predump_ns_mask(void);
|
|
|
|
#endif /* __CR_NS_H__ */
|