Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/checkpoint-restore/criu.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-08-31Fix, not ignore, shellcheck SC1091 warningsKir Kolyshkin
This is easy to fix (but we have to specify -x). Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2022-05-13crit: Use same version as criuRadostin Stoyanov
Name collision with an abandoned project named 'crit' in pypi causes pip to show crit (CRiu Image Tool) as outdated. This patch updates crit to use the same version and license as criu. Fixes #1878 Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
2022-05-13Add flog to CRIUprakritigoyal19
Change made through this commit: - Include copy of flog as a seperate tree. - Modify the makefile to add and compile flog code. Signed-off-by: prakritigoyal19 <prakritigoyal19@gmail.com>
2022-04-29ci: add codespell to lint targetKir Kolyshkin
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2022-04-29criu/plugin: Support AMD ROCm Checkpoint Restore with KFDRajneesh Bhardwaj
To support Checkpoint Restore with AMDGPUs for ROCm workloads, introduce a new plugin to assist CRIU with the help of AMD KFD kernel driver. This initial commit just provides the basic framework to build up further capabilities. Like CRIU, the amdgpu plugin also uses protobuf to serialize and save the amdkfd data which is mostly VRAM contents with some metadata. We generate a data file "amdgpu-kfd-<id>.img" during the dump stage. On restore this file is read and extracted to re-create various types of buffer objects that belonged to the previously checkpointed process. Upon restore the mmap page offset within a device file might change so we use the new hook to update and adjust the mmap offsets for newly created target process. This is needed for sys_mmap call in pie restorer phase. Support for queues and events is added in future patches of this series. With the current implementation (amdgpu_plugin), we support: - Only compute workloads such (Non Gfx) are supported - GPU visible inside a container - AMD GPU Gfx 9 Family - Pytorch Benchmarks such as BERT Base amdgpu plugin dependes on libdrm and libdrm_amdgpu which are typically installed with libdrm-dev package. We build amdgpu_plugin only when the dependencies are met on the target system and when user intends to install the amdgpu plugin and not by default with criu build. Suggested-by: Felix Kuehling <felix.kuehling@amd.com> Co-authored-by: David Yat Sin <david.yatsin@amd.com> Signed-off-by: David Yat Sin <david.yatsin@amd.com> Signed-off-by: Rajneesh Bhardwaj <rajneesh.bhardwaj@amd.com>
2022-04-29make: Explicitly enable FPU on ARMv7 buildsSalvatore Bonaccorso
Starting with gcc-11, Debian's armhf compiler no longer builds with a default -mfpu= option. Instead it enables the FPU via an extension to the -march flag (--with-arch=armv7-a+fp). criu's Makefile explicitly passes its own -march=armv7-a setting, which overrides the +fp default, so we end up with no FPU: cc1: error: '-mfloat-abi=hard': selected architecture lacks an FPU Signed-off-by: Radostin Stoyanov <radostin@redhat.com>
2022-04-29ci: replace deprecated codecov bash uploaderAdrian Reber
Replace deprecated codecov bash uploader with new version: https://about.codecov.io/blog/introducing-codecovs-new-uploader/ Signed-off-by: Adrian Reber <areber@redhat.com>
2022-04-29make: enable lint for coredumpRadostin Stoyanov
Signed-off-by: Radostin Stoyanov <radostin@redhat.com>
2022-04-29criu/plugin: Implement dummy amdgpu plugin hooksRajneesh Bhardwaj
This is just a placeholder dummy plugin and will be replaced by a proper plugin that implements support for AMD GPU devices. This just facilitates the initial pull request and CI build test trigger for early code review of CRIU specific changes. Future PRs will bring in more support for amdgpu_plugin to enable CRIU with AMD ROCm. Signed-off-by: Rajneesh Bhardwaj <rajneesh.bhardwaj@amd.com>
2021-10-12Makefile: add shellcheck test/others/libcriu/*.shRadostin Stoyanov
Signed-off-by: Radostin Stoyanov <radostin@redhat.com>
2021-09-03criu: introduce clang-format to format source codeAdrian Reber
This is another attempt to introduce a tool to format CRIU's source code. This time it is based on clang-format. The .clang-format file is taken from the linux kernel git tree (5.13). I removed all comments from lines which state that it requires at least clang-format 4 or 5. For this resulting file at least clang-format 11 is required. See scripts/fetch-clang-format.sh for all the changes done to the Linux kernel .clang-format file. Acked-by: Mike Rapoport <rppt@linux.ibm.com> Signed-off-by: Adrian Reber <areber@redhat.com>
2021-09-03scripts: run lint also on criu-nsAdrian Reber
Signed-off-by: Adrian Reber <areber@redhat.com>
2021-09-03criu: add unit testing for config file parserAdrian Reber
This tries to add a unit test for the configuration file parser. Signed-off-by: Adrian Reber <areber@redhat.com>
2021-09-03test: add tests for configuration file parsingAdrian Reber
This adds a test run to ensure known (but fixed) configuration file parser errors are not crashing CRIU anymore. Based on missing test code coverage this script also tests code paths of the option handling which have not been tested until now. Signed-off-by: Adrian Reber <areber@redhat.com>
2021-09-03criu: end pr_(err|warn|msg|info|debug) with \nKir Kolyshkin
Unlike pr_perror, pr_err and other macros do not append \n to the message being printed, so the caller needs to take care of it. Sometimes it was not done, so let's add this manually. To make sure it won't happen again, add a line to Makefile under the linter target to check for such missing \n. NOTE this check is only done for part of such cases (where the pr_* statement fits in one line and there's no comment after), but it's better than nothing. Add comments after pr_msg and pr_info statements where we deliberately don't add \n, so that the above check ignores them. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2021-09-03Whitespace at EOL cleanup and checkKir Kolyshkin
My editor (vim) auto-removes whitespace at EOL for *.c and *.h files, and I think it makes sense to have a separate commit for this, rather than littering other commits with such changes. To make sure this won't pile up again, add a line to Makefile under the linter target to check for such things (so CI will fail). This is all whitespace except an addition to Makefile. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2021-09-03scripts: fix shellcheck warningsKir Kolyshkin
On my system (shellcheck v0.7.1) make lint shows a few warnings about needing to quote variables. Fix those. PS I am not sure why those are not shown by GHA CI, I assume there is different shellcheck version used. Add shellcheck -- version to the appropriate Makefile target to avoid confusion. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2021-09-03Makefile: amend lint with pr_perror/fail checksKir Kolyshkin
In many cases developers forget that pr_perror and fail macros are a bit special, in particular: 1. they already show errno; 2. they already append \n to the message. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2021-09-03Makefile: docker-test don't use interactive ttyRadostin Stoyanov
Running zdtm tests does not require input and therefore it is not necessary to use -it. This change also allows to run the test in CI where it currently fails with: the input device is not a TTY make: *** [Makefile:388: docker-test] Error 1 Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
2021-09-03Makefile: update excluded tests for docker-testRadostin Stoyanov
All zdtm tests pass on Fedora 33 for `make docker-build && make docker-test` with devicemapper storage driver. Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
2021-09-03docker-test: use host cgroup & network nsRadostin Stoyanov
The test/zdtm_mount_cgroups script fails with 'permission denied' when running tests with private cgroup namespace. Using the host network namespace allows us to test criu as if it is running on the host, sharing iptables rules etc. Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
2021-09-03Dockerfile: add missing test dependenciesRadostin Stoyanov
This patch adds missing dependencies required to run the zdtm tests. Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
2021-09-03test: fix crit test and extend itAdrian Reber
This fixes the others/crit test to work again and extends it to make sure all possible input and output options are correctly handled by crit. Signed-off-by: Adrian Reber <areber@redhat.com>
2021-09-03ci: move coverage run to githubAdrian Reber
This also connects the coverage run to codecov.io. Signed-off-by: Adrian Reber <areber@redhat.com>
2020-11-09CI: rename 'travis' to 'ci'Adrian Reber
CRIU is already using multiple CI systems and not just Travis. This renames all Travis related things to 'ci' to show it is actually independent of Travis. Just a simple rename. Signed-off-by: Adrian Reber <areber@redhat.com>
2020-10-20CI: add Travis test script to 'lint'Adrian Reber
Running 'make lint' will now also check our travis-tests script with shellcheck. Signed-off-by: Adrian Reber <areber@redhat.com>
2020-10-20scripts: run shellcheck on the scripts folderAdrian Reber
Shellcheck (https://github.com/koalaman/shellcheck) can identify common errors in shell scripts. This initial integration of shellcheck only checks the scripts in the 'scripts/' folder. This commit fixes (or disables) all reports of shellcheck to ensure this part starts error free. I am not convinced this is really necessary as most changes do not seem to be necessary for their circumstances. On the other hand it probably does not hurt to use a checker to avoid unnecessary errors. Signed-off-by: Adrian Reber <areber@redhat.com>
2020-10-20Set Makefile config variables for libbpfAbhishek Vijeev
Source files modified: * Makefile.config - Checks whether libbpf is installed on the system. If so, we add -lbpf to LIBS_FEATURES, -DCONFIG_HAS_LIBBPF to FEATURE_DEFINES and set CONFIG_HAS_LIBBPF. This allows us to check for the presence of libbpf before compiling or executing BPF c/r code and ZDTM tests. * Makefile - Set CONFIG_HAS_LIBBPF to clean all files. Signed-off-by: Abhishek Vijeev <abhishek.vijeev@gmail.com>
2020-10-20mips:criu: Enable mips in criuGuoyun Sun
Signed-off-by: Guoyun Sun <sunguoyun@loongson.cn>
2020-02-04style: Enforce kernel style -Wstrict-prototypesNicolas Viennot
Include warnings that the kernel uses during compilation: -Wstrict-prototypes: enforces full declaration of functions. Previously, when declaring extern void func(), one can call func(123) and have no compilation error. This is dangerous. The correct declaration is extern void func(void). Signed-off-by: Nicolas Viennot <Nicolas.Viennot@twosigma.com> [Generated a commit message from the pull request] Signed-off-by: Dmitry Safonov <dima@arista.com>
2020-02-04style: Enforce kernel style -Wdeclaration-after-statementNicolas Viennot
Include warnings that the kernel uses during compilation: -Wdeclaration-after-statement: enforces having variables declared at the top of scopes Signed-off-by: Nicolas Viennot <Nicolas.Viennot@twosigma.com> [Generated a commit message from the pull request] Signed-off-by: Dmitry Safonov <dima@arista.com>
2020-02-04build: Use SUBARCHDmitry Safonov
Instead of doing additional `uname -m` - use provided $(SUBARCH) to detect what architecture flavour the build should produce the result for. Fixes two things: - zdtm make now correctly supplies $(USERCFLAGS) - subtly fixes cross compilation by providing a way to specify $(SUBARCH) Signed-off-by: Dmitry Safonov <dima@arista.com> Signed-off-by: Andrei Vagin <avagin@gmail.com>
2020-02-04build: Remove SRCARCHDmitry Safonov
SRCARCH is always equal ARCH. There are no rules when to use one or another and architectures may forget to set one of them up. No need for a second variable meaning the same and confusing people. Remove it completely. Self-correction [after some debug]: SRCARCH was different in one place: zdtm Makefile by some unintentional mistake: > ifeq ($(ARCH),arm64) > ARCH ?= aarch64 > SRCARCH ?= aarch64 > endif That meant to be "ARCH := aarch64" because "?=" would never work inside that ifeq. Fix up this part of mess too. Signed-off-by: Dmitry Safonov <dima@arista.com> Signed-off-by: Andrei Vagin <avagin@gmail.com>
2020-02-04Makefile hack for travis aarch64/armv8lAdrian Reber
For CRIU's compile only tests for armv7hf on Travis we are using 'setarch linux32' which returns armv8l on Travis aarch64. This adds a path in the Makefile to treat armv8l just as armv7hf during compile. This enables us to run armv7hf compile tests on Travis aarch64 hardware. Much faster. Maybe not entirely correct, but probably good enough for compile testing in an armv7hf container. Signed-off-by: Adrian Reber <areber@redhat.com>
2019-09-07pyimages: Add pb2dict.py to checked and fix warnings/errorsPavel Emelyanov
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2019-09-07lint: Print flake8 version before checkingPavel Emelyanov
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2019-09-07page-xfer: Add TLS support with X509 certificatesRadostin Stoyanov
This commit adds Transport Layer Security (TLS) support for remote page-server connections. The following command-line options are introduced with this commit: --tls-cacert FILE Trust certificates signed only by this CA --tls-cacrl FILE CA certificate revocation list --tls-cert FILE TLS certificate --tls-key FILE TLS private key --tls Use TLS to secure remote connections The default PKI locations are: CA certificate /etc/pki/CA/cacert.pem CA revocation list /etc/pki/CA/cacrl.pem Client/server certificate /etc/pki/criu/cert.pem Client/server private key /etc/pki/criu/private/key.pem The files cacert.pem and cacrl.pem are optional. If they are not present, and not explicitly specified with a command-line option, CRIU will use only the system's trusted CAs to verify the remote peer's identity. This implies that if a CA certificate is specified using "--tls-cacert" only this CA will be used for verification. If CA certificate (cacert.pem) is not present, certificate revocation list (cacrl.pem) will be ignored. Both (client and server) sides require a private key and certificate. When the "--tls" option is specified, a TLS handshake (key exchange) will be performed immediately after the remote TCP connection has been accepted. X.509 certificates can be generated as follows: -------------------------%<------------------------- # Generate CA key and certificate echo -ne "ca\ncert_signing_key" > temp certtool --generate-privkey > cakey.pem certtool --generate-self-signed \ --template temp \ --load-privkey cakey.pem \ --outfile cacert.pem # Generate server key and certificate echo -ne "cn=$HOSTNAME\nencryption_key\nsigning_key" > temp certtool --generate-privkey > key.pem certtool --generate-certificate \ --template temp \ --load-privkey key.pem \ --load-ca-certificate cacert.pem \ --load-ca-privkey cakey.pem \ --outfile cert.pem rm temp mkdir -p /etc/pki/CA mkdir -p /etc/pki/criu/private mv cacert.pem /etc/pki/CA/ mv cert.pem /etc/pki/criu/ mv key.pem /etc/pki/criu/private -------------------------%<------------------------- Usage Example: Page-server: [src]# criu page-server -D <PATH> --port <PORT> --tls [dst]# criu dump --page-server --address <SRC> --port <PORT> \ -t <PID> -D <PATH> --tls Lazy migration: [src]# criu dump --lazy-pages --port <PORT> -t <PID> -D <PATH> --tls [dst]# criu lazy-pages --page-server --address <SRC> --port <PORT> \ -D <PATH> --tls [dst]# criu restore -D <PATH> --lazy-pages Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
2019-09-07criu/vdso: Purge CONFIG_VDSODmitry Safonov
Vigorously remove the config ifdef. The config option *never* had any excuse to exist: - for x86 we were grand - for ppc64/arm64 patches to support mremap() on vdso were long ago accepted, but regardless - it's not possible to disable CONFIG_VDSO for those platforms in kernel - for s390 - patches were mainstreamed not that long ago, but it's not possible to disable the kernel config - for arm32 it's possible to disable the kernel config, but kernel returns to userspace historically through sigpage, not vdso. That's the only platform that criu disallows to have CONFIG_VDSO=y in kernel, but that's just meaningles. A kernel patch for sigpage mremap() has gone into v4.13: commit 280e87e98c09 ("ARM: 8683/1: ARM32: Support mremap() for sigpage/vDSO"). So, removing the config was long-lived item on my TODO list that bligted arm32 users and made changes to vdso more complex by all "needed" iffdeferry. Get rid of it with fire. Fixes: #446 Signed-off-by: Dmitry Safonov <dima@arista.com>
2019-09-07arm: Build {pie-, }util-vdso with CONFIG_VDSO_32Dmitry Safonov
Signed-off-by: Dmitry Safonov <0x7f454c46@gmail.com>
2019-09-07make: Move CR_NOGLIBC into CFLAGS_PIEDmitry Safonov
Lesser duplication, cleaner Makefiles. Reviewed-by: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: Dmitry Safonov <dima@arista.com> Signed-off-by: Andrei Vagin <avagin@gmail.com>
2019-09-07build: Move __ASSEMBLY__ define to the top MakefileDmitry Safonov
__ASSEMBLY__ is used to guard C-related code in headers from asm-compatible defines. We actually want every .S file to be assembled with -D__ASSEMBLY__ not to burst with C in asm file. Move __ASSEMBLY__ from all local asflags to top Makefile's AFLAGS. Reviewed-by: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: Dmitry Safonov <dima@arista.com> Signed-off-by: Andrei Vagin <avagin@gmail.com>
2019-09-07arm/build: Move -marm cflag to CFLAGS_PIEDmitry Safonov
I don't want to see CFLAGS redefined per-architecture in PIE makefiles in couple of places. Clean it up. The only expected per-arch ifdeffery should be object files. Also add a big comment about -marm vs -mthumb[2] Reviewed-by: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: Dmitry Safonov <dima@arista.com> Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30lint: check test/inhfd/ scriptsAndrey Vagin
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com> Signed-off-by: Andrei Vagin <avagin@gmail.com>
2018-10-30tests: add configuration file test via RPCAdrian Reber
This test checks the following things: * Does configuration file parsing work at all. * Does the parser detect wrong options. * Does the configuration file work via RPC. * Do the configuration file options not overwrite the RPC settings in the default setup. * Is it possible to tell CRIU to prefer the configuration file via RPC. Signed-off-by: Adrian Reber <areber@redhat.com> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-07-09crit: enable python2 or python3 based critAdrian Reber
With this last commit of the crit with python3 series it is possible to either use python2 or python3 with CRIU. Now the basic build system functionality (make and make install) are python2/python3 aware. zdtm.py and criu-coredump are still python2, but as they are not part of 'make install' those parts have not yet been ported from python2 to python3. Signed-off-by: Adrian Reber <areber@redhat.com> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-05-12make: Don't set $(MAKEFLAGS)Dmitry Safonov
We shouldn't set MAKEFLAGS by the following reasons: 1. User may want to specify some make parameter (e.g., `-d` for debug) 2. We lose parallel build. No `-j` is passed to submake and it looks like, gnu/make will not deal with parallel recursive make if $(MAKEFLAGS) is unset back. Easy to verify: Add `sleep 3` to build rule in Makefile.inc and you'll find only one sleep process at a time. After the patch if you specify say `-j5` to make - you'll have 5 sleep processes. Reverts: commit e9beed7bb3f3 ("build: zdtm -- Add implicit rules into zdtm building"). Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by: Dmitry Safonov <dima@arista.com> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-05-12[v2] criu: add -fprofile-update=atomic for builds with gcovAndrei Vagin
Sometimes we see errors like this: criu/cr-restore.gcda:Merge mismatch for function 106 It proabably means that this gcda file was corrupted. According to the gcc man page, the -fprofile-update=atomic should fix this problem. v2: this options appered in gcc7, so we need to install it. Reported-by: Mr Travis CI Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2017-11-23build: Move generated config.h into include/common/Dmitry Safonov
config.h is a generated file with "build-features" defines. We use it for several purposes: o to check that compiler can do it's job o to complement user-visible API between distributions o to add compile-time options from .config global file It's used in criu and soccr, but compel also needs such thing. Previously, soccr has a link to config.h in criu includes, but it would be much cleaner to move it to other headers, that are shared between sub-projects into include/common. Reported-by: Adrian Reber <areber@redhat.com> Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com> Tested-by: Adrian Reber <areber@redhat.com> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2017-11-23build: Reused .FORCE from nmkCyrill Gorcunov
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2017-09-16ppc64le: fix build with UFFDMike Rapoport
The __u64 is 'unsigned long' on Power and 'unsigned long long' on x86_64. Using PRI?64 does not help because, for instance, PRIu64 is 'lu'. According to [1] the solution is to define __SANE_USERSPACE_TYPES__ for Power builds [1] http://thread.gmane.org/gmane.linux.kernel/1425475/focus=1427433 Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com> Acked-by: Adrian Reber <areber@redhat.com> Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>