#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
-#include <lib_internal/sys_unshare.h>
static inline ALWAYSINLINE xid_t
vc_ctx_create_v21(xid_t xid, struct vc_ctx_flags *flags)
res = vserver(VCMD_ctx_create_v1, CTX_USER2KERNEL(xid), &data);
res = CTX_KERNEL2USER(res);
- if (res != VC_NOCTX) {
- if (utilvserver_checkCompatConfig() & VC_VCI_SPACES) {
- uint32_t spaces = vc_get_space_mask() & ~(CLONE_NEWNS|CLONE_FS);
- sys_unshare(spaces);
- vc_set_namespace(VC_SAMECTX, spaces);
- }
- }
-
return res;
}
static inline ALWAYSINLINE int
vc_ctx_migrate_spaces(xid_t xid, uint_least64_t flags)
{
- int ret;
struct vcmd_ctx_migrate data = { .flagword = flags };
- ret = vc_getXIDType(xid);
- if (ret == vcTYPE_STATIC || ret == vcTYPE_DYNAMIC) {
- ret = vc_enter_namespace(xid, vc_get_space_mask() & ~(CLONE_NEWNS|CLONE_FS));
- if (ret)
- return ret;
- }
-
return vserver(VCMD_ctx_migrate_v1, CTX_USER2KERNEL(xid), &data);
}
$_VSERVER_INFO - FEATURE migrate || exec $_CHCONTEXT_COMPAT "$@"
-tmp=$(getopt -o + --long cap:,ctx:,xid:,disconnect,domainname:,flag:,hostname:,secure,silent,help,version -n "$0" -- "$@") || exit 1
+tmp=$(getopt -o + --long cap:,ctx:,xid:,disconnect,domainname:,flag:,hostname:,secure,silent,help,version,spaces: -n "$0" -- "$@") || exit 1
eval set -- "$tmp"
OPT_CAPS=()
OPT_SECURE=
OPT_SILENT=
OPT_INITPID=
+OPT_SPACES=--default
while true; do
case "$1" in
;;
--secure) OPT_SECURE=1;;
--silent) OPT_SILENT=1;;
+ --spaces) OPT_SPACES=$2; shift;;
--) shift; break;;
*) echo $"chcontext: internal error; arg=='$1'" >&2; exit 1;;
esac
done
create_cmd=( ${OPT_CTX:+$_VTAG --create --tag "$OPT_CTX" --silentexist --silent --}
+ $_VSPACE --new $OPT_SPACES --
$_VCONTEXT --create --silentexist
${OPT_SILENT:+--silent}
${OPT_CTX:+--xid "$OPT_CTX"} )
old_IFS=$IFS
IFS=,$IFS
+chain_cmd=( "${chain_cmd[@]}"
+ --
+ $_VSPACE --set $OPT_SPACES )
+
test -z "$OPT_DOMAINNAME$OPT_HOSTNAME" || \
chain_cmd=( "${chain_cmd[@]}"
--
declare -a OPTS_VTAG_CREATE=()
declare -a OPTS_VTAG_ENTER=()
declare -a OPTS_VMEMCTRL=()
-declare -a OPTS_VSPACE=()
+declare -a OPTS_VSPACE=( --default )
declare -a STOPCMD_PREPARE=()
"${CHBIND_CMD[@]}" \
$_EXEC_ULIMIT "$VSERVER_DIR/ulimits" \
$_VTAG --create "${OPTS_VTAG_CREATE[@]}" --silent -- \
+ $_VSPACE --new "${OPTS_VSPACE[@]}" -- \
$_VCONTEXT --create "${OPTS_VCONTEXT_CREATE[@]}" -- \
+ $_VSPACE --set "${OPTS_VSPACE[@]}" -- \
$_VUNAME --xid self --dir "$VSERVER_DIR"/uts --missingok -- \
$_VUNAME --xid self --set -t context="$VSERVER_DIR" -- \
$_VCONTEXT --migrate-self --endsetup --chroot $SILENT_OPT -- \