From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (unknown [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id C5B328015B for ; Fri, 25 Sep 2026 16:55:04 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 68PGrtA4027413; Fri, 25 Sep 2026 19:53:55 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 68PGrtA4027413 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="Zm+5vvJO" Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 68PGrbTx027346 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Fri, 25 Sep 2026 19:53:38 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 68PGrbTx027346 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4887f71b1baso674032f8f.2 for ; Fri, 25 Sep 2026 09:53:38 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvBy6Op4O4ZsR/GiSOUudj6Wq/P3cGbjWEQGX4QmzEPeiEjbVchVAUbLrC2ZjQvoqGP7Vsxp1/Q==@openvz.org X-Gm-Message-State: AFuF++lWdhpfKMHIdajXlVa74AdWR6BZsMEhYq9zZkL+dhIAOPWC7lXg j1JhipV/K/A/Sk06hxDO1BGgdx57TLOAUgXnR/JGI54tIR4Rorfjf5SGEBn6jZHDPJ5bN1paI2O Sfdk3ugcuORIppi/ywCBUyqnoScB2MhXvM3QwJzsNzIdmRoG9D1gqHA== X-Gm-Gg: AYBFou3uXELiwB45/HHhwlwIbQpFIG9YNLDSj/1svdu4HxnHLROOlgZxq2Omx9paHbp AR9ZBkfxMp0Vhp+Bo7/xcsVmPG3hhALLxSqiotAhMjASj4splC8ADTSUdqPBNQZdaj7hF/40o5X kd+L9HyIquWvCpW0xna823PPauMHPqk8xarOgWyUBUPiAiFXx5ObxzETWCBGrcV1hiX9y1W24hr SL3h9hQsiaY82LnrSNSlx6x6YKb6jnDwY4zV4BRGdSNrDLwNgm0C8csa9w/MBDfuahZgDm0Ilm/ WAZINd9pr2qzd7nafw7H6G6ooyQrJ3n7b2NfvBU16cUvz2twvTIZ1JHLiXXsLYLAW6Rshj/iHao YyaY6kMxdJwVDEW5t X-Received: by 2002:a05:6000:25f2:b0:486:f3c0:c26b with SMTP id ffacd0b85a97d-4887197f4fbmr11386953f8f.57.1790355217665; Fri, 25 Sep 2026 09:53:37 -0700 (PDT) X-Received: by 2002:a05:6000:25f2:b0:486:f3c0:c26b with SMTP id ffacd0b85a97d-4887197f4fbmr11386921f8f.57.1790355217161; Fri, 25 Sep 2026 09:53:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1790355217; cv=none; d=google.com; s=arc-20260327; b=MH4Ybzee2T3+kKy1/txTD091ZZjWoD5+NlY1TgRslyIlDZqeFZicnlqaVHP0pfLt3i bPl1zcR008lBzHjcyJHEoHZx1l+ySRZDcHj5fNQIfZ6aq3mPOt4Lh39H5N5XmB8pJaGV skE2UVDmyzuok/KdJxJfv1MoAEspsrC5tmpKiyPrc13ZNyMlgKplczmXrsOA4/SFJu8B PEHFDHqWgpoTEVb9e6WlQ9pVPSinbfOPKXTOx3Ptp9+xM2MhaHGufMVpqhZt6hrWTgY4 mMfrObcWnEK/QnRryIKWuI1siSdhVoDgNJhBFOZVMOZ2fQr7huFENYwk0Qr/eXv6YS1J x86w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:dkim-signature; bh=ZUBiH42p3nbV8ZBpqUhEHE4KmKOzfzTlYqnv/FJA064=; fh=zK/v/gHQ7GavWYhLJT8+SASJ7h8osfxqNHUzmzGkT+o=; b=qgZ60/XRxa3HWuLmStGW0+yeOmLHlIYuGLDkfgboxVhWtgDZoKqjZx99iGib6okG4q cF4kJnX/AAa1UUEEjsN1Qg4O0h4JrTAKuywc0vKNI1uVDPmgE32iERHXs1ZGAHvjQWPR yBmCmi7Ip04z4nrdWPr9OHIBGZsHB7exJfO0VDUsiokOY+d/5XPxvhmoqG7iWOGF+J1q fp92QMKb7I9FxmZbPTcX3FsPtdUCDpULoFYNoYXbZywrQ0jTFhZG1+wBNY8VwCB7g6jP 7qt71L18A3/PvylO+raRV/Pvdw/TQyxIIkvmWOyKbs5YQUqhk23GIuW9BwST1vmyO7pq xApQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=Zm+5vvJO; spf=pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=khorenko@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from relay.virtuozzo.com (relay.virtuozzo.com. [130.117.225.111]) by mx.google.com with ESMTPS id ffacd0b85a97d-4887df61727si4661643f8f.504.2026.09.25.09.53.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2026 09:53:37 -0700 (PDT) Received-SPF: pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) client-ip=130.117.225.111; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=Zm+5vvJO; spf=pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=khorenko@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=Message-Id:Content-Type:MIME-Version:Subject:Date :From; bh=ZUBiH42p3nbV8ZBpqUhEHE4KmKOzfzTlYqnv/FJA064=; b=Zm+5vvJOAUZiUZv8eG5 Kaz44TvhItt7lAc0RoaeuWsPBfiUVVEVc/ERqDfJlCiaaax1SsezU0Zf5j4F1DO/nhOG/K+38ZhzQ Rw+RIQ9jtTl5oYqUNYOGoBpLmc432hunMBdz8z1e8crCMKubyiA/ZnHuiNGVvDflYf9/WOUar5A2N Yq0At5z1uL6uLSj0FRqSgWwSnpg5/S5Uz0Jsyq1rTX/U02Q7vx9D+pqc16LTBg/iIp8nraytSVSAA aML6UWcEabXr9CZ2sBKSTOipIFiMrt8G0mh4BtAbbsaSgwiWjngQacKx/2A5DLTkZ/XfoNYOPNIYg Y0AE0TZQ5LLE9cQ==; Received: from ch-demo-asa.virtuozzo.com ([130.117.225.8] helo=f0.sw.ru) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1xA984-00CFkL-1p; Fri, 25 Sep 2026 18:53:32 +0200 From: Konstantin Khorenko Date: Fri, 25 Sep 2026 18:53:25 +0200 MIME-Version: 1.0 Message-Id: <20260925-b4-kh-ve_fail-v10-4-77a6b6ea4205@virtuozzo.com> References: <20260925-b4-kh-ve_fail-v10-0-77a6b6ea4205@virtuozzo.com> In-Reply-To: <20260925-b4-kh-ve_fail-v10-0-77a6b6ea4205@virtuozzo.com> To: Vasileios Almpanis , Pavel Tikhomirov , cover.1789491989.git.vladimir.riabchun@virtuozzo.com, Konstantin Khorenko , devel@openvz.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=5897; i=khorenko@virtuozzo.com; h=from:subject:message-id; bh=vkNFZs33y8v+iQr2icZETuyv87qrlvq1vkoB25YLwJc=; b=owEBbQKS/ZANAwAKAVGWCkf5YVwqAcsmYgBqtqcMOWwX2n/iMn4cJmaWbt77O1Y45NKR2y8OM Aq29uK37G2JAjMEAAEKAB0WIQRWD23IPcXT0GO9CCxRlgpH+WFcKgUCaranDAAKCRBRlgpH+WFc KqZPD/9JVM+24fcdt15zmvfgRB6lk/ZfrWr2IO3B9xnjyEqxdqp+8/SMiEU8izocuxkdELmNg5I RFatvFQUVQ/1fQFMhznadczxMOIcAA+ZlItVmYMK6t6I0TUK1phzBdAtj55bzzE8Yqw/sCuwi1A aGV8NI14c/s5jMy6FKOvDXhR85QigGoQveQACjalTVv14nRtWyK4hWRkdVvYg/MW00Y5JtFI0gL yt3u3PFHPSe78ADr3kLSrUfZJA9mrvQagyMBDN/JDQlts6UrREkv5DfNdEpDuBoWjSi0tG4kcJL wHyiUI3Iqdf7onS6Ql21RZQnwfKwf5155acL4TmoUq+atOmrVMSdNG8ZHyfYnAWuwzxt1o92VCf 1qyG6y4UAzEzK53fJRJLm0oA0AfalkfneemcMzXItXMuOuerTa3xgwD9bDX+xIUulKvlnrXttv0 FTwtudTgp6JH7pyohiG8C+mS9J9jlyB/q0A++SInVLuEoAzv5NK3gopmJkDzwyc/62QK02kD0qx L13iBlqf0eUkWGIRuTXHIM4UrjdUXxD+fbFfA8TIKzxGqHbsxDKpLMTjL99spXNG8+Y10TqL5/U XAJxBiisDrDGlyqkUoO8pRL28W/0ECEHzQ1wWeSLeBDRHSdiui+Fs5QmYCl/WeRc0zPB7tJZo8U vftW3DR9uwKszvw== X-Developer-Key: i=khorenko@virtuozzo.com; a=openpgp; fpr=560F6DC83DC5D3D063BD082C51960A47F9615C2A X-OZ-Fwd: true Subject: [Devel] [PATCH hci-8.1 v10 04/13] ve: make mount limit configurable per VE X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org From: Vladimir Riabchun This change unifies mount limit handling with other VE limits. This will simplify refactoring later and allow more precise limits control from one place. https://virtuozzo.atlassian.net/browse/VSTOR-135520 Feature: per-ve failcounters Signed-off-by: Vladimir Riabchun Reviewed-by: Konstantin Khorenko --- include/linux/ve.h | 9 +++++-- kernel/ve/ve.c | 34 ++++++++++++++++++++++++++- kernel/ve/veowner.c | 19 --------------- tools/testing/selftests/ve/ve_ns_owner_test.c | 6 ++++- 4 files changed, 45 insertions(+), 23 deletions(-) diff --git a/include/linux/ve.h b/include/linux/ve.h index 65c058c0f34d4..fabc608e31f51 100644 --- a/include/linux/ve.h +++ b/include/linux/ve.h @@ -96,7 +96,13 @@ struct ve_struct { atomic_t nd_neigh_nr; unsigned long meminfo_val; + /* + * Operations with a big amount of mount points can require a lot of time. + * These operations take the global lock namespace_sem, so they can affect + * other containers. + */ atomic_t mnt_avail_nr; /* number of available VE mounts */ + int mnt_max_nr; #ifdef CONFIG_COREDUMP char core_pattern[CORENAME_MAX_SIZE]; @@ -143,8 +149,7 @@ extern int nr_ve; #define NETNS_MAX_NR_DEFAULT 256 /* number of net-namespaces per-VE */ #define NETIF_MAX_NR_DEFAULT 256 /* number of net-interfaces per-VE */ #define BPF_PROG_MAX_NR_DEFAULT 256 /* number of loaded BPF progs per-VE */ - -extern unsigned int sysctl_ve_mount_nr; +#define MNT_MAX_NR_DEFAULT 4096 /* number of mounts per-VE */ #ifdef CONFIG_VE static inline void ve_set_state(struct ve_struct *ve, int new_state) diff --git a/kernel/ve/ve.c b/kernel/ve/ve.c index bed8a58af0853..c113071540bf4 100644 --- a/kernel/ve/ve.c +++ b/kernel/ve/ve.c @@ -83,6 +83,7 @@ struct ve_struct ve0 = { .arp_neigh_nr = ATOMIC_INIT(0), .nd_neigh_nr = ATOMIC_INIT(0), .mnt_avail_nr = ATOMIC_INIT(INT_MAX), + .mnt_max_nr = INT_MAX, .meminfo_val = VE_MEMINFO_SYSTEM, .umh_running_helpers = ATOMIC_INIT(0), .umh_helpers_waitq = __WAIT_QUEUE_HEAD_INITIALIZER(ve0.umh_helpers_waitq), @@ -787,7 +788,8 @@ static struct cgroup_subsys_state *ve_create(struct cgroup_subsys_state *parent_ atomic_set(&ve->arp_neigh_nr, 0); atomic_set(&ve->nd_neigh_nr, 0); - atomic_set(&ve->mnt_avail_nr, sysctl_ve_mount_nr); + ve->mnt_max_nr = MNT_MAX_NR_DEFAULT; + atomic_set(&ve->mnt_avail_nr, MNT_MAX_NR_DEFAULT); #ifdef CONFIG_COREDUMP strcpy(ve->core_pattern, "core"); @@ -1068,6 +1070,30 @@ static s64 ve_mnt_avail_nr_read(struct cgroup_subsys_state *css, struct cftype * return atomic_read(&css_to_ve(css)->mnt_avail_nr); } +static u64 ve_mnt_max_nr_read(struct cgroup_subsys_state *css, struct cftype *cft) +{ + return css_to_ve(css)->mnt_max_nr; +} + +static int ve_mnt_max_nr_write(struct cgroup_subsys_state *css, struct cftype *cft, u64 val) +{ + struct ve_struct *ve = css_to_ve(css); + int delta; + + if (!ve_is_super(get_exec_env())) + return -EPERM; + + if (val > INT_MAX) + return -EOVERFLOW; + + down_write(&ve->op_sem); + delta = val - ve->mnt_max_nr; + ve->mnt_max_nr = val; + atomic_add(delta, &ve->mnt_avail_nr); + up_write(&ve->op_sem); + return 0; +} + static u64 ve_netif_max_nr_read(struct cgroup_subsys_state *css, struct cftype *cft) { return css_to_ve(css)->netif_max_nr; @@ -1630,6 +1656,12 @@ static struct cftype ve_cftypes[] = { .name = "mnt_avail_nr", .read_s64 = ve_mnt_avail_nr_read, }, + { + .name = "mnt_max_nr", + .flags = CFTYPE_NOT_ON_ROOT, + .read_u64 = ve_mnt_max_nr_read, + .write_u64 = ve_mnt_max_nr_write, + }, { .name = "netif_max_nr", .flags = CFTYPE_NOT_ON_ROOT, diff --git a/kernel/ve/veowner.c b/kernel/ve/veowner.c index 1e631baf0de9f..c77735f8c0355 100644 --- a/kernel/ve/veowner.c +++ b/kernel/ve/veowner.c @@ -48,26 +48,7 @@ static void prepare_proc(void) * ------------------------------------------------------------------------ */ -/* - * Operations with a big amount of mount points can require a lot of time. - * These operations take the global lock namespace_sem, so they can affect - * other containers. Let us allow no more than sysctl_ve_mount_nr mount - * points for a VE. - */ -unsigned int sysctl_ve_mount_nr = 4096; -static int ve_mount_nr_min = 0; -static int ve_mount_nr_max = INT_MAX; - static struct ctl_table vz_fs_table[] = { - { - .procname = "ve-mount-nr", - .data = &sysctl_ve_mount_nr, - .maxlen = sizeof(sysctl_ve_mount_nr), - .mode = 0644, - .proc_handler = proc_dointvec_minmax, - .extra1 = &ve_mount_nr_min, - .extra2 = &ve_mount_nr_max, - }, { .procname = "fsync-enable", .data = &ve0.fsync_enable, diff --git a/tools/testing/selftests/ve/ve_ns_owner_test.c b/tools/testing/selftests/ve/ve_ns_owner_test.c index c3fa7d7b7f9c0..dcff4d54172dc 100644 --- a/tools/testing/selftests/ve/ve_ns_owner_test.c +++ b/tools/testing/selftests/ve/ve_ns_owner_test.c @@ -50,7 +50,7 @@ * any spurious accounting against the parent ve would overflow it. */ #define VE_NETNS_MAX 3 -#define VE_MOUNTS_MAX 4096 +#define VE_MOUNTS_MAX 32 /* * Synchronisation across the clone() boundary: child does its setup, @@ -173,6 +173,10 @@ FIXTURE_SETUP(ve_ns_owner) snprintf(val, sizeof(val), "%d", VE_NETNS_MAX); ASSERT_EQ(write_file_at(self->cgv2_fd, path, val), 0); + snprintf(path, sizeof(path), "%d/ve.mnt_max_nr", self->ctid); + snprintf(val, sizeof(val), "%d", VE_MOUNTS_MAX); + ASSERT_EQ(write_file_at(self->cgv2_fd, path, val), 0); + /* * The new ve cgroup has not been entered by anything yet, so its * mnt_avail_nr counter should be VE_MOUNTS_MAX. Each test below -- 2.43.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel