criu/0042-reg-file-fix-dump-fail-problem-with-null-seek-op.patch
fu.lin 9c2b383d61 criu: backport kinds of features/bugfix
Signed-off-by: fu.lin <fulin10@huawei.com>
2022-04-13 17:01:52 +08:00

46 lines
1.3 KiB
Diff

From 06a0277c2aab1442c724217957fd5f915ace2753 Mon Sep 17 00:00:00 2001
From: Zhuling <zhuling8@huawei.com>
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 <hejingxian@huawei.com>
Signed-off-by: fu.lin <fulin10@huawei.com>
---
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