mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-22 09:58:09 +00:00
Fix some codespell warnings
Brought to you by codespell -w (using codespell v2.1.0). Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This commit is contained in:
parent
3f18004778
commit
0194ed392f
@ -90,7 +90,7 @@ The parasitic code is compiled and converted to a header using *compel*, and inc
|
|||||||
|
|
||||||
*#include "parasite.h"*
|
*#include "parasite.h"*
|
||||||
|
|
||||||
Following steps are perfomed to infect the victim process:
|
Following steps are performed to infect the victim process:
|
||||||
|
|
||||||
- stop the task: *int compel_stop_task(int pid);*
|
- stop the task: *int compel_stop_task(int pid);*
|
||||||
- prepare infection handler: *struct parasite_ctl *compel_prepare(int pid);*
|
- prepare infection handler: *struct parasite_ctl *compel_prepare(int pid);*
|
||||||
|
@ -106,7 +106,7 @@ be restored with *mount(src, mountpoint, flags, options)*. When used,
|
|||||||
*dump* is expected to always succeed if a mountpoint is to be
|
*dump* is expected to always succeed if a mountpoint is to be
|
||||||
auto-detected, however *restore* may fail (or do something wrong)
|
auto-detected, however *restore* may fail (or do something wrong)
|
||||||
if the assumption for restore logic is incorrect. This option is
|
if the assumption for restore logic is incorrect. This option is
|
||||||
not compatable with *--external* *dev*.
|
not compatible with *--external* *dev*.
|
||||||
|
|
||||||
*--action-script* 'script'::
|
*--action-script* 'script'::
|
||||||
Add an external action script to be executed at certain stages.
|
Add an external action script to be executed at certain stages.
|
||||||
|
@ -103,7 +103,7 @@ architecture changes should be reviewed by the chief maintainer.
|
|||||||
Also the chief maintainer has the veto power on any change submitted
|
Also the chief maintainer has the veto power on any change submitted
|
||||||
to any branch. Naturally, a change in the criu-dev branch can be reverted
|
to any branch. Naturally, a change in the criu-dev branch can be reverted
|
||||||
after a chief maintainer veto, a change in the master branch must be
|
after a chief maintainer veto, a change in the master branch must be
|
||||||
carefully reviwed by the chief maintainer and vetoed in advance.
|
carefully reviewed by the chief maintainer and vetoed in advance.
|
||||||
|
|
||||||
### How are maintainers added (and removed)?
|
### How are maintainers added (and removed)?
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ static int compel_fpuid(compel_cpuinfo_t *c)
|
|||||||
memset(c->xstate_comp_offsets, 0xff, sizeof(c->xstate_comp_offsets));
|
memset(c->xstate_comp_offsets, 0xff, sizeof(c->xstate_comp_offsets));
|
||||||
memset(c->xstate_comp_sizes, 0xff, sizeof(c->xstate_comp_sizes));
|
memset(c->xstate_comp_sizes, 0xff, sizeof(c->xstate_comp_sizes));
|
||||||
|
|
||||||
/* start at the beginnning of the "extended state" */
|
/* start at the beginning of the "extended state" */
|
||||||
last_good_offset = offsetof(struct xsave_struct, extended_state_area);
|
last_good_offset = offsetof(struct xsave_struct, extended_state_area);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -269,7 +269,7 @@ struct xsave_struct_ia32 {
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/*
|
/*
|
||||||
* The FPU xsave area must be continious and FP_MIN_ALIGN_BYTES
|
* The FPU xsave area must be continuous and FP_MIN_ALIGN_BYTES
|
||||||
* aligned, thus make sure the compiler won't insert any hole here.
|
* aligned, thus make sure the compiler won't insert any hole here.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -360,7 +360,7 @@ int compel_get_task_regs(pid_t pid, user_regs_struct_t *regs, user_fpregs_struct
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* FPU fetched either via fxsave or via xsave,
|
* FPU fetched either via fxsave or via xsave,
|
||||||
* thus decode it accrodingly.
|
* thus decode it accordingly.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
pr_info("Dumping GP/FPU registers for %d\n", pid);
|
pr_info("Dumping GP/FPU registers for %d\n", pid);
|
||||||
|
@ -108,7 +108,7 @@ struct infect_ctx {
|
|||||||
unsigned long syscall_ip; /* entry point of infection */
|
unsigned long syscall_ip; /* entry point of infection */
|
||||||
unsigned long flags; /* fine-tune (e.g. faults) */
|
unsigned long flags; /* fine-tune (e.g. faults) */
|
||||||
|
|
||||||
void (*child_handler)(int, siginfo_t *, void *); /* hander for SIGCHLD deaths */
|
void (*child_handler)(int, siginfo_t *, void *); /* handler for SIGCHLD deaths */
|
||||||
struct sigaction orig_handler;
|
struct sigaction orig_handler;
|
||||||
|
|
||||||
open_proc_fn open_proc;
|
open_proc_fn open_proc;
|
||||||
|
@ -614,7 +614,7 @@ int __handle_elf(void *mem, size_t size)
|
|||||||
#ifdef ELF_S390
|
#ifdef ELF_S390
|
||||||
/*
|
/*
|
||||||
* See also arch/s390/kernel/module.c/apply_rela():
|
* See also arch/s390/kernel/module.c/apply_rela():
|
||||||
* A PLT reads the GOT (global offest table). We can handle it like
|
* A PLT reads the GOT (global offset table). We can handle it like
|
||||||
* R_390_PC32DBL because we have linked statically.
|
* R_390_PC32DBL because we have linked statically.
|
||||||
*/
|
*/
|
||||||
case R_390_PLT32DBL: /* PC relative on a PLT (predure link table) */
|
case R_390_PLT32DBL: /* PC relative on a PLT (predure link table) */
|
||||||
|
@ -456,8 +456,8 @@ static int parasite_run(pid_t pid, int cmd, unsigned long ip, void *stack, user_
|
|||||||
|
|
||||||
ksigfillset(&block);
|
ksigfillset(&block);
|
||||||
/*
|
/*
|
||||||
* FIXME(issues/1429): SIGTRAP can't be blocked, otherwice its hanlder
|
* FIXME(issues/1429): SIGTRAP can't be blocked, otherwise its handler
|
||||||
* will be reseted to the default one.
|
* will be reset to the default one.
|
||||||
*/
|
*/
|
||||||
ksigdelset(&block, SIGTRAP);
|
ksigdelset(&block, SIGTRAP);
|
||||||
if (ptrace(PTRACE_SETSIGMASK, pid, sizeof(k_rtsigset_t), &block)) {
|
if (ptrace(PTRACE_SETSIGMASK, pid, sizeof(k_rtsigset_t), &block)) {
|
||||||
@ -956,7 +956,7 @@ int compel_infect(struct parasite_ctl *ctl, unsigned long nr_threads, unsigned l
|
|||||||
ctl->args_size = args_size;
|
ctl->args_size = args_size;
|
||||||
parasite_size += ctl->args_size;
|
parasite_size += ctl->args_size;
|
||||||
|
|
||||||
/* RESTORE_STACK_SIGFRAME needs a 64 bytes alignement */
|
/* RESTORE_STACK_SIGFRAME needs a 64 bytes alignment */
|
||||||
parasite_size = round_up(parasite_size, 64);
|
parasite_size = round_up(parasite_size, 64);
|
||||||
|
|
||||||
map_exchange_size = parasite_size;
|
map_exchange_size = parasite_size;
|
||||||
@ -1476,7 +1476,7 @@ int compel_run_in_thread(struct parasite_thread_ctl *tctl, unsigned int cmd)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* compel_unmap() is used for unmapping parasite and restorer blobs.
|
* compel_unmap() is used for unmapping parasite and restorer blobs.
|
||||||
* A blob can contain code for unmapping itself, so the porcess is
|
* A blob can contain code for unmapping itself, so the process is
|
||||||
* trapped on the exit from the munmap syscall.
|
* trapped on the exit from the munmap syscall.
|
||||||
*/
|
*/
|
||||||
int compel_unmap(struct parasite_ctl *ctl, unsigned long addr)
|
int compel_unmap(struct parasite_ctl *ctl, unsigned long addr)
|
||||||
|
@ -728,7 +728,7 @@ class coredump_generator:
|
|||||||
|
|
||||||
if page_mem is not None:
|
if page_mem is not None:
|
||||||
# Page from pages.img has higher priority
|
# Page from pages.img has higher priority
|
||||||
# than one from maped file on disk.
|
# than one from mapped file on disk.
|
||||||
page = page_mem
|
page = page_mem
|
||||||
|
|
||||||
if page is None:
|
if page is None:
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
* Thus, the old code that saves and restores AA profiles is still relevant, we
|
* Thus, the old code that saves and restores AA profiles is still relevant, we
|
||||||
* just need to add the new code in this file to walk the namespace and dump
|
* just need to add the new code in this file to walk the namespace and dump
|
||||||
* any blobs in that AA namespace, and then restore these blobs on restore so
|
* any blobs in that AA namespace, and then restore these blobs on restore so
|
||||||
* that the profiles the old code tries to use are actualy present.
|
* that the profiles the old code tries to use are actually present.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static AaNamespace **namespaces = NULL;
|
static AaNamespace **namespaces = NULL;
|
||||||
|
@ -234,7 +234,7 @@ fail_free_gs_cb:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Free Guareded Storage control blocks
|
* Free Guarded Storage control blocks
|
||||||
*/
|
*/
|
||||||
static void free_gs_cb(UserS390GsCbEntry *gs_cb)
|
static void free_gs_cb(UserS390GsCbEntry *gs_cb)
|
||||||
{
|
{
|
||||||
|
@ -1073,7 +1073,7 @@ int check_options(void)
|
|||||||
if (opts.link_remap_ok)
|
if (opts.link_remap_ok)
|
||||||
pr_info("Will allow link remaps on FS\n");
|
pr_info("Will allow link remaps on FS\n");
|
||||||
if (opts.weak_sysctls)
|
if (opts.weak_sysctls)
|
||||||
pr_info("Will skip non-existant sysctls on restore\n");
|
pr_info("Will skip non-existent sysctls on restore\n");
|
||||||
|
|
||||||
if (opts.deprecated_ok)
|
if (opts.deprecated_ok)
|
||||||
pr_info("Turn deprecated stuff ON\n");
|
pr_info("Turn deprecated stuff ON\n");
|
||||||
|
@ -1026,7 +1026,7 @@ static int dump_task_threads(struct parasite_ctl *parasite_ctl, const struct pst
|
|||||||
* What this routine does is just reads pid-s of dead
|
* What this routine does is just reads pid-s of dead
|
||||||
* tasks in item's children list from item's ns proc.
|
* tasks in item's children list from item's ns proc.
|
||||||
*
|
*
|
||||||
* It does *not* find wihch real pid corresponds to
|
* It does *not* find which real pid corresponds to
|
||||||
* which virtual one, but it's not required -- all we
|
* which virtual one, but it's not required -- all we
|
||||||
* need to dump for zombie can be found in the same
|
* need to dump for zombie can be found in the same
|
||||||
* ns proc.
|
* ns proc.
|
||||||
@ -1472,7 +1472,7 @@ static void alarm_handler(int signo)
|
|||||||
pr_err("Timeout reached. Try to interrupt: %d\n", alarm_attempts);
|
pr_err("Timeout reached. Try to interrupt: %d\n", alarm_attempts);
|
||||||
if (alarm_attempts++ < 5) {
|
if (alarm_attempts++ < 5) {
|
||||||
alarm(1);
|
alarm(1);
|
||||||
/* A curren syscall will be exited with EINTR */
|
/* A current syscall will be exited with EINTR */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
pr_err("FATAL: Unable to interrupt the current operation\n");
|
pr_err("FATAL: Unable to interrupt the current operation\n");
|
||||||
|
@ -2061,7 +2061,7 @@ static int finalize_restore_detach(void)
|
|||||||
for (i = 0; i < item->nr_threads; i++) {
|
for (i = 0; i < item->nr_threads; i++) {
|
||||||
pid = item->threads[i].real;
|
pid = item->threads[i].real;
|
||||||
if (pid < 0) {
|
if (pid < 0) {
|
||||||
pr_err("pstree item has unvalid pid %d\n", pid);
|
pr_err("pstree item has invalid pid %d\n", pid);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,7 +308,7 @@ static int dump_one_eventpoll(int lfd, u32 id, const struct fd_parms *p)
|
|||||||
* files is tricky: we need to use kcmp
|
* files is tricky: we need to use kcmp
|
||||||
* to find out where file came from. Until
|
* to find out where file came from. Until
|
||||||
* it's implemented lets use simpler approach
|
* it's implemented lets use simpler approach
|
||||||
* just check the targets are blonging to the
|
* just check the targets are belonging to the
|
||||||
* pid's file set.
|
* pid's file set.
|
||||||
*/
|
*/
|
||||||
if (p->dfds) {
|
if (p->dfds) {
|
||||||
|
@ -2008,7 +2008,7 @@ static int rfi_remap(struct reg_file_info *rfi, int *level)
|
|||||||
BUG_ON(tmi->s_dev != rmi->s_dev);
|
BUG_ON(tmi->s_dev != rmi->s_dev);
|
||||||
BUG_ON(tmi->s_dev != mi->s_dev);
|
BUG_ON(tmi->s_dev != mi->s_dev);
|
||||||
|
|
||||||
/* Calcalate paths on the device (root mount) */
|
/* Calculate paths on the device (root mount) */
|
||||||
convert_path_from_another_mp(rfi->path, path, sizeof(_path), mi, tmi);
|
convert_path_from_another_mp(rfi->path, path, sizeof(_path), mi, tmi);
|
||||||
convert_path_from_another_mp(rfi->remap->rpath, rpath, sizeof(_rpath), rmi, tmi);
|
convert_path_from_another_mp(rfi->remap->rpath, rpath, sizeof(_rpath), rmi, tmi);
|
||||||
|
|
||||||
|
@ -514,7 +514,7 @@ static char *get_mark_path(const char *who, struct file_remap *remap, FhEntry *f
|
|||||||
/*
|
/*
|
||||||
* fanotify/inotify open syscalls want path to attach
|
* fanotify/inotify open syscalls want path to attach
|
||||||
* watch to. But the only thing we have is an FD obtained
|
* watch to. But the only thing we have is an FD obtained
|
||||||
* via fhandle. Fortunatelly, when trying to attach the
|
* via fhandle. Fortunately, when trying to attach the
|
||||||
* /proc/pid/fd/ link, we will watch the inode the link
|
* /proc/pid/fd/ link, we will watch the inode the link
|
||||||
* points to, i.e. -- just what we want.
|
* points to, i.e. -- just what we want.
|
||||||
*/
|
*/
|
||||||
|
@ -71,7 +71,7 @@ struct sharing_group {
|
|||||||
struct list_head mnt_list;
|
struct list_head mnt_list;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* List of dependant shared groups:
|
* List of dependent shared groups:
|
||||||
* - all siblings have equal master_id
|
* - all siblings have equal master_id
|
||||||
* - the parent has shared_id equal to children's master_id
|
* - the parent has shared_id equal to children's master_id
|
||||||
*
|
*
|
||||||
@ -79,7 +79,7 @@ struct sharing_group {
|
|||||||
* parent sharing_group in list or only siblings.
|
* parent sharing_group in list or only siblings.
|
||||||
* So for traversal if parent pointer is set we can do:
|
* So for traversal if parent pointer is set we can do:
|
||||||
* list_for_each_entry(t, &sg->parent->children, siblings)
|
* list_for_each_entry(t, &sg->parent->children, siblings)
|
||||||
* and overvise we can do:
|
* and otherwise we can do:
|
||||||
* list_for_each_entry(t, &sg->siblings, siblings)
|
* list_for_each_entry(t, &sg->siblings, siblings)
|
||||||
*/
|
*/
|
||||||
struct list_head children;
|
struct list_head children;
|
||||||
|
@ -15,7 +15,7 @@ struct ns_id;
|
|||||||
/*
|
/*
|
||||||
* Here are a set of flags which we know how to handle for the one mount call.
|
* Here are a set of flags which we know how to handle for the one mount call.
|
||||||
* All of them except MS_RDONLY are set only as mnt flags.
|
* All of them except MS_RDONLY are set only as mnt flags.
|
||||||
* MS_RDONLY is set for both mnt ans sb flags, so we can restore it for one
|
* MS_RDONLY is set for both mnt and sb flags, so we can restore it for one
|
||||||
* mount call only if it set for both masks.
|
* mount call only if it set for both masks.
|
||||||
*/
|
*/
|
||||||
#define MS_MNT_KNOWN_FLAGS (MS_NOSUID | MS_NOEXEC | MS_NODEV | MS_NOATIME | MS_NODIRATIME | MS_RELATIME | MS_RDONLY)
|
#define MS_MNT_KNOWN_FLAGS (MS_NOSUID | MS_NOEXEC | MS_NODEV | MS_NOATIME | MS_NODIRATIME | MS_RELATIME | MS_RDONLY)
|
||||||
|
@ -756,14 +756,14 @@ static int kerndat_detect_stack_guard_gap(void)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* When reading /proc/$pid/[s]maps the
|
* When reading /proc/$pid/[s]maps the
|
||||||
* start/end addresses might be cutted off
|
* start/end addresses might be cut off
|
||||||
* with PAGE_SIZE on kernels prior 4.12
|
* with PAGE_SIZE on kernels prior 4.12
|
||||||
* (see kernel commit 1be7107fbe18ee).
|
* (see kernel commit 1be7107fbe18ee).
|
||||||
*
|
*
|
||||||
* Same time there was semi-complete
|
* Same time there was semi-complete
|
||||||
* patch released which hitted a number
|
* patch released which hitted a number
|
||||||
* of repos (Ubuntu, Fedora) where instead
|
* of repos (Ubuntu, Fedora) where instead
|
||||||
* of PAGE_SIZE the 1M gap is cutted off.
|
* of PAGE_SIZE the 1M gap is cut off.
|
||||||
*/
|
*/
|
||||||
if (start == (unsigned long)mem) {
|
if (start == (unsigned long)mem) {
|
||||||
kdat.stack_guard_gap_hidden = false;
|
kdat.stack_guard_gap_hidden = false;
|
||||||
@ -1111,7 +1111,7 @@ static int kerndat_uffd(void)
|
|||||||
if (err == ENOSYS)
|
if (err == ENOSYS)
|
||||||
return 0;
|
return 0;
|
||||||
if (err == EPERM) {
|
if (err == EPERM) {
|
||||||
pr_info("Lazy pages are not permited\n");
|
pr_info("Lazy pages are not permitted\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
pr_err("Lazy pages are not available\n");
|
pr_err("Lazy pages are not available\n");
|
||||||
|
@ -45,7 +45,7 @@ static int nlmsg_receive(char *buf, int len, int (*cb)(struct nlmsghdr *, struct
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default errror handler: just point our an error
|
* Default error handler: just point our an error
|
||||||
* and pass up to caller.
|
* and pass up to caller.
|
||||||
*/
|
*/
|
||||||
static int rtnl_return_err(int err, struct ns_id *ns, void *arg)
|
static int rtnl_return_err(int err, struct ns_id *ns, void *arg)
|
||||||
|
@ -108,7 +108,7 @@ int resolve_shared_mounts_v2(void)
|
|||||||
/*
|
/*
|
||||||
* Collect sharing groups tree. Mount propagation between sharing
|
* Collect sharing groups tree. Mount propagation between sharing
|
||||||
* groups only goes down this tree, meaning that only mounts of same or
|
* groups only goes down this tree, meaning that only mounts of same or
|
||||||
* descendant sharing groups recieve mount propagation.
|
* descendant sharing groups receive mount propagation.
|
||||||
*/
|
*/
|
||||||
list_for_each_entry(sg, &sharing_groups, list) {
|
list_for_each_entry(sg, &sharing_groups, list) {
|
||||||
if (sg->master_id) {
|
if (sg->master_id) {
|
||||||
@ -270,7 +270,7 @@ static int do_new_mount_v2(struct mount_info *mi)
|
|||||||
* Mount-v2 relies that before mount tree is constructed all mounts
|
* Mount-v2 relies that before mount tree is constructed all mounts
|
||||||
* should remain private. Newly created mounts can become non-private
|
* should remain private. Newly created mounts can become non-private
|
||||||
* initially depending on parent/source sharing, let's be as explicit
|
* initially depending on parent/source sharing, let's be as explicit
|
||||||
* as posible here and make it obvious that mount becomes private.
|
* as possible here and make it obvious that mount becomes private.
|
||||||
*/
|
*/
|
||||||
if (mount(NULL, mi->plain_mountpoint, NULL, MS_PRIVATE, NULL)) {
|
if (mount(NULL, mi->plain_mountpoint, NULL, MS_PRIVATE, NULL)) {
|
||||||
pr_perror("Can't remount %s with MS_PRIVATE", mi->plain_mountpoint);
|
pr_perror("Can't remount %s with MS_PRIVATE", mi->plain_mountpoint);
|
||||||
@ -407,7 +407,7 @@ do_bind:
|
|||||||
* Mount-v2 relies that before mount tree is constructed all mounts
|
* Mount-v2 relies that before mount tree is constructed all mounts
|
||||||
* should remain private. Newly created mounts can become non-private
|
* should remain private. Newly created mounts can become non-private
|
||||||
* initially depending on parent/source sharing, let's be as explicit
|
* initially depending on parent/source sharing, let's be as explicit
|
||||||
* as posible here and make it obvious that mount becomes private.
|
* as possible here and make it obvious that mount becomes private.
|
||||||
*/
|
*/
|
||||||
if (mount(NULL, mi->plain_mountpoint, NULL, MS_PRIVATE, NULL)) {
|
if (mount(NULL, mi->plain_mountpoint, NULL, MS_PRIVATE, NULL)) {
|
||||||
pr_perror("Can't remount %s with MS_PRIVATE", mi->plain_mountpoint);
|
pr_perror("Can't remount %s with MS_PRIVATE", mi->plain_mountpoint);
|
||||||
@ -470,7 +470,7 @@ static int do_mount_root_v2(struct mount_info *mi)
|
|||||||
* Mount-v2 relies that before mount tree is constructed all mounts
|
* Mount-v2 relies that before mount tree is constructed all mounts
|
||||||
* should remain private. Newly created mounts can become non-private
|
* should remain private. Newly created mounts can become non-private
|
||||||
* initially depending on parent/source sharing, let's be as explicit
|
* initially depending on parent/source sharing, let's be as explicit
|
||||||
* as posible here and make it obvious that mount becomes private.
|
* as possible here and make it obvious that mount becomes private.
|
||||||
*/
|
*/
|
||||||
if (mount(NULL, mi->plain_mountpoint, NULL, MS_PRIVATE, NULL)) {
|
if (mount(NULL, mi->plain_mountpoint, NULL, MS_PRIVATE, NULL)) {
|
||||||
pr_perror("Can't remount %s with MS_PRIVATE", mi->plain_mountpoint);
|
pr_perror("Can't remount %s with MS_PRIVATE", mi->plain_mountpoint);
|
||||||
@ -617,7 +617,7 @@ static int detect_is_dir(struct mount_info *mi)
|
|||||||
|
|
||||||
rel_path = get_relative_path(mi->ns_mountpoint, mi->parent->ns_mountpoint);
|
rel_path = get_relative_path(mi->ns_mountpoint, mi->parent->ns_mountpoint);
|
||||||
if (!rel_path) {
|
if (!rel_path) {
|
||||||
pr_err("Child-parent mountpoint missmatch %d:%s %d:%s\n", mi->mnt_id, mi->ns_mountpoint,
|
pr_err("Child-parent mountpoint mismatch %d:%s %d:%s\n", mi->mnt_id, mi->ns_mountpoint,
|
||||||
mi->parent->mnt_id, mi->parent->ns_mountpoint);
|
mi->parent->mnt_id, mi->parent->ns_mountpoint);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -952,7 +952,7 @@ static int restore_one_sharing_group(struct sharing_group *sg)
|
|||||||
/*
|
/*
|
||||||
* External slavery. We rely on the user to give us the
|
* External slavery. We rely on the user to give us the
|
||||||
* right source for external mount with all proper
|
* right source for external mount with all proper
|
||||||
* sharing optioins setup (it should be either shared
|
* sharing options setup (it should be either shared
|
||||||
* or non-shared slave). If source is a private mount
|
* or non-shared slave). If source is a private mount
|
||||||
* we would fail.
|
* we would fail.
|
||||||
*/
|
*/
|
||||||
@ -1020,7 +1020,7 @@ static int restore_mount_sharing_options(void)
|
|||||||
if (sg->parent)
|
if (sg->parent)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Handle dependant sharing groups in tree order */
|
/* Handle dependent sharing groups in tree order */
|
||||||
for (t = sg; t != NULL; t = sharing_group_next(t)) {
|
for (t = sg; t != NULL; t = sharing_group_next(t)) {
|
||||||
if (restore_one_sharing_group(t))
|
if (restore_one_sharing_group(t))
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -891,7 +891,7 @@ int collect_user_ns(struct ns_id *ns, void *oarg)
|
|||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* User namespace is dumped before files to get uid and gid
|
* User namespace is dumped before files to get uid and gid
|
||||||
* mappings, which are used for convirting local id-s to
|
* mappings, which are used for converting local id-s to
|
||||||
* userns id-s (userns_uid(), userns_gid())
|
* userns id-s (userns_uid(), userns_gid())
|
||||||
*/
|
*/
|
||||||
if (dump_user_ns(root_item->pid->real, root_item->ids->user_ns_id))
|
if (dump_user_ns(root_item->pid->real, root_item->ids->user_ns_id))
|
||||||
|
@ -2340,7 +2340,7 @@ static int prepare_xtable_lock(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mount(NULL, "/", NULL, MS_SLAVE | MS_REC, NULL)) {
|
if (mount(NULL, "/", NULL, MS_SLAVE | MS_REC, NULL)) {
|
||||||
pr_perror("Unable to conver mounts to slave mounts");
|
pr_perror("Unable to convert mounts to slave mounts");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
@ -606,7 +606,7 @@ static inline u32 ppb_xfer_flags(struct page_xfer *xfer, struct page_pipe_buf *p
|
|||||||
*
|
*
|
||||||
* Since, iov-C is not processed completely, we need to find
|
* Since, iov-C is not processed completely, we need to find
|
||||||
* "partial_read_byte" count to place out dummy-iov for
|
* "partial_read_byte" count to place out dummy-iov for
|
||||||
* remainig processing of iov-C. This function is performed by
|
* remaining processing of iov-C. This function is performed by
|
||||||
* analyze_iov function.
|
* analyze_iov function.
|
||||||
*
|
*
|
||||||
* dummy-iov will be(2): {C+3,1}. dummy-iov will be placed
|
* dummy-iov will be(2): {C+3,1}. dummy-iov will be placed
|
||||||
|
@ -49,7 +49,7 @@ char *mnt_get_sibling_path(struct mount_info *m, struct mount_info *p, char *buf
|
|||||||
|
|
||||||
rpath = get_relative_path(m->ns_mountpoint, pa->ns_mountpoint);
|
rpath = get_relative_path(m->ns_mountpoint, pa->ns_mountpoint);
|
||||||
if (!rpath) {
|
if (!rpath) {
|
||||||
pr_warn("child - parent mountpoint missmatch %s - %s\n", m->ns_mountpoint, pa->ns_mountpoint);
|
pr_warn("child - parent mountpoint mismatch %s - %s\n", m->ns_mountpoint, pa->ns_mountpoint);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -454,7 +454,7 @@ static int get_proc_fd(void)
|
|||||||
ret = sys_mount("proc", proc_mountpoint, "proc", MS_MGC_VAL, NULL);
|
ret = sys_mount("proc", proc_mountpoint, "proc", MS_MGC_VAL, NULL);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
if (ret == -EPERM)
|
if (ret == -EPERM)
|
||||||
pr_err("can't dump unpriviliged task whose /proc doesn't belong to it\n");
|
pr_err("can't dump unprivileged task whose /proc doesn't belong to it\n");
|
||||||
else
|
else
|
||||||
pr_err("mount failed (%d)\n", ret);
|
pr_err("mount failed (%d)\n", ret);
|
||||||
sys_rmdir(proc_mountpoint);
|
sys_rmdir(proc_mountpoint);
|
||||||
|
@ -720,7 +720,7 @@ static unsigned long restore_mapping(VmaEntry *vma_entry)
|
|||||||
/*
|
/*
|
||||||
* This restores aio ring header, content, head and in-kernel position
|
* This restores aio ring header, content, head and in-kernel position
|
||||||
* of tail. To set tail, we write to /dev/null and use the fact this
|
* of tail. To set tail, we write to /dev/null and use the fact this
|
||||||
* operation is synchronious for the device. Also, we unmap temporary
|
* operation is synchronous for the device. Also, we unmap temporary
|
||||||
* anonymous area, used to store content of ring buffer during restore
|
* anonymous area, used to store content of ring buffer during restore
|
||||||
* and mapped in premap_private_vma().
|
* and mapped in premap_private_vma().
|
||||||
*/
|
*/
|
||||||
@ -1329,7 +1329,7 @@ static int cleanup_inotify_events(int inotify_fd)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* When we restore inotifies we can open and close files we create a watch
|
* When we restore inotifies we can open and close files we create a watch
|
||||||
* for. So wee need to cleanup these auxiliary events which we've generated.
|
* for. So we need to cleanup these auxiliary events which we've generated.
|
||||||
*
|
*
|
||||||
* note: For now we don't have a way to c/r events in queue but we need to
|
* note: For now we don't have a way to c/r events in queue but we need to
|
||||||
* at least leave the queue clean from events generated by our own.
|
* at least leave the queue clean from events generated by our own.
|
||||||
@ -1422,7 +1422,7 @@ long __export_restore_task(struct task_restore_args *args)
|
|||||||
* mapping them with arch_prctl().
|
* mapping them with arch_prctl().
|
||||||
* Always preserve/map rt-vdso pair if it's possible, regardless
|
* Always preserve/map rt-vdso pair if it's possible, regardless
|
||||||
* it's presence in original task: vdso will be used for fast
|
* it's presence in original task: vdso will be used for fast
|
||||||
* getttimeofday() in restorer's log timings.
|
* gettimeofday() in restorer's log timings.
|
||||||
*/
|
*/
|
||||||
if (!args->can_map_vdso && vdso_is_present(&args->vdso_maps_rt)) {
|
if (!args->can_map_vdso && vdso_is_present(&args->vdso_maps_rt)) {
|
||||||
/* It's already checked in kdat, but let's check again */
|
/* It's already checked in kdat, but let's check again */
|
||||||
|
@ -867,7 +867,7 @@ static int prepare_pstree_kobj_ids(void)
|
|||||||
if (!item->ids) {
|
if (!item->ids) {
|
||||||
if (item == root_item) {
|
if (item == root_item) {
|
||||||
pr_err("No IDS for root task.\n");
|
pr_err("No IDS for root task.\n");
|
||||||
pr_err("Images currupted or too old criu was used for dump.\n");
|
pr_err("Images corrupted or too old criu was used for dump.\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#include "cr_options.h"
|
#include "cr_options.h"
|
||||||
#include "xmalloc.h"
|
#include "xmalloc.h"
|
||||||
|
|
||||||
/* Compatability with GnuTLS version < 3.5 */
|
/* Compatibility with GnuTLS version < 3.5 */
|
||||||
#ifndef GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR
|
#ifndef GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR
|
||||||
#define GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR GNUTLS_E_CERTIFICATE_ERROR
|
#define GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR GNUTLS_E_CERTIFICATE_ERROR
|
||||||
#endif
|
#endif
|
||||||
|
@ -560,7 +560,7 @@ static int do_open_tty_reg(int ns_root_fd, struct reg_file_info *rfi, void *arg)
|
|||||||
* them. So simply setup mode from image
|
* them. So simply setup mode from image
|
||||||
* the regular file engine will check
|
* the regular file engine will check
|
||||||
* for this, so if we fail here it
|
* for this, so if we fail here it
|
||||||
* gonna be catched anyway.
|
* gonna be caught anyway.
|
||||||
*/
|
*/
|
||||||
if (rfi->rfe->has_mode)
|
if (rfi->rfe->has_mode)
|
||||||
fchmod(fd, rfi->rfe->mode);
|
fchmod(fd, rfi->rfe->mode);
|
||||||
|
@ -272,7 +272,7 @@ static struct tun_link *get_tun_link_fd(char *name, unsigned ns_id, unsigned fla
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (!(flags & IFF_PERSIST)) {
|
if (!(flags & IFF_PERSIST)) {
|
||||||
pr_err("No fd infor for non persistent tun device %s\n", name);
|
pr_err("No fd info for non persistent tun device %s\n", name);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
#define LAZY_PAGES_RESTORE_FINISHED 0x52535446 /* ReSTore Finished */
|
#define LAZY_PAGES_RESTORE_FINISHED 0x52535446 /* ReSTore Finished */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Backround transfer parameters.
|
* Background transfer parameters.
|
||||||
* The default xfer length is arbitrary set to 64Kbytes
|
* The default xfer length is arbitrary set to 64Kbytes
|
||||||
* The limit of 4Mbytes matches the maximal chunk size we can have in
|
* The limit of 4Mbytes matches the maximal chunk size we can have in
|
||||||
* a pipe in the page-server
|
* a pipe in the page-server
|
||||||
|
@ -1823,7 +1823,7 @@ void util_init()
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* This function cuts sub_path from the path.
|
* This function cuts sub_path from the path.
|
||||||
* 1) It asumes all relative paths given are relative to "/":
|
* 1) It assumes all relative paths given are relative to "/":
|
||||||
* /a/b/c is the same as a/b/c
|
* /a/b/c is the same as a/b/c
|
||||||
* 2) It can handle paths with multiple consequent slashes:
|
* 2) It can handle paths with multiple consequent slashes:
|
||||||
* ///a///b///c is the same as /a/b/c
|
* ///a///b///c is the same as /a/b/c
|
||||||
|
@ -5,7 +5,7 @@ syntax = "proto2";
|
|||||||
import "opts.proto";
|
import "opts.proto";
|
||||||
|
|
||||||
message user_ppc64_regs_entry {
|
message user_ppc64_regs_entry {
|
||||||
/* Following is the list of regiters starting at r0. */
|
/* Following is the list of registers starting at r0. */
|
||||||
repeated uint64 gpr = 1;
|
repeated uint64 gpr = 1;
|
||||||
required uint64 nip = 2;
|
required uint64 nip = 2;
|
||||||
required uint64 msr = 3;
|
required uint64 msr = 3;
|
||||||
@ -22,7 +22,7 @@ message user_ppc64_regs_entry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
message user_ppc64_fpstate_entry {
|
message user_ppc64_fpstate_entry {
|
||||||
/* Following is the list of regiters starting at fpr0 */
|
/* Following is the list of registers starting at fpr0 */
|
||||||
repeated uint64 fpregs = 1;
|
repeated uint64 fpregs = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ message user_x86_regs_entry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
message user_x86_xsave_entry {
|
message user_x86_xsave_entry {
|
||||||
/* standart xsave features */
|
/* standard xsave features */
|
||||||
required uint64 xstate_bv = 1;
|
required uint64 xstate_bv = 1;
|
||||||
|
|
||||||
/* AVX components: 16x 256-bit ymm registers, hi 128 bits */
|
/* AVX components: 16x 256-bit ymm registers, hi 128 bits */
|
||||||
|
@ -5,7 +5,7 @@ syntax = "proto2";
|
|||||||
import "google/protobuf/descriptor.proto";
|
import "google/protobuf/descriptor.proto";
|
||||||
|
|
||||||
message CRIU_Opts {
|
message CRIU_Opts {
|
||||||
optional bool hex = 1; // Idicate that CRIT should treat this field as hex.
|
optional bool hex = 1; // Indicate that CRIT should treat this field as hex.
|
||||||
optional bool ipadd = 2; // The field is IPv4/v6 address
|
optional bool ipadd = 2; // The field is IPv4/v6 address
|
||||||
optional string flags = 3;
|
optional string flags = 3;
|
||||||
optional bool dev = 4; // Device major:minor packed
|
optional bool dev = 4; // Device major:minor packed
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
*
|
*
|
||||||
* The lower case r0-r31 should be used in preference to the upper
|
* The lower case r0-r31 should be used in preference to the upper
|
||||||
* case R0-R31 as they provide more error checking in the assembler.
|
* case R0-R31 as they provide more error checking in the assembler.
|
||||||
* Use R0-31 only when really nessesary.
|
* Use R0-31 only when really necessary.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include "common/asm/atomic.h"
|
#include "common/asm/atomic.h"
|
||||||
#include "common/compiler.h"
|
#include "common/compiler.h"
|
||||||
|
|
||||||
/* scan-build complains about derefencing a NULL pointer here. */
|
/* scan-build complains about dereferencing a NULL pointer here. */
|
||||||
#ifndef __clang_analyzer__
|
#ifndef __clang_analyzer__
|
||||||
#define LOCK_BUG_ON(condition) \
|
#define LOCK_BUG_ON(condition) \
|
||||||
if ((condition)) \
|
if ((condition)) \
|
||||||
|
@ -96,7 +96,7 @@ int __recv_fds(int sock, int *fds, int nr_fds, void *data, unsigned ch_size, int
|
|||||||
min_fd = (cmsg->cmsg_len - sizeof(struct cmsghdr)) / sizeof(int);
|
min_fd = (cmsg->cmsg_len - sizeof(struct cmsghdr)) / sizeof(int);
|
||||||
/*
|
/*
|
||||||
* In case if kernel screwed the recipient, most probably
|
* In case if kernel screwed the recipient, most probably
|
||||||
* the caller stack frame will be overwriten, just scream
|
* the caller stack frame will be overwritten, just scream
|
||||||
* and exit.
|
* and exit.
|
||||||
*
|
*
|
||||||
* FIXME Need to sanitize util.h to be able to include it
|
* FIXME Need to sanitize util.h to be able to include it
|
||||||
|
@ -187,7 +187,7 @@ int criu_dump_iters(int (*more)(criu_predump_info pi));
|
|||||||
* As this library is just forwarding all tasks to an
|
* As this library is just forwarding all tasks to an
|
||||||
* independent (of this library) CRIU binary, the actual
|
* independent (of this library) CRIU binary, the actual
|
||||||
* version of the CRIU binary can be different then the
|
* version of the CRIU binary can be different then the
|
||||||
* hardcoded values in the libary (version.h).
|
* hardcoded values in the library (version.h).
|
||||||
* To be able to easily check the version of the CRIU binary
|
* To be able to easily check the version of the CRIU binary
|
||||||
* the function criu_get_version() returns the version
|
* the function criu_get_version() returns the version
|
||||||
* in the following format:
|
* in the following format:
|
||||||
|
@ -87,7 +87,7 @@ class entry_handler:
|
|||||||
def load(self, f, pretty=False, no_payload=False):
|
def load(self, f, pretty=False, no_payload=False):
|
||||||
"""
|
"""
|
||||||
Convert criu image entries from binary format to dict(json).
|
Convert criu image entries from binary format to dict(json).
|
||||||
Takes a file-like object and returnes a list with entries in
|
Takes a file-like object and returns a list with entries in
|
||||||
dict(json) format.
|
dict(json) format.
|
||||||
"""
|
"""
|
||||||
entries = []
|
entries = []
|
||||||
|
@ -23,7 +23,7 @@ if "encodebytes" not in dir(base64):
|
|||||||
# here are some of them:
|
# here are some of them:
|
||||||
# - both have a common bug in treating optional field with empty
|
# - both have a common bug in treating optional field with empty
|
||||||
# repeated inside.
|
# repeated inside.
|
||||||
# - protobuf-to-json is not avalible in pip or in any other python
|
# - protobuf-to-json is not available in pip or in any other python
|
||||||
# repo, so it is hard to distribute and we can't rely on it.
|
# repo, so it is hard to distribute and we can't rely on it.
|
||||||
# - both do not treat enums in a way we would like to. They convert
|
# - both do not treat enums in a way we would like to. They convert
|
||||||
# protobuf enum to int, but we need a string here, because it is
|
# protobuf enum to int, but we need a string here, because it is
|
||||||
|
@ -266,7 +266,7 @@ Mesa | Open source OpenGL implementation
|
|||||||
GTT | Graphis Translation Table, also used to denote kernel-managed system memory for GPU access
|
GTT | Graphis Translation Table, also used to denote kernel-managed system memory for GPU access
|
||||||
VRAM | Video RAM
|
VRAM | Video RAM
|
||||||
BO | Buffer Object
|
BO | Buffer Object
|
||||||
HMM | Heterogenous Memory Management
|
HMM | Heterogeneous Memory Management
|
||||||
AQL | Architected Queueing Language
|
AQL | Architected Queueing Language
|
||||||
EOP | End of pipe (event indicating shader dispatch completion)
|
EOP | End of pipe (event indicating shader dispatch completion)
|
||||||
MQD | Memory Queue Descriptors
|
MQD | Memory Queue Descriptors
|
||||||
|
@ -64,7 +64,7 @@ bool kfd_capability_check = true;
|
|||||||
/*
|
/*
|
||||||
* During dump, we can use any fd value so fd_next is always -1.
|
* During dump, we can use any fd value so fd_next is always -1.
|
||||||
* During restore, we have to use a fd value that does not conflict with fd values in use by the target restore process.
|
* During restore, we have to use a fd value that does not conflict with fd values in use by the target restore process.
|
||||||
* fd_next is initialized as 1 greather than the highest-numbered file descriptor used by the target restore process.
|
* fd_next is initialized as 1 greater than the highest-numbered file descriptor used by the target restore process.
|
||||||
*/
|
*/
|
||||||
int fd_next = -1;
|
int fd_next = -1;
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ if [ "$UNAME_M" != "x86_64" ]; then
|
|||||||
|
|
||||||
# But with the introduction of baremetal aarch64 systems in
|
# But with the introduction of baremetal aarch64 systems in
|
||||||
# Travis (arch: arm64-graviton2) we can override this using
|
# Travis (arch: arm64-graviton2) we can override this using
|
||||||
# an evironment variable
|
# an environment variable
|
||||||
[ -n "$RUN_TESTS" ] || SKIP_CI_TEST=1
|
[ -n "$RUN_TESTS" ] || SKIP_CI_TEST=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ define include-once
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
# Helper to build built-in target in directory.
|
# Helper to build built-in target in directory.
|
||||||
# $(eval $(call gen-built-in,<dir>,<prerequsite>,<phony>))
|
# $(eval $(call gen-built-in,<dir>,<prerequisite>,<phony>))
|
||||||
define gen-built-in
|
define gen-built-in
|
||||||
$(1)/%: $(2)
|
$(1)/%: $(2)
|
||||||
$$(Q) $$(MAKE) $$(build)=$(1) $$@
|
$$(Q) $$(MAKE) $$(build)=$(1) $$@
|
||||||
|
@ -59,7 +59,7 @@ define newline
|
|||||||
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# map funciton:
|
# map function:
|
||||||
# $1 - func to call
|
# $1 - func to call
|
||||||
# $2 - list over which map the $1 func
|
# $2 - list over which map the $1 func
|
||||||
# result is divided with newlines
|
# result is divided with newlines
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
# This script can be used as a workaround for systemd autofs mount migration.
|
# This script can be used as a workaround for systemd autofs mount migration.
|
||||||
# The problem is that systemd is a clever guy: before mounting of actual file
|
# The problem is that systemd is a clever guy: before mounting of actual file
|
||||||
# system on top of autofs mount, it first checks that device number of autofs
|
# system on top of autofs mount, it first checks that device number of autofs
|
||||||
# mount is equal to the one, stored in sytemd internals. If they do not match,
|
# mount is equal to the one, stored in systemd internals. If they do not match,
|
||||||
# systemd ignores kernel request.
|
# systemd ignores kernel request.
|
||||||
# The problem happens each time autofs is restored (new device number for
|
# The problem happens each time autofs is restored (new device number for
|
||||||
# autofs superblock) and can't be properly solved without some kind of "device
|
# autofs superblock) and can't be properly solved without some kind of "device
|
||||||
# namespaces", where device number can be preseved.
|
# namespaces", where device number can be preserved.
|
||||||
# But some of systemd services can be painlessly restarted. Like
|
# But some of systemd services can be painlessly restarted. Like
|
||||||
# proc-sys-fs-binfmt_misc.
|
# proc-sys-fs-binfmt_misc.
|
||||||
#
|
#
|
||||||
|
@ -216,7 +216,7 @@ static int refresh_sk(struct libsoccr_sk *sk, struct libsoccr_sk_data *data, str
|
|||||||
data->unsq_len = size;
|
data->unsq_len = size;
|
||||||
|
|
||||||
if (data->state == TCP_CLOSE) {
|
if (data->state == TCP_CLOSE) {
|
||||||
/* A connection could be reseted. In thise case a sent queue
|
/* A connection could be reset. In thise case a sent queue
|
||||||
* may contain some data. A user can't read this data, so let's
|
* may contain some data. A user can't read this data, so let's
|
||||||
* ignore them. Otherwise we will need to add a logic whether
|
* ignore them. Otherwise we will need to add a logic whether
|
||||||
* the send queue contains a fin packet or not and decide whether
|
* the send queue contains a fin packet or not and decide whether
|
||||||
@ -227,7 +227,7 @@ static int refresh_sk(struct libsoccr_sk *sk, struct libsoccr_sk_data *data, str
|
|||||||
data->outq_len = 0;
|
data->outq_len = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Don't account the fin packet. It doesn't countain real data. */
|
/* Don't account the fin packet. It doesn't contain real data. */
|
||||||
if ((1 << data->state) & (SNDQ_FIRST_FIN | SNDQ_SECOND_FIN)) {
|
if ((1 << data->state) & (SNDQ_FIRST_FIN | SNDQ_SECOND_FIN)) {
|
||||||
if (data->outq_len)
|
if (data->outq_len)
|
||||||
data->outq_len--;
|
data->outq_len--;
|
||||||
@ -441,7 +441,7 @@ union libsoccr_addr *libsoccr_get_addr(struct libsoccr_sk *sk, int self, unsigne
|
|||||||
if (flags & ~GET_SA_FLAGS)
|
if (flags & ~GET_SA_FLAGS)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* FIXME -- implemeted in CRIU, makes sence to have it here too */
|
/* FIXME -- implemented in CRIU, makes sence to have it here too */
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -503,7 +503,7 @@ static int libsoccr_set_sk_data_noq(struct libsoccr_sk *sk, struct libsoccr_sk_d
|
|||||||
if (mstate & (RCVQ_FIRST_FIN | RCVQ_SECOND_FIN))
|
if (mstate & (RCVQ_FIRST_FIN | RCVQ_SECOND_FIN))
|
||||||
data->inq_seq--;
|
data->inq_seq--;
|
||||||
|
|
||||||
/* outq_seq is adjusted due to not accointing the fin packet */
|
/* outq_seq is adjusted due to not accounting the fin packet */
|
||||||
if (mstate & (SNDQ_FIRST_FIN | SNDQ_SECOND_FIN))
|
if (mstate & (SNDQ_FIRST_FIN | SNDQ_SECOND_FIN))
|
||||||
data->outq_seq--;
|
data->outq_seq--;
|
||||||
|
|
||||||
|
@ -171,8 +171,8 @@ int libsoccr_save(struct libsoccr_sk *sk, struct libsoccr_sk_data *data, unsigne
|
|||||||
* Get a pointer on the contents of queues. The amount of bytes is
|
* Get a pointer on the contents of queues. The amount of bytes is
|
||||||
* determined from the filled libsoccr_sk_data by queue_id.
|
* determined from the filled libsoccr_sk_data by queue_id.
|
||||||
*
|
*
|
||||||
* For TCP_RECV_QUEUE the lenght is .inq_len
|
* For TCP_RECV_QUEUE the length is .inq_len
|
||||||
* For TCP_SEND_QUEUE the lenght is .outq_len
|
* For TCP_SEND_QUEUE the length is .outq_len
|
||||||
*
|
*
|
||||||
* For any other queues returns NULL.
|
* For any other queues returns NULL.
|
||||||
*
|
*
|
||||||
|
@ -261,7 +261,7 @@ class sock:
|
|||||||
# that hasn't contributed to some new states is
|
# that hasn't contributed to some new states is
|
||||||
# just waste of time, so we close only connected
|
# just waste of time, so we close only connected
|
||||||
# sockets or listeners that has at least one
|
# sockets or listeners that has at least one
|
||||||
# incoming connection pendig or served
|
# incoming connection pending or served
|
||||||
|
|
||||||
if self.listen:
|
if self.listen:
|
||||||
if self.icons:
|
if self.icons:
|
||||||
|
@ -129,7 +129,7 @@ class Sockets {
|
|||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
PrintWriter printWriter = new PrintWriter(writer);
|
PrintWriter printWriter = new PrintWriter(writer);
|
||||||
e.printStackTrace(printWriter);
|
e.printStackTrace(printWriter);
|
||||||
logger.log(Level.SEVERE, "Exception occured:" + e);
|
logger.log(Level.SEVERE, "Exception occurred:" + e);
|
||||||
logger.log(Level.FINE, writer.toString());
|
logger.log(Level.FINE, writer.toString());
|
||||||
}
|
}
|
||||||
if (b != null) {
|
if (b != null) {
|
||||||
|
@ -121,7 +121,7 @@ class SocketsClient {
|
|||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
PrintWriter printWriter = new PrintWriter(writer);
|
PrintWriter printWriter = new PrintWriter(writer);
|
||||||
exception.printStackTrace(printWriter);
|
exception.printStackTrace(printWriter);
|
||||||
logger.log(Level.SEVERE, "Exception occured:" + exception);
|
logger.log(Level.SEVERE, "Exception occurred:" + exception);
|
||||||
logger.log(Level.FINE, writer.toString());
|
logger.log(Level.FINE, writer.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ class SocketsConnect {
|
|||||||
}
|
}
|
||||||
if (socketMappedBuffer.getChar(Helper.MAPPED_INDEX) == Helper.STATE_FAIL) {
|
if (socketMappedBuffer.getChar(Helper.MAPPED_INDEX) == Helper.STATE_FAIL) {
|
||||||
logger.log(Level.SEVERE, "Killing the server process and client process");
|
logger.log(Level.SEVERE, "Killing the server process and client process");
|
||||||
logger.log(Level.SEVERE, "Exception occured in the client or server process: check their log for details");
|
logger.log(Level.SEVERE, "Exception occurred in the client or server process: check their log for details");
|
||||||
serverProcess.destroy();
|
serverProcess.destroy();
|
||||||
clientProcess.destroy();
|
clientProcess.destroy();
|
||||||
b.putChar(Helper.MAPPED_INDEX, Helper.STATE_END);
|
b.putChar(Helper.MAPPED_INDEX, Helper.STATE_END);
|
||||||
@ -145,7 +145,7 @@ class SocketsConnect {
|
|||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
PrintWriter printWriter = new PrintWriter(writer);
|
PrintWriter printWriter = new PrintWriter(writer);
|
||||||
e.printStackTrace(printWriter);
|
e.printStackTrace(printWriter);
|
||||||
logger.log(Level.SEVERE, "Exception occured:" + e);
|
logger.log(Level.SEVERE, "Exception occurred:" + e);
|
||||||
logger.log(Level.FINE, writer.toString());
|
logger.log(Level.FINE, writer.toString());
|
||||||
}
|
}
|
||||||
if (b != null) {
|
if (b != null) {
|
||||||
|
@ -68,7 +68,7 @@ class SocketsConnectClient {
|
|||||||
try {
|
try {
|
||||||
socket = new Socket(SocketHelper.IP_ADDRESS, port);
|
socket = new Socket(SocketHelper.IP_ADDRESS, port);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "Exception occured when connecting to port: " + e);
|
logger.log(Level.SEVERE, "Exception occurred when connecting to port: " + e);
|
||||||
socketMappedBuffer.putChar(Helper.MAPPED_INDEX, Helper.STATE_FAIL);
|
socketMappedBuffer.putChar(Helper.MAPPED_INDEX, Helper.STATE_FAIL);
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
@ -117,7 +117,7 @@ class SocketsConnectClient {
|
|||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
PrintWriter printWriter = new PrintWriter(writer);
|
PrintWriter printWriter = new PrintWriter(writer);
|
||||||
exception.printStackTrace(printWriter);
|
exception.printStackTrace(printWriter);
|
||||||
logger.log(Level.SEVERE, "Exception occured:" + exception);
|
logger.log(Level.SEVERE, "Exception occurred:" + exception);
|
||||||
logger.log(Level.FINE, writer.toString());
|
logger.log(Level.FINE, writer.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ class SocketsData {
|
|||||||
}
|
}
|
||||||
if (socketMappedBuffer.getChar(Helper.MAPPED_INDEX) == Helper.STATE_FAIL) {
|
if (socketMappedBuffer.getChar(Helper.MAPPED_INDEX) == Helper.STATE_FAIL) {
|
||||||
logger.log(Level.SEVERE, "Killing the server process and client process");
|
logger.log(Level.SEVERE, "Killing the server process and client process");
|
||||||
logger.log(Level.SEVERE, "Exception occured in the client or server process: check their log for details");
|
logger.log(Level.SEVERE, "Exception occurred in the client or server process: check their log for details");
|
||||||
serverProcess.destroy();
|
serverProcess.destroy();
|
||||||
clientProcess.destroy();
|
clientProcess.destroy();
|
||||||
b.putChar(Helper.MAPPED_INDEX, Helper.STATE_END);
|
b.putChar(Helper.MAPPED_INDEX, Helper.STATE_END);
|
||||||
@ -144,7 +144,7 @@ class SocketsData {
|
|||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
PrintWriter printWriter = new PrintWriter(writer);
|
PrintWriter printWriter = new PrintWriter(writer);
|
||||||
e.printStackTrace(printWriter);
|
e.printStackTrace(printWriter);
|
||||||
logger.log(Level.SEVERE, "Exception occured:" + e);
|
logger.log(Level.SEVERE, "Exception occurred:" + e);
|
||||||
logger.log(Level.FINE, writer.toString());
|
logger.log(Level.FINE, writer.toString());
|
||||||
}
|
}
|
||||||
if (b != null) {
|
if (b != null) {
|
||||||
|
@ -74,7 +74,7 @@ class SocketsDataClient {
|
|||||||
try {
|
try {
|
||||||
socket = new Socket(SocketHelper.IP_ADDRESS, port);
|
socket = new Socket(SocketHelper.IP_ADDRESS, port);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.log(Level.SEVERE, "Exception occured when connecting to port: " + e);
|
logger.log(Level.SEVERE, "Exception occurred when connecting to port: " + e);
|
||||||
socketMappedBuffer.putChar(Helper.MAPPED_INDEX, Helper.STATE_FAIL);
|
socketMappedBuffer.putChar(Helper.MAPPED_INDEX, Helper.STATE_FAIL);
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
@ -129,7 +129,7 @@ class SocketsDataClient {
|
|||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
PrintWriter printWriter = new PrintWriter(writer);
|
PrintWriter printWriter = new PrintWriter(writer);
|
||||||
exception.printStackTrace(printWriter);
|
exception.printStackTrace(printWriter);
|
||||||
logger.log(Level.SEVERE, "Exception occured:" + exception);
|
logger.log(Level.SEVERE, "Exception occurred:" + exception);
|
||||||
logger.log(Level.FINE, writer.toString());
|
logger.log(Level.FINE, writer.toString());
|
||||||
}
|
}
|
||||||
if (socketMappedBuffer != null) {
|
if (socketMappedBuffer != null) {
|
||||||
|
@ -81,7 +81,7 @@ class SocketsListen {
|
|||||||
}
|
}
|
||||||
if (socketMappedBuffer.getChar(Helper.MAPPED_INDEX) == Helper.STATE_FAIL) {
|
if (socketMappedBuffer.getChar(Helper.MAPPED_INDEX) == Helper.STATE_FAIL) {
|
||||||
logger.log(Level.SEVERE, "Killing the server process and client process");
|
logger.log(Level.SEVERE, "Killing the server process and client process");
|
||||||
logger.log(Level.SEVERE, "Exception occured in the client or server process: check their log for details");
|
logger.log(Level.SEVERE, "Exception occurred in the client or server process: check their log for details");
|
||||||
serverProcess.destroy();
|
serverProcess.destroy();
|
||||||
clientProcess.destroy();
|
clientProcess.destroy();
|
||||||
b.putChar(Helper.MAPPED_INDEX, Helper.STATE_END);
|
b.putChar(Helper.MAPPED_INDEX, Helper.STATE_END);
|
||||||
@ -141,7 +141,7 @@ class SocketsListen {
|
|||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
PrintWriter printWriter = new PrintWriter(writer);
|
PrintWriter printWriter = new PrintWriter(writer);
|
||||||
e.printStackTrace(printWriter);
|
e.printStackTrace(printWriter);
|
||||||
logger.log(Level.SEVERE, "Exception occured:" + e);
|
logger.log(Level.SEVERE, "Exception occurred:" + e);
|
||||||
logger.log(Level.FINE, writer.toString());
|
logger.log(Level.FINE, writer.toString());
|
||||||
}
|
}
|
||||||
if (b != null) {
|
if (b != null) {
|
||||||
|
@ -75,7 +75,7 @@ class SocketsListenClient {
|
|||||||
try {
|
try {
|
||||||
socket = new Socket(SocketHelper.IP_ADDRESS, port);
|
socket = new Socket(SocketHelper.IP_ADDRESS, port);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "Exception occured when connecting to port: " + e);
|
logger.log(Level.SEVERE, "Exception occurred when connecting to port: " + e);
|
||||||
socketMappedBuffer.putChar(Helper.MAPPED_INDEX, Helper.STATE_FAIL);
|
socketMappedBuffer.putChar(Helper.MAPPED_INDEX, Helper.STATE_FAIL);
|
||||||
}
|
}
|
||||||
PrintStream out = new PrintStream(socket.getOutputStream());
|
PrintStream out = new PrintStream(socket.getOutputStream());
|
||||||
@ -123,7 +123,7 @@ class SocketsListenClient {
|
|||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
PrintWriter printWriter = new PrintWriter(writer);
|
PrintWriter printWriter = new PrintWriter(writer);
|
||||||
exception.printStackTrace(printWriter);
|
exception.printStackTrace(printWriter);
|
||||||
logger.log(Level.SEVERE, "Exception occured:" + exception);
|
logger.log(Level.SEVERE, "Exception occurred:" + exception);
|
||||||
logger.log(Level.FINE, writer.toString());
|
logger.log(Level.FINE, writer.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ class SocketsMultiple {
|
|||||||
}
|
}
|
||||||
if (socketMappedBuffer.getChar(Helper.MAPPED_INDEX) == Helper.STATE_FAIL) {
|
if (socketMappedBuffer.getChar(Helper.MAPPED_INDEX) == Helper.STATE_FAIL) {
|
||||||
logger.log(Level.SEVERE, "Killing the server process and client process");
|
logger.log(Level.SEVERE, "Killing the server process and client process");
|
||||||
logger.log(Level.SEVERE, "Exception occured in the client or server process: check their log for details");
|
logger.log(Level.SEVERE, "Exception occurred in the client or server process: check their log for details");
|
||||||
serverProcess.destroy();
|
serverProcess.destroy();
|
||||||
clientProcess.destroy();
|
clientProcess.destroy();
|
||||||
b.putChar(Helper.MAPPED_INDEX, Helper.STATE_END);
|
b.putChar(Helper.MAPPED_INDEX, Helper.STATE_END);
|
||||||
@ -140,7 +140,7 @@ class SocketsMultiple {
|
|||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
PrintWriter printWriter = new PrintWriter(writer);
|
PrintWriter printWriter = new PrintWriter(writer);
|
||||||
e.printStackTrace(printWriter);
|
e.printStackTrace(printWriter);
|
||||||
logger.log(Level.SEVERE, "Exception occured:" + e);
|
logger.log(Level.SEVERE, "Exception occurred:" + e);
|
||||||
logger.log(Level.FINE, writer.toString());
|
logger.log(Level.FINE, writer.toString());
|
||||||
}
|
}
|
||||||
if (b != null) {
|
if (b != null) {
|
||||||
|
@ -161,7 +161,7 @@ class SocketsMultipleClient {
|
|||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
PrintWriter printWriter = new PrintWriter(writer);
|
PrintWriter printWriter = new PrintWriter(writer);
|
||||||
exception.printStackTrace(printWriter);
|
exception.printStackTrace(printWriter);
|
||||||
logger.log(Level.SEVERE, "Exception occured:" + exception);
|
logger.log(Level.SEVERE, "Exception occurred:" + exception);
|
||||||
logger.log(Level.FINE, writer.toString());
|
logger.log(Level.FINE, writer.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ int main(int argc, char *argv[])
|
|||||||
snprintf(buf, sizeof(buf), "/proc/%d/fd", pid);
|
snprintf(buf, sizeof(buf), "/proc/%d/fd", pid);
|
||||||
fd_dir = opendir(buf);
|
fd_dir = opendir(buf);
|
||||||
if (!fd_dir) {
|
if (!fd_dir) {
|
||||||
printf("cant open %s\n", buf);
|
printf("can't open %s\n", buf);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,13 +70,13 @@ int main(int argc, char *argv[])
|
|||||||
closedir(fd_dir);
|
closedir(fd_dir);
|
||||||
|
|
||||||
if (ioctl(fd, TIOCGSID, &tty_sid) < 0) {
|
if (ioctl(fd, TIOCGSID, &tty_sid) < 0) {
|
||||||
printf("cant obtain sid on stdout\n");
|
printf("can't obtain sid on stdout\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
printf("stdout sid = %d\n", tty_sid);
|
printf("stdout sid = %d\n", tty_sid);
|
||||||
|
|
||||||
if (ioctl(fd, TIOCGPGRP, &tty_gid) < 0) {
|
if (ioctl(fd, TIOCGPGRP, &tty_gid) < 0) {
|
||||||
printf("cant obtain gid on stdout\n");
|
printf("can't obtain gid on stdout\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
printf("stdout gid = %d\n", tty_gid);
|
printf("stdout gid = %d\n", tty_gid);
|
||||||
|
@ -61,7 +61,7 @@ EXAMPLE
|
|||||||
|
|
||||||
bers -d test/bers/dump -t 256 -m 54 -c 4 -f 200 --mem-fill dirtify --mem-cycle dirtify
|
bers -d test/bers/dump -t 256 -m 54 -c 4 -f 200 --mem-fill dirtify --mem-cycle dirtify
|
||||||
|
|
||||||
We generate 256 tasks wit each allocating 54 megabytes of memory splitted
|
We generate 256 tasks with each allocating 54 megabytes of memory split
|
||||||
equally into 4 memory areas. Each task opens 200 files. On creation and
|
equally into 4 memory areas. Each task opens 200 files. On creation and
|
||||||
cycling we touch every page of every memory area.
|
cycling we touch every page of every memory area.
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ grep NSpid /proc/self/status || exit 0
|
|||||||
# This test creates a process in non-host pidns and then dumps it and restores
|
# This test creates a process in non-host pidns and then dumps it and restores
|
||||||
# it into host pidns. We use pid >100000 in non-host pidns to make sure it does
|
# it into host pidns. We use pid >100000 in non-host pidns to make sure it does
|
||||||
# not intersect with some host pid on restore but it is potentially racy so
|
# not intersect with some host pid on restore but it is potentially racy so
|
||||||
# please run this test only in manualy.
|
# please run this test only in manually.
|
||||||
|
|
||||||
CRIU=../../../criu/criu
|
CRIU=../../../criu/criu
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ class test:
|
|||||||
|
|
||||||
def check_resp(self, resp, typ, err):
|
def check_resp(self, resp, typ, err):
|
||||||
if resp.type != typ:
|
if resp.type != typ:
|
||||||
raise Exception('Unexpected responce type ' + str(resp.type))
|
raise Exception('Unexpected response type ' + str(resp.type))
|
||||||
|
|
||||||
if resp.success:
|
if resp.success:
|
||||||
raise Exception('Unexpected success = True')
|
raise Exception('Unexpected success = True')
|
||||||
|
@ -118,7 +118,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
ret = connect(fd, (struct sockaddr *)&addr, addr_len);
|
ret = connect(fd, (struct sockaddr *)&addr, addr_len);
|
||||||
if (ret == -1) {
|
if (ret == -1) {
|
||||||
perror("Cant connect to socket");
|
perror("Can't connect to socket");
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -975,7 +975,7 @@ class criu_rpc:
|
|||||||
if preexec:
|
if preexec:
|
||||||
raise test_fail_exc('RPC and PREEXEC not supported')
|
raise test_fail_exc('RPC and PREEXEC not supported')
|
||||||
|
|
||||||
ctx = {} # Object used to keep info untill action is done
|
ctx = {} # Object used to keep info until action is done
|
||||||
criu = crpc.criu()
|
criu = crpc.criu()
|
||||||
criu.use_binary(criu_bin)
|
criu.use_binary(criu_bin)
|
||||||
criu_rpc.__set_opts(criu, args, ctx)
|
criu_rpc.__set_opts(criu, args, ctx)
|
||||||
|
@ -25,7 +25,7 @@ do_or_fail()
|
|||||||
|
|
||||||
do_start_ipt()
|
do_start_ipt()
|
||||||
{
|
{
|
||||||
[ -f "$statefile" ] && die "state file $statefile aleady exists"
|
[ -f "$statefile" ] && die "state file $statefile already exists"
|
||||||
|
|
||||||
do_or_fail "can't install a state match" \
|
do_or_fail "can't install a state match" \
|
||||||
iptables -A INPUT \
|
iptables -A INPUT \
|
||||||
@ -47,7 +47,7 @@ do_stop_ipt()
|
|||||||
|
|
||||||
do_start_nft()
|
do_start_nft()
|
||||||
{
|
{
|
||||||
[ -f "$statefile" ] && die "state file $statefile aleady exists"
|
[ -f "$statefile" ] && die "state file $statefile already exists"
|
||||||
|
|
||||||
do_or_fail "can't install a state match" \
|
do_or_fail "can't install a state match" \
|
||||||
nft add rule filter INPUT \
|
nft add rule filter INPUT \
|
||||||
@ -83,7 +83,7 @@ tmpargs="$(../lib/parseargs.sh --name=$0 \
|
|||||||
die "can't parse command line"
|
die "can't parse command line"
|
||||||
eval "$tmpargs"
|
eval "$tmpargs"
|
||||||
|
|
||||||
[ -f "$outfile" ] && die "out file $outfile aleady exists"
|
[ -f "$outfile" ] && die "out file $outfile already exists"
|
||||||
|
|
||||||
# expect "start" or "stop"
|
# expect "start" or "stop"
|
||||||
do_$1
|
do_$1
|
||||||
|
@ -51,7 +51,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
tmp[2] = '\0';
|
tmp[2] = '\0';
|
||||||
if (strcmp(tmp, "xy")) {
|
if (strcmp(tmp, "xy")) {
|
||||||
fail("Smth's wron with file contents (%s)", tmp);
|
fail("Smth's wrong with file contents (%s)", tmp);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ test:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Setup futex for processes syncronization
|
* Setup futex for processes synchronization
|
||||||
*/
|
*/
|
||||||
futex = mmap(NULL, sizeof(futex), PROT_WRITE | PROT_READ, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
|
futex = mmap(NULL, sizeof(futex), PROT_WRITE | PROT_READ, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
|
||||||
if (futex == MAP_FAILED) {
|
if (futex == MAP_FAILED) {
|
||||||
|
@ -139,7 +139,7 @@ int main(int argc, char **argv)
|
|||||||
test_init(argc, argv);
|
test_init(argc, argv);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Setup futex for processes syncronization
|
* Setup futex for processes synchronization
|
||||||
*/
|
*/
|
||||||
futex = mmap(NULL, sizeof(futex), PROT_WRITE | PROT_READ, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
|
futex = mmap(NULL, sizeof(futex), PROT_WRITE | PROT_READ, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
|
||||||
if (futex == MAP_FAILED) {
|
if (futex == MAP_FAILED) {
|
||||||
|
@ -30,7 +30,7 @@ if sys.argv[1] == "--post-start":
|
|||||||
nsenter() # Enter test netns
|
nsenter() # Enter test netns
|
||||||
subprocess.Popen(["ip", "link", "set", "up", "dev", "lo"]).wait()
|
subprocess.Popen(["ip", "link", "set", "up", "dev", "lo"]).wait()
|
||||||
|
|
||||||
# Lets test know that the netns is initilized successfully
|
# Lets test know that the netns is initialized successfully
|
||||||
# by checking the access of SYNCFILE
|
# by checking the access of SYNCFILE
|
||||||
create_sync_file()
|
create_sync_file()
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ int main(int argc, char **argv)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
if (strcmp(TEST_STRING, buf)) {
|
if (strcmp(TEST_STRING, buf)) {
|
||||||
pr_perror("data curruption");
|
pr_perror("data corruption");
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
close(11);
|
close(11);
|
||||||
if (strcmp(TEST_STRING, buf)) {
|
if (strcmp(TEST_STRING, buf)) {
|
||||||
pr_perror("data curruption");
|
pr_perror("data corruption");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ioctl(slave, TIOCSCTTY, 1)) {
|
if (ioctl(slave, TIOCSCTTY, 1)) {
|
||||||
pr_perror("Can't set a controll terminal");
|
pr_perror("Can't set a control terminal");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
slave = open("/dev/tty", O_RDWR);
|
slave = open("/dev/tty", O_RDWR);
|
||||||
if (slave == -1) {
|
if (slave == -1) {
|
||||||
pr_perror("Can't open the controll terminal");
|
pr_perror("Can't open the control terminal");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ioctl(slave1, TIOCSCTTY, 1)) {
|
if (ioctl(slave1, TIOCSCTTY, 1)) {
|
||||||
pr_perror("Can't set a controll terminal");
|
pr_perror("Can't set a control terminal");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ do_or_fail()
|
|||||||
|
|
||||||
do_start()
|
do_start()
|
||||||
{
|
{
|
||||||
[ -f "$statefile" ] && die "state file $statefile aleady exists"
|
[ -f "$statefile" ] && die "state file $statefile already exists"
|
||||||
|
|
||||||
# Get default route
|
# Get default route
|
||||||
dev_name=`ip route list match 0.0.0.0/0 | sed 's/.*dev \([^ ]*\).*/\1/'`
|
dev_name=`ip route list match 0.0.0.0/0 | sed 's/.*dev \([^ ]*\).*/\1/'`
|
||||||
@ -66,7 +66,7 @@ tmpargs="$(../lib/parseargs.sh --name=$0 \
|
|||||||
die "can't parse command line"
|
die "can't parse command line"
|
||||||
eval "$tmpargs"
|
eval "$tmpargs"
|
||||||
|
|
||||||
[ -f "$outfile" ] && die "out file $outfile aleady exists"
|
[ -f "$outfile" ] && die "out file $outfile already exists"
|
||||||
|
|
||||||
# expect "start" or "stop"
|
# expect "start" or "stop"
|
||||||
action=${1:?Specify action$(die 'Specify action')}
|
action=${1:?Specify action$(die 'Specify action')}
|
||||||
|
@ -154,7 +154,7 @@ static int child(const int c)
|
|||||||
continue;
|
continue;
|
||||||
if (testcases[i].alive)
|
if (testcases[i].alive)
|
||||||
continue;
|
continue;
|
||||||
test_msg("Wait porcess %d (pid %d)\n", i, testcases[i].master.pid);
|
test_msg("Wait process %d (pid %d)\n", i, testcases[i].master.pid);
|
||||||
waitpid(testcases[i].master.pid, NULL, 0);
|
waitpid(testcases[i].master.pid, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,7 +244,7 @@ int main(int argc, char **argv)
|
|||||||
continue;
|
continue;
|
||||||
if (testcases[i].alive)
|
if (testcases[i].alive)
|
||||||
continue;
|
continue;
|
||||||
test_msg("Wait porcess %d (pid %d)\n", i, testcases[i].master.pid);
|
test_msg("Wait process %d (pid %d)\n", i, testcases[i].master.pid);
|
||||||
waitpid(testcases[i].master.pid, NULL, 0);
|
waitpid(testcases[i].master.pid, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (act.sa_handler != sigh) {
|
if (act.sa_handler != sigh) {
|
||||||
fail("unexpected sighanl hanlder");
|
fail("unexpected sighanl handler");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (tmp != sk_opts[i].lock) {
|
if (tmp != sk_opts[i].lock) {
|
||||||
fail("SO_BUF_LOCK missmatch %u != %u", tmp, sk_opts[i].lock);
|
fail("SO_BUF_LOCK mismatch %u != %u", tmp, sk_opts[i].lock);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -103,7 +103,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (tmp != sk_opts[i].lock) {
|
if (tmp != sk_opts[i].lock) {
|
||||||
fail("SO_BUF_LOCK missmatch %u != %u", tmp, sk_opts[i].lock);
|
fail("SO_BUF_LOCK mismatch %u != %u", tmp, sk_opts[i].lock);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#define ZDTM_SRV_FAMILY AF_INET
|
#define ZDTM_SRV_FAMILY AF_INET
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *test_doc = "Check, that a reseted TCP connection can be restored\n";
|
const char *test_doc = "Check, that a reset TCP connection can be restored\n";
|
||||||
const char *test_author = "Andrey Vagin <avagin@parallels.com";
|
const char *test_author = "Andrey Vagin <avagin@parallels.com";
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -71,7 +71,7 @@ err:
|
|||||||
|
|
||||||
#ifdef __i386__
|
#ifdef __i386__
|
||||||
/*
|
/*
|
||||||
* On i386 syscalls for speed are optimized trough vdso,
|
* On i386 syscalls for speed are optimized through vdso,
|
||||||
* call raw int80 as vdso is unmapped.
|
* call raw int80 as vdso is unmapped.
|
||||||
*/
|
*/
|
||||||
#define __NR32_munmap 91
|
#define __NR32_munmap 91
|
||||||
|
Loading…
x
Reference in New Issue
Block a user