mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-01-23 02:14:37 +00:00
epoll: Save fields of target files in eventpoll_tfd_entry
We will use them to fast lookup of targets files. Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
This commit is contained in:
parent
ca8144b7f7
commit
fa989970ec
2 changed files with 22 additions and 3 deletions
|
|
@ -1762,9 +1762,23 @@ static int parse_fdinfo_pid_s(int pid, int fd, int type, void *arg)
|
|||
|
||||
eventpoll_tfd_entry__init(e);
|
||||
|
||||
ret = sscanf(str, "tfd: %d events: %x data: %"PRIx64,
|
||||
&e->tfd, &e->events, &e->data);
|
||||
if (ret != 3) {
|
||||
ret = sscanf(str, "tfd: %d events: %x data: %llx"
|
||||
" pos:%lli ino:%lx sdev:%x",
|
||||
&e->tfd, &e->events, (long long *)&e->data,
|
||||
(long long *)&e->pos, (long *)&e->inode,
|
||||
&e->dev);
|
||||
if (ret < 3 || ret > 6) {
|
||||
eventpoll_tfd_entry__free_unpacked(e, NULL);
|
||||
goto parse_err;
|
||||
} else if (ret == 3) {
|
||||
e->has_dev = false;
|
||||
e->has_inode = false;
|
||||
e->has_pos = false;
|
||||
} else if (ret == 6) {
|
||||
e->has_dev = true;
|
||||
e->has_inode = true;
|
||||
e->has_pos = true;
|
||||
} else if (ret < 6) {
|
||||
eventpoll_tfd_entry__free_unpacked(e, NULL);
|
||||
goto parse_err;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,11 @@ message eventpoll_tfd_entry {
|
|||
required uint32 tfd = 2;
|
||||
required uint32 events = 3;
|
||||
required uint64 data = 4;
|
||||
|
||||
/* to find dup'ed target files */
|
||||
optional uint32 dev = 5;
|
||||
optional uint64 inode = 6;
|
||||
optional uint64 pos = 7;
|
||||
}
|
||||
|
||||
message eventpoll_file_entry {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue