Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 16 additions & 6 deletions criu/seize.c
Original file line number Diff line number Diff line change
Expand Up @@ -1060,22 +1060,32 @@ int collect_pstree(void)
*/
alarm(opts.timeout);

ret = run_plugins(PAUSE_DEVICES, pid);
if (ret < 0 && ret != -ENOTSUP) {
goto err;
}

if (opts.freeze_cgroup && cgroup_version())
goto err;

pr_debug("Detected cgroup V%d freezer\n", cgroup_v2 ? 2 : 1);

if (opts.freeze_cgroup && !compel_interrupt_only_mode) {
ret = run_plugins(PAUSE_DEVICES, pid);
if (ret < 0 && ret != -ENOTSUP) {
goto err;
}

if (freeze_processes())
goto err;
} else {
if (opts.freeze_cgroup && prepare_freezer_for_interrupt_only_mode())
goto err;

/*
* Call PAUSE_DEVICES after prepare_freezer_for_interrupt_only_mode()
* to be able to checkpoint containers in a frozen state.
*/
ret = run_plugins(PAUSE_DEVICES, pid);
if (ret < 0 && ret != -ENOTSUP) {
goto err;
}

if (compel_interrupt_task(pid)) {
set_cr_errno(ESRCH);
goto err;
Expand Down Expand Up @@ -1136,4 +1146,4 @@ int checkpoint_devices(void)
exit_code = 0;
err:
return exit_code;
}
}
Loading