[Devel] [PATCH rh7] ve/net: allow to change max number of net devices for running CT

Konstantin Khorenko khorenko at virtuozzo.com
Fri Mar 1 17:33:48 MSK 2019


If a Container hits "ve::netif_max_nr", we want to fix the situation by
increasing the limit without a Container restart, so allow this.

Note: too low value set can turn "ve::netif_avail_nr" to negative,
that's OK, the code is ready for that.

https://jira.sw.ru/browse/PSBM-92132

Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>
---
 kernel/ve/ve.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/kernel/ve/ve.c b/kernel/ve/ve.c
index 37c65c93abef..f1aef51f8bd5 100644
--- a/kernel/ve/ve.c
+++ b/kernel/ve/ve.c
@@ -1307,7 +1307,12 @@ static u64 ve_read_u64(struct cgroup *cg, struct cftype *cft)
 		return atomic_read(&cgroup_ve(cg)->netns_avail_nr);
 	else if (cft->private == VE_CF_NETIF_MAX_NR)
 		return cgroup_ve(cg)->netif_max_nr;
-	else if (cft->private == VE_CF_NETIF_NR)
+	return 0;
+}
+
+static s64 ve_read_s64(struct cgroup *cg, struct cftype *cft)
+{
+	if (cft->private == VE_CF_NETIF_NR)
 		return atomic_read(&cgroup_ve(cg)->netif_avail_nr);
 	return 0;
 }
@@ -1598,12 +1603,12 @@ static struct cftype ve_cftypes[] = {
 		.name			= "netif_max_nr",
 		.flags			= CFTYPE_NOT_ON_ROOT,
 		.read_u64		= ve_read_u64,
-		.write_u64		= ve_write_u64,
+		.write_u64		= ve_write_running_u64,
 		.private		= VE_CF_NETIF_MAX_NR,
 	},
 	{
 		.name			= "netif_avail_nr",
-		.read_u64		= ve_read_u64,
+		.read_s64		= ve_read_s64,
 		.private		= VE_CF_NETIF_NR,
 	},
 	{
-- 
2.15.1



More information about the Devel mailing list