Commit 8b611770 authored by Pavel Emelyanov's avatar Pavel Emelyanov

files: Pass stat information into fd_id_generate_special

Acked-by: 's avatarAndrew Vagin <avagin@parallels.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 084a1f7d
...@@ -255,7 +255,7 @@ static int dump_task_exe_link(pid_t pid, MmEntry *mm) ...@@ -255,7 +255,7 @@ static int dump_task_exe_link(pid_t pid, MmEntry *mm)
return -1; return -1;
} }
mm->exe_file_id = fd_id_generate_special(); mm->exe_file_id = fd_id_generate_special(&params.stat);
ret = dump_one_reg_file(fd, mm->exe_file_id, &params); ret = dump_one_reg_file(fd, mm->exe_file_id, &params);
close(fd); close(fd);
...@@ -281,7 +281,7 @@ static int dump_task_fs(pid_t pid, struct parasite_dump_misc *misc, struct cr_fd ...@@ -281,7 +281,7 @@ static int dump_task_fs(pid_t pid, struct parasite_dump_misc *misc, struct cr_fd
return -1; return -1;
} }
fe.cwd_id = fd_id_generate_special(); fe.cwd_id = fd_id_generate_special(&p.stat);
ret = dump_one_reg_file(fd, fe.cwd_id, &p); ret = dump_one_reg_file(fd, fe.cwd_id, &p);
if (ret < 0) if (ret < 0)
...@@ -299,7 +299,7 @@ static int dump_task_fs(pid_t pid, struct parasite_dump_misc *misc, struct cr_fd ...@@ -299,7 +299,7 @@ static int dump_task_fs(pid_t pid, struct parasite_dump_misc *misc, struct cr_fd
return -1; return -1;
} }
fe.root_id = fd_id_generate_special(); fe.root_id = fd_id_generate_special(&p.stat);
ret = dump_one_reg_file(fd, fe.root_id, &p); ret = dump_one_reg_file(fd, fe.root_id, &p);
if (ret < 0) if (ret < 0)
...@@ -356,7 +356,7 @@ static int dump_filemap(pid_t pid, struct vma_area *vma_area, ...@@ -356,7 +356,7 @@ static int dump_filemap(pid_t pid, struct vma_area *vma_area,
p.flags = O_RDWR; p.flags = O_RDWR;
else else
p.flags = O_RDONLY; p.flags = O_RDONLY;
vma->shmid = fd_id_generate_special(); vma->shmid = fd_id_generate_special(&p.stat);
return dump_one_reg_file(vma_area->vm_file_fd, vma->shmid, &p); return dump_one_reg_file(vma_area->vm_file_fd, vma->shmid, &p);
} }
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "syscall.h" #include "syscall.h"
#include "image.h" #include "image.h"
#include "util.h" #include "util.h"
#include "irmap.h"
static DECLARE_KCMP_TREE(fd_tree, KCMP_FILE); static DECLARE_KCMP_TREE(fd_tree, KCMP_FILE);
...@@ -25,7 +26,7 @@ void fd_id_show_tree(void) ...@@ -25,7 +26,7 @@ void fd_id_show_tree(void)
kid_show_tree(&fd_tree); kid_show_tree(&fd_tree);
} }
u32 fd_id_generate_special(void) u32 fd_id_generate_special(struct stat *st)
{ {
return fd_tree.subid++; return fd_tree.subid++;
} }
......
...@@ -382,7 +382,7 @@ static int create_link_remap(char *path, int len, int lfd, u32 *idp) ...@@ -382,7 +382,7 @@ static int create_link_remap(char *path, int len, int lfd, u32 *idp)
tmp--; tmp--;
} }
rfe.id = *idp = fd_id_generate_special(); rfe.id = *idp = fd_id_generate_special(NULL);
rfe.flags = 0; rfe.flags = 0;
rfe.pos = 0; rfe.pos = 0;
rfe.fown = &fwn; rfe.fown = &fwn;
......
...@@ -11,8 +11,10 @@ ...@@ -11,8 +11,10 @@
#define FD_DESC_INVALID (-3U) #define FD_DESC_INVALID (-3U)
struct fdinfo_entry; struct fdinfo_entry;
struct stat;
extern int fd_id_generate(pid_t pid, FdinfoEntry *fe); extern int fd_id_generate(pid_t pid, FdinfoEntry *fe);
extern u32 fd_id_generate_special(void); extern u32 fd_id_generate_special(struct stat *);
extern void fd_id_show_tree(void); extern void fd_id_show_tree(void);
#endif /* __CR_FILE_IDS_H__ */ #endif /* __CR_FILE_IDS_H__ */
...@@ -581,7 +581,7 @@ int fix_external_unix_sockets(void) ...@@ -581,7 +581,7 @@ int fix_external_unix_sockets(void)
BUG_ON(sk->sd.already_dumped); BUG_ON(sk->sd.already_dumped);
e.id = fd_id_generate_special(); e.id = fd_id_generate_special(NULL);
e.ino = sk->sd.ino; e.ino = sk->sd.ino;
e.type = SOCK_DGRAM; e.type = SOCK_DGRAM;
e.state = TCP_LISTEN; e.state = TCP_LISTEN;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment