mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-30 22:05:36 +00:00
files: Formalize fd restore priorities
There are places when we have to select which fd to ->open and which to ->receive. To avoid deadlocks we sort them in an ascending order on { pid, fd } pair. Make this idea more formal by introducing an explicit function doing this check and call it where appropriate (pipe.c master selection is also simplified to fit new ... API). Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
@@ -43,6 +43,12 @@ struct fdinfo_list_entry {
|
||||
FdinfoEntry *fe;
|
||||
};
|
||||
|
||||
/* reports whether fd_a takes prio over fd_b */
|
||||
static inline int fdinfo_rst_prio(struct fdinfo_list_entry *fd_a, struct fdinfo_list_entry *fd_b)
|
||||
{
|
||||
return (fd_a->pid < fd_b->pid) || ((fd_a->pid == fd_b->pid) && (fd_a->fe->fd < fd_b->fe->fd));
|
||||
}
|
||||
|
||||
struct file_desc_ops {
|
||||
unsigned int type;
|
||||
int (*open)(struct file_desc *d);
|
||||
|
Reference in New Issue
Block a user