mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-31 22:35:33 +00:00
mount: strip options for all mounts
Currently we stript options only one of brothers, but mount_equal() thinks that two brothers should have the same options. Execute zdtm/live/static/mountpoints ./mountpoints --pidfile=mountpoints.pid --outfile=mountpoints.out Dump 2737 WARNING: mountpoints returned 1 and left running for debug needs Test: zdtm/live/static/mountpoints, Result: FAIL ==================================== ERROR ==================================== Test: zdtm/live/static/mountpoints, Namespace: Dump log : /root/git/criu/test/dump/static/mountpoints/2737/1/dump.log --------------------------------- grep Error --------------------------------- (00.146444) Error (mount.c:399): Two shared mounts 50, 67 have different sets of children (00.146460) Error (mount.c:402): 67:./zdtm_mpts/dev/share-1 doesn't have a proper point for 54:./zdtm_mpts/dev/share-3/test.mnt.share (00.146820) Error (cr-dump.c:1921): Dumping FAILED. ------------------------------------- END ------------------------------------- ================================= ERROR OVER ================================= Reported-by: Ruslan Kuprieiev <kupruser@gmail.com> Signed-off-by: Andrey Vagin <avagin@openvz.org> Tested-by: Ruslan Kuprieiev <kupruser@gmail.com> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
committed by
Pavel Emelyanov
parent
cb738520e3
commit
f88d72d0bd
13
proc_parse.c
13
proc_parse.c
@@ -797,6 +797,7 @@ static int do_opt2flag(char *opt, unsigned *flags,
|
||||
{
|
||||
int i;
|
||||
char *end;
|
||||
size_t uoff = 0;
|
||||
|
||||
while (1) {
|
||||
end = strchr(opt, ',');
|
||||
@@ -815,15 +816,17 @@ static int do_opt2flag(char *opt, unsigned *flags,
|
||||
return -1;
|
||||
}
|
||||
|
||||
strcpy(unknown, opt);
|
||||
unknown += strlen(opt);
|
||||
*unknown = ',';
|
||||
unknown++;
|
||||
strcpy(unknown + uoff, opt);
|
||||
uoff += strlen(opt);
|
||||
unknown[uoff] = ',';
|
||||
uoff++;
|
||||
}
|
||||
|
||||
if (!end) {
|
||||
if (uoff)
|
||||
uoff--;
|
||||
if (unknown)
|
||||
*unknown = '\0';
|
||||
unknown[uoff] = '\0';
|
||||
break;
|
||||
} else
|
||||
opt = end + 1;
|
||||
|
Reference in New Issue
Block a user