- 21 Apr, 2019 40 commits
-
-
Radostin Stoyanov authored
Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com>
-
Pavel Tikhomirov authored
Suppress the false positive fail in criu-live-migration job: https://ci.openvz.org/job/CRIU/job/criu-live-migration/job/criu-dev/1796/ [criu]# ./test/zdtm.py run -t zdtm/static/overmounted_file -f uns --lazy-migrate === Run 1/1 ================ zdtm/static/overmounted_file =================== Run zdtm/static/overmounted_file in uns ==================== Start test Test is SUID ./overmounted_file --pidfile=overmounted_file.pid --outfile=overmounted_file.out --dirname=overmounted_file.test Run criu dump Test zdtm/static/overmounted_file FAIL at criu dump exited with 1 ###### Send the 9 signal to 49 Wait for zdtm/static/overmounted_file(49) to die for 0.100000 Signed-off-by:
Pavel Tikhomirov <ptikhomirov@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Radostin Stoyanov authored
The '-R' is short for '--leave-running', which is a boolean option and does not require an argument. From getopt(3) man page: optstring is a string containing the legitimate option characters. If such a character is followed by a colon, the option requires an argument, ... Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com>
-
Radostin Stoyanov authored
Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com>
-
Martin Wührer authored
This commit removes the functions criu_(local_)set_service_comm(). These functions are not neccessary, because if set_service_address(), set_service_fd() or set_service_binary() has been called it is already clear, which service comm type should be used. Furhtermore, this commit reduces the number of misuses. E.g. if set_service_comm() was set to socket, but a binary was given via set_service_binary(). Signed-off-by:
Martin Wührer <martin.wuehrer@artech.at>
-
Martin Wührer authored
This commit checks after each strdup() call if the call was successful. If not, the function that calls strdup() returns an error. This requires, that the return value of several functions has to be changed from void to int. Signed-off-by:
Martin Wührer <martin.wuehrer@artech.at>
-
Pavel Tikhomirov authored
Signed-off-by:
Pavel Tikhomirov <ptikhomirov@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Pavel Tikhomirov authored
Signed-off-by:
Pavel Tikhomirov <ptikhomirov@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Pavel Tikhomirov authored
Files from such mounts can switch on restore to different files on the overmounting mount, as we yet don't fully control the mount on which the file is restored. v3: make mnt_is_overmounted boolean again Signed-off-by:
Pavel Tikhomirov <ptikhomirov@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Pavel Tikhomirov authored
Test creates two shared mounts, both are readonly, on each mount we have a different ghost file. Also let these mounts have different mount flags. That makes us both test do_new_mount hunk for delaying readonly and do_bind_mount, as one mount will bind from another on restore. https://jira.sw.ru/browse/PSBM-82991 v2: minor cleanup Signed-off-by:
Pavel Tikhomirov <ptikhomirov@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Pavel Tikhomirov authored
We can have ghost-files on readonly mounts, for them we will need to recreate the file on restore, and we can't do that if mount is readonly, so the idea is to remount the mount we want to operate on to be writable, and later after all ghost-files restored return mounts to their proper state if needed. There are three exceptions, where we don't remount: a) Overmounted mounts can't be easily remounted writable, as their mountpoints are invisible for us. b) If the mount has readonly superblock - there can be no ghost-files on such a mount. c) When we are in host mntns, we should not remount mounts in it, else if we face errors in between we'll forget to remount back. We have 3 places where we need to add these remount: 1) create_ghost() 2) clean_one_remap() 3) rfi_remap() For (1) and (2) we can just remount the mount writable without remounting it back as they are called in service mntns (the one we save in mnt_ns_fd), which will be destroyed with all it's mounts at the end. We mark such mounts as remounted in service mntns - REMOUNTED_RW_SERVICE. For (3) we need to remount these mounts back to readonly so we mark them with REMOUNTED_RW and later in remount_readonly_mounts all such mounts are re-remounted back. For (3) we also need to enter proper mntns of tmi before remounting. These solution v3 is better than v2 as for v2 we added additional remount for all bind-readonly mounts, now we do remounts only for those having ghost-files restore operations on them. These should be quiet a rare thing, so ~3 remounts added for each suitable mount is a relatively small price. note: Also I thought and tried to implement the complete remove of the step of remounting back to readonly, but it requires quiet a tricky playing with usernsd and only removes one remount (of ~3) for already a rare case so I don't thing it worth the effort. v2: minor commit message cleanup and remove warn v4: don't delay, only remount the mounts we explicitly want to write to just before operating, rename patch accordingly, reuse do_restore_task_mnt_ns, optimize inefficient ns_remount_readonly_mounts, and also add another exception. v5: simplify child status check, fix log messages and brackets, do not drop all flags but only the readonly flag Signed-off-by:
Pavel Tikhomirov <ptikhomirov@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Pavel Tikhomirov authored
On restore we change mounts tree topology and paths in find_remap_mounts thus mns_is_overmounted does not account remaped overmounts. So to know which mounts will be actually overmounted after restore we need two much effort, better prepare these info in advance. That also should improve performance of mnt_is_overmounted on dump, as we reuse calculations from previous calls. v3: make mnt_is_overmounted boolean again Signed-off-by:
Pavel Tikhomirov <ptikhomirov@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Pavel Tikhomirov authored
Signed-off-by:
Pavel Tikhomirov <ptikhomirov@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Radostin Stoyanov authored
Use realloc() to change the size of the memory block pointed to by info->source instead of allocating new memory area and releasing the old one. If info->source is NULL then the call is equivalent to malloc(size). Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com>
-
Radostin Stoyanov authored
The `show` and `exec` commands have been deprecated for some time, and it is unlikely to be called by users. It would be better to move them the end of the sequence of if-statements. Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com>
-
Radostin Stoyanov authored
The function parse_options() should return an integer 0, 1 or 2, where: 0 := Success 1 := Failure 2 := CRIU should display help text The current behaviour always creates a warning message which shows the return value of that function. However, when the return value is different than 0 (Success) CRIU will fail. Since the logging is not initialised when this message is created, it will be lost, and therefore it can be removed completely. Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com>
-
Radostin Stoyanov authored
The value stored in 'ret' is never used. Instead, output an error message. Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com>
-
Radostin Stoyanov authored
Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com>
-
Mike Rapoport authored
Although non-cooperative userfaultfd events have been merged into the Linux kernel since 4.11 they were racy until 4.18. Exclude "dangerous" tests for older kernels. Signed-off-by:
Mike Rapoport <rppt@linux.ibm.com>
-
Mike Rapoport authored
Somehow in travis tests the mmap of 8K gets "rounded" down and the actual VMA starts 4K below the returned address. This causes /proc/pid/smaps parsing to fail. Increasing the allocation size to 2M seems to resolve the problem and until the root cause is identified it looks like a viable workaround. Signed-off-by:
Mike Rapoport <rppt@linux.ibm.com>
-
Martin Wührer authored
The functions criu_(local_)set_service_address and criu_(local_)set_service_binary are the only functions that do not create a copy of the given string arguments. This may lead to problems, if the original string gets freed but criu relies on them. Additionally, the function criu_local_init_opts() assigns the default service_binary now to opt->service_binary instead of opt->service_address which is in my opinion the preferred way since both are types of an anonymous union. Signed-off-by:
Martin Wührer <martin.wuehrer@artech.at>
-
Mike Rapoport authored
Verify that enabling / disabling THP with prctl(PR_SET_THP_DISABLE) does not change VMA flags Signed-off-by:
Mike Rapoport <rppt@linux.ibm.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Takashi Iwai authored
Since asciidoc is based on Phyton 2, we want to move to alternative, and a promising one is asciidoctor. This patch allows to use asciidoctor for formatting man pages instead of asiidoc, by passing a make option, USE_ASCIIDOCTOR=yes. Although asciidoctor is almost compatible with asciidoc, it can produce a man page directly from a text file without XML, which is more efficiently. So in asciidoctor mode, we don't require xmlto. Signed-off-by:
Takashi Iwai <tiwai@suse.de> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Takashi Iwai authored
a2x is never used although its presence is checked mandatorily. Let's remove this superfluous check and the unused entry. Signed-off-by:
Takashi Iwai <tiwai@suse.de> Reviewed-by:
Dmitry Safonov <0x7f454c46@gmail.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Radostin Stoyanov authored
Split the function parse_config() into smaller parts by introducing the parse_statement(), and add more descriptive comments to improve readability. In addition, make sure that the last element of the array of strings 'configuration' is initialised to NULL, which is necessary to properly count the number of elements after parsing. Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Martin Wührer authored
As most of the `criu_(local_)*` functions already call `strdup()`, it is possible, to change the function signature to `const char *`. As the struct `criu_opts` already contains a `const char * service_binary`, also the member `service_address` is changed to `const char`. Additonally, also the function `criu_local_set_freeze_cgroup()` now calls `strdup()`. Signed-off-by:
Martin Wührer <martin.wuehrer@artech.at> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Martin Wührer authored
According to https://criu.org/API_compliance, the C-library doesn't support the pageserver option. This patch contains the functions `criu_(local_)set_page_server_address_port()` that allow to specify on which ip and tcp-port the pageserver is listening. This patch affects only the c-lib, as criu-rpc already supports the pageserver settings. Signed-off-by:
Martin Wührer <martin.wuehrer@artech.at> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Kir Kolyshkin authored
Add run as a phony target. Move .PHONY declarations next to their targets. Reviewed-by:
Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by:
Kir Kolyshkin <kolyshkin@gmail.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Kir Kolyshkin authored
Here $(Q) is substituted with either @ or nothing, depending on whether V is set, to either have verbose output or not. So, it does not make sense to add another @. Reviewed-by:
Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by:
Kir Kolyshkin <kolyshkin@gmail.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Kir Kolyshkin authored
Since this part is inside "define" statement, double $ should be used to refer to internal functions, to call the patsubst when a define is called (rather than defined). This should fix dependency generation for images/ Reviewed-by:
Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by:
Kir Kolyshkin <kolyshkin@gmail.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Martin Wührer authored
If `criu_local_init_opts()` is applied on the same opts-object several times, not all of the allocated memory gets freed. Therefore, the functions `criu_(local_)free_opts()` were introduced. These functions ensure, that opts get freed accordingly. Furthermore, `criu_(local_)free_opts()` gets part of the c-api, and can therefore be called by external projects too. Additionally, with this commit `criu_local_init_opts()` now uses `criu_local_free_opts()`, to free the opts-parameter if it was already initalized before. This commit also contains a fix in `send_req_and_recv_resp_sk()` which lead to a memory leak, if criu-notifications were received. Signed-off-by:
Martin Wührer <martin.wuehrer@artech.at> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Radostin Stoyanov authored
The purpose of this helper function is to perform actions common to different interfaces, after all CRIU options have been parsed. This can be used, for instance, to verify that a specific option was passed to CRIU via CLI, RPC or config file. Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com> Acked-by:
Adrian Reber <areber@redhat.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Radostin Stoyanov authored
Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Radostin Stoyanov authored
Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Radostin Stoyanov authored
Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com> Acked-by:
Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Radostin Stoyanov authored
Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com> Acked-by:
Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Radostin Stoyanov authored
Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Radostin Stoyanov authored
The header "lsm.h" was added in crtools.c with commit 6af96c84 and it became unused after commit 09c131c8. Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Radostin Stoyanov authored
The option --lsm-profile was added with commit: 6af96c84 lsm: add a --lsm-profile flag In LXD, we use the container name in the LSM profile. If the container name is changed on migrate (on the host side), we want to use a different LSM profile name (a. la. --cgroup-root). This flag adds that support. A usage example is available in https://github.com/lxc/lxc/commit/13389b2963692a51162c703d8a64a79542b18949Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-
Radostin Stoyanov authored
The --tcp-close option was introduced with commit 2c370428 tcp: Add tcp-close option to restore connected TCP sockets in closed state This options is applicable only for restore. Therefore, move the documentation from 'dump' to 'restore'. Signed-off-by:
Radostin Stoyanov <rstoyanov1@gmail.com> Signed-off-by:
Andrei Vagin <avagin@gmail.com>
-