From 06a0277c2aab1442c724217957fd5f915ace2753 Mon Sep 17 00:00:00 2001 From: Zhuling Date: Thu, 22 Jul 2021 10:15:15 +0800 Subject: [PATCH 42/72] reg-file: fix dump fail problem with null seek op Some customizing `struct file_operations` implementation has no `llseek`, therefore ignore the no-implementation errno. Fix file dumping fail problem when the file seek op is null. Signed-off-by: Jingxian He Signed-off-by: fu.lin --- criu/files-reg.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/criu/files-reg.c b/criu/files-reg.c index 1a3b836..6dc8745 100644 --- a/criu/files-reg.c +++ b/criu/files-reg.c @@ -2176,9 +2176,18 @@ static int do_open_reg(int ns_root_fd, struct reg_file_info *rfi, void *arg) */ if (!(rfi->rfe->flags & O_PATH)) { if (rfi->rfe->pos != -1ULL && lseek(fd, rfi->rfe->pos, SEEK_SET) < 0) { - pr_perror("Can't restore file pos"); - close(fd); - return -1; + /* + * Some customizing `struct file_operations` + * implementation has no `llseek`, therefore + * ignore the no-implementation errno. + */ + if (errno == ESPIPE) { + pr_warn("No ability to restore file ops\n"); + } else { + pr_perror("Can't restore file pos"); + close(fd); + return -1; + } } } -- 2.34.1