Sometimes container's systemd-udevd opens ploop device for some reason. Since it's not forbidden allow it to do so.
| (13.131338) Dumping task (pid: 270073 comm: systemd-udevd) | (13.131343) ======================================== | ... | (13.173422) 270073 fdinfo 8: pos: 0x 0 flags: 2504000/0x1 | (13.173439) Error (files-ext.c:91): Can't dump file 8 (/dev/ploop18098) of that type [60600] (unknown (null)) | (13.173444) ---------------------------------------- | (13.352711) Error (cr-dump.c:1317): Dump files (pid: 270073) failed with -1 | (13.583663) Waiting for 270073 to trap https://jira.sw.ru/browse/PSBM-49723 Signed-off-by: Cyrill Gorcunov <gorcu...@virtuozzo.com> --- criu/files.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/criu/files.c b/criu/files.c index dfa3603..453993d 100644 --- a/criu/files.c +++ b/criu/files.c @@ -387,6 +387,30 @@ static int dump_chrdev(struct fd_parms *p, int lfd, struct cr_img *img) return do_dump_gen_file(p, lfd, ops, img); } +static int check_blkdev(struct fd_parms *p, int lfd) +{ + /* + * @ploop_major is module parameter actually, + * set to PLOOP_DEVICE_MAJOR by default. We may + * need to scan module params or access + * /sys/block/ploopX/dev to fetch major. + * + * For a while simply use predefined @major. + */ + static const int ploop_major = 182; + int maj = major(p->stat.st_rdev); + + /* + * It's been found that systemd-udevd sometimes + * opens-up ploop device from inside of container, + * so allow him to do that. + */ + if (maj == ploop_major) + return 0; + + return -1; +} + static int dump_one_file(struct parasite_ctl *ctl, int fd, int lfd, struct fd_opts *opts, struct cr_img *img) { @@ -431,9 +455,15 @@ static int dump_one_file(struct parasite_ctl *ctl, int fd, int lfd, struct fd_op return do_dump_gen_file(&p, lfd, ops, img); } - if (S_ISREG(p.stat.st_mode) || S_ISDIR(p.stat.st_mode)) { + if (S_ISREG(p.stat.st_mode) || S_ISDIR(p.stat.st_mode) || + S_ISBLK(p.stat.st_mode)) { struct fd_link link; + if (S_ISBLK(p.stat.st_mode)) { + if (check_blkdev(&p, lfd)) + return -1; + } + if (fill_fdlink(lfd, &p, &link)) return -1; -- 2.7.4 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel