- 08 Feb, 2017 1 commit
-
-
Cyrill Gorcunov authored
Will move the header into compel. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
- 07 Feb, 2017 1 commit
-
-
Adrian Reber authored
Migrating a process between a system with the 'xsave' CPU flag and another system without the 'xsave' CPU flags is not possible and fails during restore. To avoid this situation it is possible to boot the source system of the migration with 'noxsave' kernel command-line. Unfortunately criu currently tries to detect the presence of 'xsave' with the macro X86_FEATURE_XSAVE which represents the features of the CPU without taking into account if the operating system has disabled 'xsave'. Checking for 'xsave' availability with the macro X86_FEATURE_OSXSAVE detects correctly if Linux has been booted with disabled 'xsave' and thus migrating processes between hosts with and without 'xsave' is possible if the kernel uses the flag 'noxsave'. travis-ci: success for criu dump fails when using noxsave (rev2) Signed-off-by:
Adrian Reber <areber@redhat.com> Reviewed-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
- 06 Feb, 2017 38 commits
-
-
Pavel Emelyanov authored
Nowadays we have parasite and restorer logs just start with pie: prefix. Let's add timestamps in restorer too. For parasite adding timestamps would require passing the start timeval through the libcompel which is not (yet) clear how to do. travis-ci: success for pie: Print timestamps in restorer Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Pavel Emelyanov authored
When we collect all the read_page requests into one big preadv call, the latter one may not read all the data in one go and return less bytes read, than requested. This is valid and already met in a bug :) So advance the iovec set with the ret value and continue reading. v2: Compilation fix on arm-s A little bit more debugging https://github.com/xemul/criu/issues/271 travis-ci: success for series starting with [1/2] pagemap: Support async pages reading by chunks (v2) Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
This patch reworks this function, removes mess and fix the next coverity issue: 394 m->parent = parent; CID 175314 (#1 of 1): Dereference after null check (FORWARD_NULL) 27. var_deref_model: Passing null pointer &parent->children to list_add_tail, which dereferences it. [show details] travis-ci: success for mount: simplify mnt_build_ids_tree() Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
205 if (fd < 0) { >>> >>> CID 175317: (PW.BAD_PRINTF_FORMAT_STRING) >>> >>> invalid format string conversion 206 pr_perror("can't accept client connection %m"); travis-ci: success for zdtm: use pr_err if errno isn't required Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
1359 if (prep_unix_sk_cwd(ui, &cwd_fd, &root_fd)) >>> >>> CID 175319: Resource leaks (RESOURCE_LEAK) >>> >>> Handle variable cwd_fd going out of scope leaks the handle. travis-ci: success for unix: don't leak a file descriptor Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Every task and helper have ids populated, except this case. Fix that. https://travis-ci.org/tkhai/criu/builds/197728925 travis-ci: success for files: Fix not populated helper ids Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
The problem is in the chroot test: geninfo: ERROR: /home/travis/build/xemul/criu/test/zdtm/static/chroot.dir.test/home/travis/build/xemul/criu/images/timer.gcno: could not open file We can just ignore these errors. travis-ci: success for travis: fix collecting code coverage Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
This patch fixes an exit code if a page-server is started as a daemon. Now the criu exits with a pid of a page server, it's meaningless, because pid is usually bigger than 128. travis-ci: success for series starting with [1/2] page-server: don't return a server pid from page-server Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
Currently we check errno, but musl-libc doesn't zero it, if fscanf() has returned EOF without errors. travis-ci: success for A few fixes for Alpine Linux Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
They are not implemented in musl-libc (alpine). travis-ci: success for A few fixes for Alpine Linux Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
In the case when one eventpoll in polled by another eventpoll, we should wait till the polled epoll is opened. So, as the stage FLE_RESTORED is after FLE_OPEN, it's also OK. travis-ci: success for eventpoll: Fix dependency check Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
The callers of rfi_remap() are interested in a errno, linkat_hard() returns. So, preserve errno before we call rm_parent_dirs(). Reported-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
We are going to create slave pty-s to bind-mount them, but at this moment we don't have file_desc-s and actually can't open /dev/ptmx by path. Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
Absolute paths are used to delete old unix sockets. After 3f67731b8e all processes live in a mount root yard, so if we want to access absolute paths, we have to change root. https://travis-ci.org/avagin/criu/builds/197092365Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Save one syscall and analyze recvmsg() error code to check that there is no data in the socket. Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Pavel Emelyanov authored
As a slight side effect even expected fle is checked for being task_fle(), but that's OK. Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Acked-by:
Kirill Tkhai <ktkhai@virtuozzo.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Acked-by:
Kirill Tkhai <ktkhai@virtuozzo.com>
-
Pavel Emelyanov authored
The tail of the recv_fd_from_peer() matches this routine :) So call one and rename, since it no longer keeps fd for future only. Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Acked-by:
Kirill Tkhai <ktkhai@virtuozzo.com>
-
Pavel Emelyanov authored
We've received tmp, which is not expected one, so check for it. Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Acked-by:
Kirill Tkhai <ktkhai@virtuozzo.com>
-
Andrei Vagin authored
These chnages allows us to: * avoid difference between the root mount namespace and other mount namespaces * support a read-only root mount * don't create temporary directories in the root mount Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Andrew Vagin reported the problem found by a checker: CID 174702 (#1 of 1): Out-of-bounds access (INCOMPATIBLE_CAST) incompatible_cast: Pointer &f->raw.counter points to an object whose effective type is int (32 bits, signed) but is dereferenced as a wider unsigned long (64 bits, unsigned). This may lead to memory corruption. It looks like, this points to real problem, which may happen on big-endian platforms. In the code I relay on the fact, that FDS_EVENT_BIT has a small number and the value, it determines, fits into int type without problems. But it's correct only for little-endian. In case of big-endian, if the word size is 8 bytes, then FDS_EVENT value is in the last bytes, so there is an access to wrong memory. To fix the problem, I suggest to use little-endian byte order to work with task_st futex. Then, the bits from 0 to 31 will be in the low adresses, i.e. in task_st futex. There is new primitives test_and_set_bit_le() and set_bit_le() borrowed from the linux kernel for that. This fixes the problem, but I suppose, the checker does not see the problem so deep, and just compares the types size, so it will fail again. So, let's enlarge the bit field size to silence it. Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Iterate over currently unrestored files only. v4: New Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Since we keep files of all types in a single list (fds), it's possible to use only function for that and to call it unconditionally. v4: New Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Nobody uses pid, so let's kill it. Also, pass pstree_item parameter to open_fdinfos() instead of list, as this function operates on fds list only. v4: New Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Since eventpoll opening time is set by dependencies (see epoll_not_ready_tfd()), we may safely store them in generic list. v4: New Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Since tty opening order is set by dependencies, we may safely store all ttys in generic list. v4: New Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Fixup ctty right after it's open. It'll need for merging tty files in single fds list: set ctty before next fle in list is processed. See next patch for the details. v4: New Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Firstly masters, then slaves and lastly ctty. v4: New Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
This make open fds asynchronous. Now we restore them in a poll-style. Every ->open callback operates like a poll. It returns 1, i.e. "call me again", if some events have not received yet, or 0, if restoring of a fle has finished. We iterate over list of file descriptors and look at its return value. If there were not progress in restoring of a fle, we sleep on task_st futex. As all events are sent together with changing task_st, we will be woken up, when there is a some new work for us. v6: Add a comment about open method return values v5: Clear FDS_EVENT every beginning of cycle. Use 0, -1 and 1 for successful return error and "again" request. v4: unix: 1)standalone sockets return ORV_AGAIN after first open to reopen fd by generic code 2)do not call post_open_unix_sk() for !standalone sockets inet, epoll: return ORV_AGAIN after first open to reopen fd by generic code autofs: iterate used list instead of fds list Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
This breaks everything, because files.c can't have a deal with this yet. But next patch will teach it. v5: Use hard-coded 0, -1 and 1 for successful return, error and "again" request. v4: tty: merge new_fd assignment to receive_tty() and return this function result directly. Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Return results of work separate: a new fd is in a parameter, a status is in return value. In next patches we will use return value "1" to indicate, that open callback should be called once again, and restore for this fle has not finished yet. So, we need to be able to differ file descriptor with number 1 and "again" request. We do not use negative value like -2 for this purpose, because we want to allow fles to be served out before they are completelly restored. So, if a fle is successefuly open, but it's need one more call of open to complete its restore, then we return 1 and populate new_fd in not negative value. See "files: Kill struct file_desc_ops::post_open" for the details. Also, export open_pipe() v5: Use 0 and -1 for successful return and error. v6: Rebase on new criu Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
This is need to make receiving a fle non-blocking. We will sleep on task_st futex instead of this. v5: Do not set event in send_fd_to_self() Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Currently, it's just an additional check. But later this will be used int the following way. Return value "1" means, that fle is not ready for restore, and the caller should recall this method once again later. See "[PATCH] files: Kill struct file_desc_ops::post_open" for the details. v5: Use "1" for return v2: Use generic FLE_OPEN and FLE_RESTORED to determ if a fle is ready Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
This point we think it's a first call of open(), so the state must be FLE_INITIALIZED. v6: New Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Timerfd's post_open state does not depend on another objects, so it may be safely merged into open stage. travis-ci: success for Rework file opening scheme to make it asynchronous (rev5) Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
The step to make file opening use the only futex. travis-ci: success for Rework file opening scheme to make it asynchronous (rev5) Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
This is need for waiting, while port has users, using task_st futex. travis-ci: success for Rework file opening scheme to make it asynchronous (rev5) Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Kirill Tkhai authored
Use task_st futex notifier instead of per-socket. The step to make file opening use the only futex. v2: Use internal bound and listen states instead of generic travis-ci: success for Rework file opening scheme to make it asynchronous (rev5) Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-