Commit e98c96ed authored by Kirill Tkhai's avatar Kirill Tkhai Committed by Pavel Emelyanov

files: Merge collect_gen_fd() and collect_used_fd(), and call it unconditionally

Since we keep files of all types in a single list (fds), it's possible
to use only function for that and to call it unconditionally.

v4: New
Signed-off-by: 's avatarKirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent 6072bca6
...@@ -875,9 +875,7 @@ static int autofs_create_fle(struct pstree_item *task, FdinfoEntry *fe, ...@@ -875,9 +875,7 @@ static int autofs_create_fle(struct pstree_item *task, FdinfoEntry *fe,
fle_init(le, task->pid->ns[0].virt, fe); fle_init(le, task->pid->ns[0].virt, fe);
collect_gen_fd(le, rst_info); collect_task_fd(le, rst_info);
collect_used_fd(le, rst_info);
list_add_tail(&le->desc_list, &desc->fd_info_head); list_add_tail(&le->desc_list, &desc->fd_info_head);
le->desc = desc; le->desc = desc;
......
...@@ -126,7 +126,6 @@ static void collect_fifo_fd(struct file_desc *d, ...@@ -126,7 +126,6 @@ static void collect_fifo_fd(struct file_desc *d,
info = container_of(d, struct fifo_info, d); info = container_of(d, struct fifo_info, d);
info->reg_d = collect_special_file(info->fe->id); info->reg_d = collect_special_file(info->fe->id);
BUG_ON(info->reg_d == NULL); BUG_ON(info->reg_d == NULL);
collect_gen_fd(fle, ri);
} }
static struct file_desc_ops fifo_desc_ops = { static struct file_desc_ops fifo_desc_ops = {
......
...@@ -1654,12 +1654,6 @@ int collect_filemap(struct vma_area *vma) ...@@ -1654,12 +1654,6 @@ int collect_filemap(struct vma_area *vma)
return 0; return 0;
} }
static void collect_reg_fd(struct file_desc *fdesc,
struct fdinfo_list_entry *fle, struct rst_info *ri)
{
collect_gen_fd(fle, ri);
}
static int open_fe_fd(struct file_desc *fd, int *new_fd) static int open_fe_fd(struct file_desc *fd, int *new_fd)
{ {
int tmp; int tmp;
...@@ -1682,7 +1676,6 @@ static char *reg_file_path(struct file_desc *d, char *buf, size_t s) ...@@ -1682,7 +1676,6 @@ static char *reg_file_path(struct file_desc *d, char *buf, size_t s)
static struct file_desc_ops reg_desc_ops = { static struct file_desc_ops reg_desc_ops = {
.type = FD_TYPES__REG, .type = FD_TYPES__REG,
.open = open_fe_fd, .open = open_fe_fd,
.collect_fd = collect_reg_fd,
.name = reg_file_path, .name = reg_file_path,
}; };
......
...@@ -112,10 +112,14 @@ struct fdinfo_list_entry *find_used_fd(struct list_head *head, int fd) ...@@ -112,10 +112,14 @@ struct fdinfo_list_entry *find_used_fd(struct list_head *head, int fd)
return NULL; return NULL;
} }
void collect_used_fd(struct fdinfo_list_entry *new_fle, struct rst_info *ri) void collect_task_fd(struct fdinfo_list_entry *new_fle, struct rst_info *ri)
{ {
struct fdinfo_list_entry *fle; struct fdinfo_list_entry *fle;
/* fles in fds list are disordered */
list_add_tail(&new_fle->ps_list, &ri->fds);
/* fles in used list are ordered by fd */
list_for_each_entry(fle, &ri->used, used_list) { list_for_each_entry(fle, &ri->used, used_list) {
if (new_fle->fe->fd < fle->fe->fd) if (new_fle->fe->fd < fle->fe->fd)
break; break;
...@@ -705,10 +709,8 @@ static int collect_fd(int pid, FdinfoEntry *e, struct rst_info *rst_info) ...@@ -705,10 +709,8 @@ static int collect_fd(int pid, FdinfoEntry *e, struct rst_info *rst_info)
if (fdesc->ops->collect_fd) if (fdesc->ops->collect_fd)
fdesc->ops->collect_fd(fdesc, new_le, rst_info); fdesc->ops->collect_fd(fdesc, new_le, rst_info);
else
collect_gen_fd(new_le, rst_info);
collect_used_fd(new_le, rst_info); collect_task_fd(new_le, rst_info);
list_add_tail(&new_le->desc_list, &le->desc_list); list_add_tail(&new_le->desc_list, &le->desc_list);
new_le->desc = fdesc; new_le->desc = fdesc;
......
...@@ -115,12 +115,7 @@ struct file_desc_ops { ...@@ -115,12 +115,7 @@ struct file_desc_ops {
char * (*name)(struct file_desc *, char *b, size_t s); char * (*name)(struct file_desc *, char *b, size_t s);
}; };
extern void collect_used_fd(struct fdinfo_list_entry *new_fle, struct rst_info *ri); void collect_task_fd(struct fdinfo_list_entry *new_fle, struct rst_info *ri);
static inline void collect_gen_fd(struct fdinfo_list_entry *fle, struct rst_info *ri)
{
list_add_tail(&fle->ps_list, &ri->fds);
}
unsigned int find_unused_fd(struct list_head *head, int hint_fd); unsigned int find_unused_fd(struct list_head *head, int hint_fd);
struct fdinfo_list_entry *find_used_fd(struct list_head *head, int fd); struct fdinfo_list_entry *find_used_fd(struct list_head *head, int fd);
......
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