46 lines
1.3 KiB
Diff
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
|
|
|