statistics: before umount ploop device store statfs #PSBM-154494Problem introduced by commit '7f6ba412c8f6482204fbee854e2b180c4fc1d5c6':
umount: send umount event if root mount point is busy #PSBM-141624
Before unmounting ploop we should store stats fs for ploop devices.
Signed-off-by: Aleksandr Leskin <aleksandr.leskin@virtuozzo.com>
scripts: show hint when vzctl reports an error via WAITFDVzctl can report an error via WAITFD this will lead to vz-cpt-action
script fail and thus CRIU fail. Let's print a hint to criu log to make
it easier to understand that actual error is in vzctl.
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Update vzctl_tsnapshot_param structure #PSBM-142098Add device field to allow calling application to properly delete
tmp snapshot later
Signed-off-by: Nikolai Barybin <nikolai.barybin@virtuozzo.com>
net: segfault fix on free null json tokener #PSBM-150307Json tokener is not inatialized in current place, so
we can't handling it as error.
Signed-off-by: Aleksandr Leskin <aleksandr.leskin@virtuozzo.com>
cgroup: refactoring: rename cgroup_version parameterAccording to VZ User-space Team Code Style
Naming Conventions:
Global object should have "g_" prefix.
Global static variable is global still -> "g_" prefix
Signed-off-by: Aleksandr Leskin <aleksandr.leskin@virtuozzo.com>
env: replace opencoded read_cg_memory with cg_get_ullThere is no point to have both functions.
https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
cgroup: rework freezer state handling on cgroup-v2https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
env_nsops: do not allow buf used in strcmp uninitializedFunction cg_read_freezer_state can return 0 but leave buf uninitialized,
and buf can contain random data from stack which can accidentally match
"FROZEN". Let's initialize buf with zeroes.
https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
cgroup: switch disk io limits to io.max on cgroup-v2https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
env_nsops: replace blkio.weight to io.weight on cgorup-v2https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
env_nsops: switch pids.max to unified on cgroup-v2https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
env_nsops: don't set or get cpu.rate and cpu.nr_cpus on cgroup-v2There is (yet) no cpu.rate and cpu.nr_cpus on cgroup-v2
https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
env_nsops: use cpu.weight instead of cpu.shares on cgroup-v2https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
env_nsops: switch cgroup.max.descendants to unified on cgroup-v2https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
env_nsops: don't set memory.disable_cleancache on cgroup-v2There is (yet) no memory.disable_cleancache on cgroup-v2
https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
env_nsops: don't set kmem limit on cgroup-v2There is no kmem on v2.
https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
env_nsops: make ns_set_memory_param cgroup-v2 awareNote: on cgroup-v2 we don't need to have set_memlimit_iteratively, but
OOM can happen in the modified cgroup to free memory.
https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
env_nsops: use memsw right as memory plus swapThis is a fix for cgroup-v1 case where cur_ms is assigned to x, as
cur_ms is mem+swap and we want to assign swap at this line, we need to
subtract cur_mem from it.
Note: I doubt that it can happen in real life due to mm_check_param
checks that basic ub limits are set. So I fix it just to decrease the
level of confusion in code.
https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Ti...
env_nsops: skip setting memory.use_hierarchy on cgroup-v2https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
cgroup: fallback cgroup.procs to user.slice/cgroup.procs on cgroup-v2One can not enter cgroup with enabled subtree_control with cgroup-v2, so
try to enter to "leaf" cgroup instead as a fallback
https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
cgroup/env_nsops: use cgroup.procs instead of tasks for cgroup-v2There are no "tasks" in v2, but cgroup.procs is available in both
versions.
https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
cgroup: switch cpuset setup to unified on cgroup-v2https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
env_nsops: skip cpuset cpus and mems initialization on cgroup-v2On cgroup-v2 cpuset.effective_cpus and cpuset.effective_mems already
show same as in parent on newly created cgroup, so there is no need to
initialize it.
https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
cgroup: bindmount unified in container in case of cgroup-v2This helps systemd to detect that it should use cgroup-v2.
https://jira.vzint.dev/browse/PSBM-149975
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>