Commit graph

9512 commits

Author SHA1 Message Date
Andrei Vagin
9c40efdd19 service-fd: close a source file descriptor in install_service_fd()
Currently, install_service_fd() always creates a new file descriptor,
but it is going to be reworked to reuse a file descriptor when it is
possible.

Reviewed-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
19d3da0d9b test: static/tun -- More detailed errors and code shrink
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
6b8852cfcb test: static/socket-tcp -- Check for iptables success
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
33dd782c1d test: static/tun -- Check if unshare successed
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
1efdb547e2 test: static/socket-tcp -- Check if unshare successed
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
dbdd19fa1b test: static/sk-unix-mntns -- Check if unshare successed
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
15e6662472 test: static/netns_sub -- Check if unshare successed
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
9121d8b78c test: static/mntns_shared_bind -- Check if unshare successed
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
caca7c1ad2 test: static/mntns_root_bind -- Check if unshare successed
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
76669e307b test: static/mnt_ext_master -- Check if unshare successed
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
4e212cebb6 test: static/mnt_ext_auto -- Check if unshare successed
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Andrei Vagin
4ce3fc0b98 jenkins/criu-lazy-migration: clean old files
Otherwise files from a previous build can affect the current one.

Reported-by: Mr Jenkins
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
b44eaddb29 x86: cpu -- Require compatibility on instruction level by default
For a long time we've been demanding from cpus to be compatible
on fpu frame level, but growing list of cpu features triggers
inability for restored programs to proceed after restore due
to specific intructions execution (such as avx2). Note the
fpu frame may carry same size but not on instruction level
where SIGILL may happen after the restore.

Thus lets require instruction mode to be set and verified by default.
Still one can drop this option via command line or rpc request.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
51b4ca964e x86: cpu -- Use native uint_x types
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
fbb67af9fd x86: cpu -- Don't exit early if --cpu-cap=ins specified
Since we're using bintmaps for options don't exit early
if --cpu-cap=ins specified because there might be a
combination of options.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
5d4e6bd636 x86: cpu -- Drop no longer needed early exit from cpu_validate_features
Since now validation is bit based there is no longer need to
exit early if fpu matches, we rather need over all possible
options where several capability modes can be set.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmaill.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
cdd8643d64 x86: cpu -- Add more detailed mode description
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmaill.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
5b574fffc6 x86: cpu -- Update default cpu-cap option
To preserve backward compatibility because
strict mode now lays under own block.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmaill.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:28:00 +03:00
Cyrill Gorcunov
f2bf496571 x86: cpu -- Use special bit for image manipulation
Current scheme of when to write and verify cpuinfo
images is unclear: we define default mode to 'fpu'
and this implies that no cpuinfo image get written
on dump and read on restore. In turn if 'cpu' or
'ins' mode specified in command line we write and
verify this image.

This is all wrong -- we need to produce image if
any mode ecxept 'none' is specified. The 'none'
mode is designed exactly for skipping cpuinfo
image production or verification.

Because any non-default mode requires explicit
--cpu-cap option to be passed we can use this
and setup new CPU_CAP_IMAGE telling criu to
write or read this image.

Note the default mode doesn't break backward
compatibility because by default we don't
write or read the image at all.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmaill.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Cyrill Gorcunov
ee478bed97 x86: cpu -- Move strict capability mode into own block
It should be there from the beginning but happen to escape.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmaill.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Cyrill Gorcunov
ddd373f490 x86: cpu -- Move xsave testing into fpu capability block
xsave sizes should sit in fpu capability block because
instruction and strick mode checkig is a different
thing.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmaill.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Cyrill Gorcunov
cfc1d5644e x86: cpu -- Use bitwise operator for option check
Usually people simply leave cpu checkin in default
mode (which is fpu level) but idea was to be able
to compose a mixture of settings, for this sake
CPU_CAP_ constants are bit shifts. Thus use bitwise
operator for this.

Same time define CPU_CAP_ as bit shifts explicitly
and use explicit CPU_CAP_NONE compare where needed.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmaill.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Cyrill Gorcunov
8595dec9ac x86: cpu -- Make cpu_dump_cpuinfo more readable
No func changes.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmaill.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Cyrill Gorcunov
327e78f922 x86: cpu -- Save xsave frame sizes in image
Keep xsave sizes in image to be sure that on restore the application
won't override memory out of xsave frame size if been calling xsave
instruction directly.

Here are some details: while been testing vz7 containers migration
we've noticed that sometime applications do crash after restore,
what is worse such execution abort may happen not immediately
after the restore but after passing some time. After spending
a lot of time we discovered that it is due to the fact that
the migration is directed from an old cpu to a modern one
which has extensions such as mpx. In result libc has cached
small xsave size and then after restore any direct call to
xsave instruction overwrite memory which is allocated with
size less than needed.

Thus we save xsave frame size in image and require it to
match to prevent such situation.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmaill.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Pavel Tikhomirov
8b88b3fc39 files: don't add double slash to path in create_ghost
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Pavel Tikhomirov
47bf04d297 util: fixup issubpath to handle sub-paths ending with slash
Before fix issubpath("./zdtm/static/mntns_shared_vs_private.test",
"./") returned false, though should return true.

Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Pavel Tikhomirov
70dd6eaad5 mount: fix typos in root_path_from_parent
colon operators are there obviously by mistake instead of semicolons

Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Pavel Tikhomirov
bfe5a85091 mount: remove leading double slash
As mnt_roots always has a slash at the beginning we don't need another:

(00.156035)      1: mnt: Move the root to //tmp/.criu.mntns.ZKVJHl/15-0000000000

Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Pavel Tikhomirov
cf77cfaccc log: add line breaks to pr_warn
for i in $(find . -name "*.[ch]" -type f); do
	sed -i 's/\(pr_warn(".*[^n]\)\("[),]\)/\1\\n\2/' $i
done

Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Adrian Reber
b4ab1d8cba RPC: fix wrong log_level handling
In RPC mode the log_level was always reset to the default log level of 2, if no
configuration file was used.

This saves the log level set via RPC in opts.log_level and a configuration file
can overwrite it later, but if it is only set via RPC this value is not ignored
now.

Signed-off-by: Adrian Reber <areber@redhat.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Kondo, Uchio
ab63f168ac mount: Add a detailed error message when opts.root is NULL
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Radostin Stoyanov
ae758dc716 config: Remove -c -f -F and -p options
The -c and -f options were introduced on December 2011 with

  commit 485c4b50d1
  show: Rework show procedure

  Added

   - ability to parse every single file crtools
     understands via magic number

   - dumped memory pages can be rendered in two
     modes -- as a simple set of pages' virtual addresses
     or in hexdummp fashion (via -c command line key).

  For example

  ./crtools -s -c -f pages-2557.img

  CR_FD_PAGES: pages-2557.img
  ----------------------------------------
      7fffb44ace20: 00 00 00 00 00 00 00 00  00 00 00 74 65 73 74 2f  |. . . . . . . .  . . . t e s t / |
      7fffb44ace30: 74 65 73 74 2d 73 69 67  61 63 74 69 6f 6e 00 48  |t e s t - s i g  a c t i o n . H |
      7fffb44ace40: 4f 53 54 4e 41 4d 45 3d  6c 6f 63 61 6c 68 6f 73  |O S T N A M E =  l o c a l h o s |
      7fffb44ace50: 74 2e 6c 6f 63 61 6c 64  6f 6d 61 69 6e 00 54 45  |t . l o c a l d  o m a i n . T E |

The -p/--pid option was added on April 2013 with

  commit 73d7e283a7
  show: Filter -D output with --pid option

  Show only image info relevant to given pid. Also reuse
  the introduced --pid argument for exec action.

And the -F option was introduced on December 2013 with

  commit 7ab8a3261b
  show: Implement simple images filtering

  The -F|--fields option specifies which fields (by name, comma
  separated) should be printed.

  For nested fields all names in path should be specified.

All four options were used in combination with the deprecated --show
command which has been decommissioned on February 2016 with

  commit a501b4804b
  show: Remove deprecated code

  The 'show' action has been deprecated since 1.6, let's finally drop it.

  The print_data() routine is kept for yet another (to be deprecated too)
  feature called 'criu exec'.

Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Acked-by: Adrian Reber <areber@redhat.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Cyrill Gorcunov
3ce615caef image: sk-packet -- Reserve fields
To handle message addresses and ucreds.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Cyrill Gorcunov
69f8594362 image: core -- Reserve tty fields
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Radostin Stoyanov
3023f4f1c8 util: Fix reversed IPv4/IPv6 port assignment
Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Mike Rapoport
43285af929 criu: parasite_prepare_threads: free memory on error path
Fixes cov 191305

Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Andrei Vagin
eb8dc67f3f travis: exclude the code coverage job
It fails too often and nobody knows how to fix it.

Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Andrei Vagin
2b76b3246f restore: avoid an unterminated string
>>>     CID 164715:    (BUFFER_SIZE_WARNING)
>>>     Calling strncpy with a maximum size argument of 16 bytes on
	destination array "thread_args[i].comm" of size 16 bytes might
	leave the destination string unterminated.
3473    strncpy(thread_args[i].comm, core->tc->comm, TASK_COMM_LEN);

Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Acked-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:59 +03:00
Radostin Stoyanov
d40c702dd8 zdtm: Call criu.available() only for run action
When zdtm.py is executed with `list` sub-command the 'criu_bin'
option is not defined and criu.available() fails.

$ python test/zdtm.py list
Traceback (most recent call last):
  File "test/zdtm.py", line 2243, in <module>
    criu.available()
  File "test/zdtm.py", line 1185, in available
    if not os.access(opts['criu_bin'], os.X_OK):
KeyError: u'criu_bin'

However, we don't need to check the existence of criu_bin
unless we use the `run` action.

Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Acked-by: Adrian Reber <areber@redhat.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:58 +03:00
Radostin Stoyanov
2e7ef4f7b9 mount: Reduce size of mkey in ext_mount_lookup
Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:58 +03:00
Cyrill Gorcunov
fb7611e6eb sk-unix: Use unsigned values for inodes
It is especially important when accessing a hash --
there must be no negative indices ever.

https://jira.sw.ru/browse/PSBM-82945

Signed-off-by: Cyrill Gorcunov <gorcunov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:58 +03:00
Radostin Stoyanov
221f115189 Fix typos
Most of the typos were found by codespell.

Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:58 +03:00
Radostin Stoyanov
8f0225a82f mount: Simplify ext_mount_parse_auto
There are no functional changes.

Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:58 +03:00
Adrian Reber
a853ccfbe0 Documentation: update RPC configuration file section
Signed-off-by: Adrian Reber <areber@redhat.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:58 +03:00
Alice Frosi
5f8ee1053f s390: Fix to skip the test if GS not supported
Signed-off-by: Alice Frosi <alice@linux.vnet.ibm.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:58 +03:00
Andrei Vagin
23d619a53c criu: add a few missing newlines in pr_err()
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:58 +03:00
Pavel Tikhomirov
b939a4df02 dump/files: remove a leftover from dead_pid_conflict
In commit 23b769498c ("dump: optimize dead_pid_conflict by searching
in rbtree") we'd replaced for_each_pstree_item and thread walk search
with pstree_pid_by_virt (rb-tree search). The latter already found us
the thread with conflicting pid if it exists, the only thing left is to
skip if the thread is also a main thread of the thread group (as it was
before patch). But some leftover left which checks something wrong: we
index ->threads array with "i", but "i" is not a number of the thread
it is a number of current dead pid.

Not sure if it helps with the initial bug and duplicates, but it might:
https://jira.sw.ru/browse/PSBM-55217

Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:58 +03:00
Pawel Stradomski
ed2e5d4077 Fall back to opening image files readonly if readwrite fails.
This can happen when running in user namespace with auto-dedup enabled.
Right now this means auto-dedup gets disabled.

Signed-off-by: Pawel Stradomski <pstradomski@google.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:58 +03:00
Pavel Tikhomirov
d51695604b files: fix naming confusion between RemapFilePathEntry and RegFileEntry
call variables of type RemapFilePathEntry - "rpe" everywhere, similar as
we already name them in oher places

while on it remove unused second argument of open_remap_linked

Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:58 +03:00
Andrei Vagin
3795598cd5 zdtm: handle inherit_fd-s in the rpc mode
./test//zdtm.py --set inhfd run --all --rpc

Cc: Adrian Reber <areber@redhat.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:58 +03:00