Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/checkpoint-restore/criu.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@virtuozzo.com>2017-02-16 15:11:27 +0300
committerPavel Emelyanov <xemul@virtuozzo.com>2017-03-06 11:40:37 +0300
commitf7862732510390d8b5eaea7923cd9d2ea12fabd9 (patch)
tree9af57e3dd522423c119d40ada01933d6fd724af1
parent8c0eef35f4282a65928c1fbfd17074b2219f65e1 (diff)
files: Make find_used_fd work on pstree_item
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
-rw-r--r--criu/files.c9
-rw-r--r--criu/include/files.h2
2 files changed, 6 insertions, 5 deletions
diff --git a/criu/files.c b/criu/files.c
index 0a8b51f38..7f0f9f303 100644
--- a/criu/files.c
+++ b/criu/files.c
@@ -98,10 +98,12 @@ static inline struct file_desc *find_file_desc(FdinfoEntry *fe)
return find_file_desc_raw(fe->type, fe->id);
}
-struct fdinfo_list_entry *find_used_fd(struct list_head *head, int fd)
+struct fdinfo_list_entry *find_used_fd(struct pstree_item *task, int fd)
{
+ struct list_head *head;
struct fdinfo_list_entry *fle;
+ head = &rsti(task)->used;
list_for_each_entry_reverse(fle, head, used_list) {
if (fle->fe->fd == fd)
return fle;
@@ -134,14 +136,13 @@ unsigned int find_unused_fd(struct pstree_item *task, int hint_fd)
struct fdinfo_list_entry *fle;
int fd = 0, prev_fd;
- head = &rsti(task)->used;
-
- if ((hint_fd >= 0) && (!find_used_fd(head, hint_fd))) {
+ if ((hint_fd >= 0) && (!find_used_fd(task, hint_fd))) {
fd = hint_fd;
goto out;
}
prev_fd = service_fd_min_fd() - 1;
+ head = &rsti(task)->used;
list_for_each_entry_reverse(fle, head, used_list) {
fd = fle->fe->fd;
diff --git a/criu/include/files.h b/criu/include/files.h
index 855f0950a..98e541033 100644
--- a/criu/include/files.h
+++ b/criu/include/files.h
@@ -118,7 +118,7 @@ struct file_desc_ops {
void collect_task_fd(struct fdinfo_list_entry *new_fle, struct rst_info *ri);
unsigned int find_unused_fd(struct pstree_item *, int hint_fd);
-struct fdinfo_list_entry *find_used_fd(struct list_head *head, int fd);
+struct fdinfo_list_entry *find_used_fd(struct pstree_item *, int fd);
struct file_desc {
u32 id; /* File id, unique */