- 03 Oct, 2014 2 commits
-
-
Cyrill Gorcunov authored
It's simply a wrapper over cpu_has_feature, so use this it directly instead. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
This is convenient when need to lookup into debug prints and check which mount point were used somewhere else (in particular I will need @mnt_id in tty code so on error I can easily figure out which mountpoint has been used). No func changes. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
- 02 Oct, 2014 6 commits
-
-
Andrey Vagin authored
* check page server * check snapshots * check a few iterations of dump/restore Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Tycho Andersen authored
The symptom of this bug was that users restoring tasks to a nested cgroup where the top level group was created by criu (and not previously configured) e.g. cpuset:/lxc/u1 would get an ENOSPC. criu would try to copy the special properties into /lxc/u1 directly and (silently) fail, and then tried to copy the task into the cg and fail with ENOSPC: ENOSPC Attempted to write(2) an empty cpuset.cpus or cpuset.mems setting to a cpuset that has tasks attached. Fixing the silent failure to a loud failure, it gave EACCES: EACCES Attempted to add, using write(2), a CPU or memory node to a cpuset, when that CPU or memory node was not already in its parent. So, we need to copy the the special props down the entire tree. Additionally, we shouldn't copy props directly from the top, since some intermediate point in the tree could add restrictions. We first walk back up the tree to find the first point where the props are empty, and then copy that parent's props all the way down. Signed-off-by:
Tycho Andersen <tycho.andersen@canonical.com> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
No need to invent new error codes here, simply use ERR_PTR/IS_ERR_OR_NULL and such. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Acked-by:
Andrew Vagin <avagin@parallels.com> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Tycho Andersen authored
We're using NULL as a sentinel here to indicate that we shouldn't restore any cgroup properties. We should make sure that we don't leak this information and instead check the n_properties field, which we should also set correctly. Signed-off-by:
Tycho Andersen <tycho.andersen@canonical.com> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
On pre-dump we collect only two namespaces -- the mnt one for criu and mnt one again for root task. This is not correct. We need all mount namespaces to make the irmap generation work properly and we need all net namespaces to have parasite sockets created. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
- 01 Oct, 2014 11 commits
-
-
Pavel Emelyanov authored
Now we have netns on pstree-item and have the place where to pre-create daemon socket in needed namespace. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Will be needed for parasite sockets. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
To make it possible to get ns_id object together with its ID. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Empty for now, will be filled soon. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
The setns() syscall (called by switch_ns()) can be extremely slow. If we call it two or more times from the same task the kernel will synchonously go on a very slow routine called synchronize_rcu() trying to put a reference on old namespaces. To avoid doing this more than once I propose to create all per-ns sockets in one place with one setns call. In this patch there's on nl diag socket used to collect other sockets is created this way. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Right now we don't support multiple net namespaces, but some day we will. Other than this we have a logic to distinguish cases with no namespaces vs one namespace, so this walking already makes sence. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
And move sockets collection there. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
We have a use-after-free in predump code: 1st the free_pstree() is called in pre_dump_tasks(), then we go to irmap_predump_run() which may call the lookup_irmap() which, in turn, dereferences the root_item to get the root mount ns fd. But the problem is bigger than that. After we've released the tasks (done before freeing pstree on predump) we can no longer access them by PIDs, so keeping the root-item after irmap scan is not a fix. Fix is to get the root fd before releasing the tasks and using one in irmap scanner. Caught recently on iterative inotify_irmap test. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Andrew Vagin <avagin@parallels.com>
-
- 30 Sep, 2014 21 commits
-
-
Andrey Vagin authored
man 2 open: """ mode specifies the permissions to use in case a new file is cre‐ ated. This argument must be supplied when O_CREAT or O_TMPFILE is specified in flags; """ Cc: Konstantin Neumoin <kneumoin@parallels.com> Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
Reported-by:
Konstantin Neumoin <kneumoin@parallels.com> Cc: Konstantin Neumoin <kneumoin@parallels.com> Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
Travis CI is configured by adding a file named .travis.yml, which is a YAML format text file, to the root directory of the GitHub repository.[5] Travis CI automatically detects when a commit has been made and pushed to a GitHub repository that is using Travis CI, and each time this happens, it will try to build the project and run tests. """ https://en.wikipedia.org/wiki/Travis_CI Currently Travis CI builds criu for x86_64 and ARM v2: move travis-ci.sh in scripts v3: fix path to the script in the script Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
The restore times look like Before patch: futex: 370 3.554482 (84.2%) umount: 41 0.234796 (5.6%) read: 4737 0.113987 (2.7%) recvmsg: 43 0.100083 (2.4%) wait4: 10 0.033344 (0.8%) After patch: futex: 187 1.547642 (72.9%) umount: 41 0.234595 (11.0%) recvmsg: 43 0.075738 (3.6%) flock: 42 0.038696 (1.8%) clone: 35 0.037699 (1.8%) Most of the time we wait for other processes to restore, but that's OK (would only affect parallel restore). And we see that read-s really go away (onto 7th position). Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
Dump times (top-5) look like Before patch: writev: 1595 0.048337 (15.1%) openat: 1326 0.041976 (13.1%) close: 1434 0.034661 (10.8%) read: 988 0.028760 (9.0%) wait4: 170 0.028271 (8.8%) After patch: openat: 1326 0.040010 (16.4%) close: 1434 0.030039 (12.3%) read: 988 0.025827 (10.6%) wait4: 170 0.025549 (10.5%) ptrace: 834 0.021624 (8.9%) So write-s go away from top list (turn into 8th position). Funny thing is that all object writes get merged with the magic writes, so the total amount of write()-s (not writev-s) in the strace remain intact :) Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
For reads and writes the names pos and bleft will have strange meaning, so rename them into smth more appropriate. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
We have some images that store raw data together with the pb objects (and one that just stores raw data) and use custom access to this. E.g. pipe-data images splice data into them and sk-queue one lseeks the image for queue packets. For those using buffered mode mixed with raw may lead to troubles. Explicitly mark such images, so that the buffering (next patches) handle such images carefully. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
The pb_(read|write)-s will stop using plan fd soon. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
We want to have buffered images to speed up dump and, slightly, restore. Right now we use plan file descriptors to write and read images to/from. Making them buffered cannot be gracefully done on plain fds, so introduce a new class. This will also help if (when?) we will want to do more complex changes with images, e.g. store them all in one file or send them directly to the network. For now the cr_img just contains one int _fd variable. This patch chages the prototype of open_image() to return struct cr_img *, pb_(read|write)* to accept one and fixes the compilation of the rest of the code :) Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
Ugly, but it's for easier further patching. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
The same -- int-fd will soon go away, so return the explicit int -1 instead of it. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
There will be no int-fd soon, so one more preparation to this fact. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
Since we're going to switch from int-fd-s to class-image soon the fdset name will not fit into the new terminology. This patch is sed -e 's/fdset/imgset/g' -i * sed -e 's/imgset_fd/img_from_set/g' -i * git mv include/fdset.h include/imgset.h Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
This is to simplify the change from int fd to more generic image class data-type. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
The write_img_buf will be used only for images writing, while in this place we just have a raw file descriptor. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
We drop the O_OPT from flags and will drop one more. So instead of a set of bools let's have the flags copy at hands. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Cyrill Gorcunov authored
We've a special helper xrealloc_safe for reallocs. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
We prefer x* helpers because they print error in case of allocation failures. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
While been converting reading of data stream to bfd the @buf member was left untouched leading to incorrect data to be read, fix it setting up proper one, ie @str itself, otherwise dumping of timerfd files are failing. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-