- 15 Feb, 2018 4 commits
-
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
PID ussualy means processs ID, but prepare_net_ns works with namespaces. travis-ci: success for Dump and restore nested network namespaces (rev4) Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Reviewed-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
ns_id will be used to collect sockets and other per-netns resources travis-ci: success for Dump and restore nested network namespaces (rev4) Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Reviewed-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
There are a number of global variables around this descriptor (e.g. open_proc_fd) and their values are saved in memory which are not shared between processes. travis-ci: success for Dump and restore nested network namespaces (rev4) Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Reviewed-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
- 19 Dec, 2017 5 commits
-
-
Pavel Emelyanov authored
This time we shifted the update one month, due to the amount of changes not being very big. And got pretty big update, including a set of bugfixes and new functionality. Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
-
Andrei Vagin authored
It has two arguments "pos_l and "pos_h" instead of one "off". It is used to handle 64-bit offsets on 32-bit kernels. SYSCALL_DEFINE5(preadv, unsigned long, fd, const struct iovec __user *, vec, unsigned long, vlen, unsigned long, pos_l, unsigned long, pos_h) https://github.com/checkpoint-restore/criu/issues/424Signed-off-by:
Andrei Vagin <avagin@openvz.org> Reviewed-by:
Dmitry Safonov <0x7f454c46@gmail.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Vitaly Ostrosablin authored
Due to way CRIU handles paths (as relative to workdir), there's a case, where migration would fail. Simple example is a ghost file in filesystem root (with root being cwd). For example, "/unlinked" becomes "unlinked". And original code piece scans path for other slashes, which would be missing in this case. But it's still a perfectly valid case, and there's no need to fail. So if there's no parent dir - we just don't need to create one and we can just return 0 here instead of failing. Signed-off-by:
Vitaly Ostrosablin <vostrosablin@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Andrei Vagin authored
The kernel doesn't have an interface to get a sent queue for udp sockets, so currently we can't dump them and criu dump has to fail in such cases. Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Andrei Vagin authored
Now we block all sockets with non-zero idiag_wqueue, but it doesn't mean that a CORK option is enabled for a socket. A packet can be in a network stack and it is accounted into idiag_wqueue. https://github.com/checkpoint-restore/criu/issues/409Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
- 12 Dec, 2017 28 commits
-
-
Pavel Tikhomirov authored
Except for several false positives done by: find -type f -name "*.c" -not -path "./test/*" -exec sed -i 's/\(\<pr_err.*[^\][^n]\)\("[,)]\)/\1\\n\2/g' {} \; Signed-off-by:
Pavel Tikhomirov <ptikhomirov@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Pavel Begunkov authored
Leases can be set only on regular files. Thus, as optimization we can skip attempts to find associated leases in 'correct_file_leases_type' for other fd types. Signed-off-by:
Pavel Begunkov <asml.silence@gmail.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Pavel Begunkov authored
-- check childs' errors in file_leases03 -- test c/r of lease transfered to child process Signed-off-by:
Pavel Begunkov <asml.silence@gmail.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Pavel Begunkov authored
CRIU creates dictinct lock record for each file descriptor on the same OFD. The patch removes this duplicates. To do so, it adds new field into struct file_lock, which stores pid of fd, on which lock was found. 'owner pid' is not actually helpful, because the original fd, on which lock have been set, can be already closed. Also it purges crutches doing the same stuff but only for file leases. Signed-off-by:
Pavel Begunkov <asml.silence@gmail.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Pavel Begunkov authored
Test cases: 0. Basic non-breaking read/write leases. 1. Multiple read leases and OFDs with no lease for the same file. 2. Breaking leases. 3. Multiple fds (dup + inherited) for single lease (mutual OFD). Signed-off-by:
Pavel Begunkov <asml.silence@gmail.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Pavel Begunkov authored
Information about locks in /proc/<pid>/fdinfo is presented only since kernel v4.1. This patch adds logic to *note_file_lock* to match leases and OFDs. Signed-off-by:
Pavel Begunkov <asml.silence@gmail.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Pavel Begunkov authored
restore of breaking leases is executed in 2 steps: 1. restore the lease in a state it was before break 2. break it by opening associated file. The patch fixes type of broken leases to 'target lease type', because procfs always returns 'READ' in this case. Also, it adds 'updated' field in lock structure. It's used to remove all duplicated records for single lease from the image, which wasn't corrected by 'correct_lease_type'. Signed-off-by:
Pavel Begunkov <asml.silence@gmail.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Pavel Begunkov authored
Leases in breaking state are not supported. In that case criu will report an error during the dumping. Also lock info in /proc/<pid>/fdinfo should be presented (since kernel 4.1). Before taking out new lease it modifies process fsuid to match file uid (see fcntl F_SETLEASE). Signed-off-by:
Pavel Begunkov <asml.silence@gmail.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Andrei Vagin authored
Now it's probably one valide use case, because there is no way to commit a container when a container is being checkpointed. Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Andrei Vagin authored
All static tests has to stop any activity before C/R. ./tempfs_subns --pidfile=tempfs_subns.pid --outfile=tempfs_subns.out --dirname=tempfs_subns.test Run criu dump Unable to kill 128: [Errno 3] No such process Run criu restore 7: Old mounts lost: [] 7: New mounts appeared: [('/rootfs/criu/test', '/'), ('/', '/proc'), ('/', '/dev/pts')] : Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Pierre-Olivier Mercier authored
This fix compilation issue regarding undeclared NULL and memcpy when using musl on ARM. Signed-off-by:
Pierre-Olivier Mercier <nemunaire@nemunai.re>
-
Andrei Vagin authored
Currently we use an additional pipe to steal data from a pipe, but we don't check that we steal all data. And the additional pipe can have a smaller size. Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Andrei Vagin authored
CRIU doesn't handle correctly pipes with sizes which are bigger than a default one. Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Pavel Tikhomirov authored
a) As we shmalloced rpath it can not be xfreed. b) As we shmalloc variables in collect_remap_ghost() far away from open_remap_ghost() where we want to free them, there is no guaranty that our shmalloc was last and we can't use shfree_last(). fixes commit 0c675a5e ("files: remove link_remaps when everything has been restored") When create_ghost() fails for some reason that produces a segfault for me. Signed-off-by:
Pavel Tikhomirov <ptikhomirov@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Mike Rapoport authored
Reading and writing large buffers may result in short read/write. In cases we expect the entire buffer to be transferred use {read,write}_data rather than plain read/write syscalls. Reported-by: Mr Jenkins Signed-off-by:
Mike Rapoport <rppt@linux.vnet.ibm.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Mike Rapoport authored
Some tests expect that all the data will be handled in a single invocation of read/write system call. But it possible to have short read/write on a loaded system and this is not an error. Add helper functions that will reliably read/write the entire buffer. Signed-off-by:
Mike Rapoport <rppt@linux.vnet.ibm.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Mike Rapoport authored
If we start backroung memory fetch before restore is completely finished, we may try to write to the memory areas which were not yet remapped to proper place and are not registered with userfaultfd. Add synchronization between restore and the lazy-pages so that lazy-pages will only handle #PFs before all the tasks are restored. Signed-off-by:
Mike Rapoport <rppt@linux.vnet.ibm.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Mike Rapoport authored
The remote page read has nothing to do if the page-server on the source has closed the connection. Just report an error and abort. Signed-off-by:
Mike Rapoport <rppt@linux.vnet.ibm.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Mike Rapoport authored
Currently when we poll a file descriptor, we only process EPOLLIN events and if a connection is closed the receiving side has no means to deal with it. Add a callback for EPOLL{RD}HUP events and the default implementation for these events that removes the file descriptor from epoll and closes it. Signed-off-by:
Mike Rapoport <rppt@linux.vnet.ibm.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Mike Rapoport authored
A bit more readable and will be easy to distinguish from upcoming hevent^Whangup_event. Signed-off-by:
Mike Rapoport <rppt@linux.vnet.ibm.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Mike Rapoport authored
The generic epoll_wait wrapper should not do any assumptions about timeout. It's it up to lazy-pages daemon to make (future) policy decisions. Signed-off-by:
Mike Rapoport <rppt@linux.vnet.ibm.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Mike Rapoport authored
If we receive only part of the IOV from the page-server we recalculate the IOV so it will point to the area we still have to fetch. During the split, the IOV covering the remaining area may remain marked as 'queued' and we'll never retry fetching it. Marking the IOV as not queued will ensure its pages will be requested again. Signed-off-by:
Mike Rapoport <rppt@linux.vnet.ibm.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Mike Rapoport authored
Since commit e609267f681062b4370e528a50f635222e0c2330 ("page-pipe: allow to share pipes between page pipe buffers") the assumption that we will receive the exact amount of pages we've requested with PS_IOV_GET does not always hold. In the case we serve pages data from the images using 'page-server --lazy-page' the IOVs seen by the pagemap may cross page-pipe buffer boundaries and read_page_pipe will clamp the pages in the response to those boundaries. Adjust page_server_read so it will not try to receive more pages than page-server is going to send. Signed-off-by:
Mike Rapoport <rppt@linux.vnet.ibm.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Mike Rapoport authored
Signed-off-by:
Mike Rapoport <rppt@linux.vnet.ibm.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Andrei Vagin authored
Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Andrei Vagin authored
Now criu create a new pipe buffer, if a previous one has another set of flags. In this case, a pipe is not full and we can use it for the next page buffer. We need 88 pipes to pre-dump the zdtm/static/fork test without this patch, and we need only 17 pipes with this patch. Acked-by:
Mike Rapoport <rppt@linux.vnet.ibm.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Andrei Vagin authored
v2: and move it upper, because it is going to be used in ppb_alloc() Acked-by:
Mike Rapoport <rppt@linux.vnet.ibm.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Andrei Vagin authored
vmsplice can't splice more than UIO_MAXIOV, but we can call it a few times from a parasite. v2: s/nr/nr_segs/ Acked-by:
Mike Rapoport <rppt@linux.vnet.ibm.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
- 29 Nov, 2017 3 commits
-
-
Adrian Reber authored
In addition to writing the CRIU version to the log file this adds the current kernel version to the log file: (00.000008) Version: 3.5 (gitid v3.5-511-ga8cc6cf) (00.000303) Running on node01 Linux 3.10.0-513.el7.x86_64 #1 SMP Tue Feb 29 06:78:90 EST 2017 x86_64 v2: - small changes as suggested by Dmitry (thanks) Signed-off-by:
Adrian Reber <areber@redhat.com> Reviewed-by:
Dmitry Safonov <0x7f454c46@gmail.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Andrei Vagin authored
If ipv6 socket has an IPv4-mapped address, it is used to handle ipv4 connection, so we have to use ipv4 iptables rules to block this connection. Reported-by: Mr Jenkins Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Andrei Vagin authored
Currently we use the "map_files/%p-%p" format, but actually it should be "map_files/%lx-%lx". The kernel could handle both formats, but recently Alexey Dobriyan fixed the kernel and it accept only the second format. Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-