[CRIU] [PATCH 05/10] proc-parse: epoll -- Add primary hash generation
Cyrill Gorcunov
gorcunov at openvz.org
Tue Feb 28 07:05:44 PST 2017
Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
---
criu/include/fdinfo.h | 2 ++
criu/proc_parse.c | 23 ++++++++++++++++++-----
2 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/criu/include/fdinfo.h b/criu/include/fdinfo.h
index a36e9138beb9..be516efce5d6 100644
--- a/criu/include/fdinfo.h
+++ b/criu/include/fdinfo.h
@@ -28,6 +28,8 @@ struct fanotify_mark_entry {
struct eventpoll_tfd_entry {
EventpollTfdEntry e;
struct list_head node;
+ unsigned int gen_id;
+ int use_kcmp;
};
union fdinfo_entries {
diff --git a/criu/proc_parse.c b/criu/proc_parse.c
index 5e9780a41ed5..a96123679aa2 100644
--- a/criu/proc_parse.c
+++ b/criu/proc_parse.c
@@ -39,6 +39,7 @@
#include "cgroup-props.h"
#include "timerfd.h"
#include "path.h"
+#include "file-ids.h"
#include "protobuf.h"
#include "images/fdinfo.pb-c.h"
@@ -1734,6 +1735,8 @@ static int parse_fdinfo_pid_s(int pid, int fd, int type,
}
if (fdinfo_field(str, "tfd")) {
union fdinfo_entries *e;
+ unsigned long pos, ino;
+ unsigned int sdev;
if (type != FD_TYPES__EVENTPOLL)
goto parse_err;
@@ -1744,11 +1747,21 @@ static int parse_fdinfo_pid_s(int pid, int fd, int type,
eventpoll_tfd_entry__init(&e->epl.e);
- ret = sscanf(str, "tfd: %d events: %x data: %"PRIx64,
- &e->epl.e.tfd, &e->epl.e.events, &e->epl.e.data);
- if (ret != 3) {
- free_event_poll_entry(e);
- goto parse_err;
+ ret = sscanf(str, "tfd: %d events: %x data: %"PRIx64
+ " pos:%lx ino:%lx sdev:%x",
+ &e->epl.e.tfd, &e->epl.e.events, &e->epl.e.data,
+ &pos, &ino, &sdev);
+ if (ret != 6) {
+ if (ret != 3) {
+ free_event_poll_entry(e);
+ goto parse_err;
+ } else {
+ e->epl.gen_id = 0;
+ e->epl.use_kcmp = 0;
+ }
+ } else {
+ e->epl.gen_id = kcmp_fd_make_gen_id(sdev, ino, pos);
+ e->epl.use_kcmp = 1;
}
ret = cb(e, arg);
if (ret)
--
2.7.4
More information about the CRIU
mailing list