From: Julian Anastasov <ja@ssi.bg>
To: Simon Horman <horms@verge.net.au>
Cc: lvs-devel@vger.kernel.org, netfilter-devel@vger.kernel.org,
Dust Li <dust.li@linux.alibaba.com>,
Jiejian Wu <jiejian@linux.alibaba.com>,
rcu@vger.kernel.org
Subject: [PATCHv3 net-next 10/14] ipvs: show the current conn_tab size to users
Date: Sun, 31 Mar 2024 17:03:57 +0300 [thread overview]
Message-ID: <20240331140401.77657-11-ja@ssi.bg> (raw)
In-Reply-To: <20240331140401.77657-1-ja@ssi.bg>
As conn_tab is per-net, better to show the current hash table size
to users instead of the ip_vs_conn_tab_size (max).
Signed-off-by: Julian Anastasov <ja@ssi.bg>
---
net/netfilter/ipvs/ip_vs_ctl.c | 36 +++++++++++++++++++++++++++++-----
1 file changed, 31 insertions(+), 5 deletions(-)
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
index a5a7d7027237..5e9babed6799 100644
--- a/net/netfilter/ipvs/ip_vs_ctl.c
+++ b/net/netfilter/ipvs/ip_vs_ctl.c
@@ -2742,10 +2742,16 @@ static void ip_vs_info_seq_stop(struct seq_file *seq, void *v)
static int ip_vs_info_seq_show(struct seq_file *seq, void *v)
{
+ struct net *net = seq_file_net(seq);
+ struct netns_ipvs *ipvs = net_ipvs(net);
+
if (v == SEQ_START_TOKEN) {
+ struct ip_vs_rht *tc = rcu_dereference(ipvs->conn_tab);
+ int csize = tc ? tc->size : 0;
+
seq_printf(seq,
"IP Virtual Server version %d.%d.%d (size=%d)\n",
- NVERSION(IP_VS_VERSION_CODE), ip_vs_conn_tab_size);
+ NVERSION(IP_VS_VERSION_CODE), csize);
seq_puts(seq,
"Prot LocalAddress:Port Scheduler Flags\n");
seq_puts(seq,
@@ -3423,10 +3429,17 @@ do_ip_vs_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
switch (cmd) {
case IP_VS_SO_GET_VERSION:
{
+ struct ip_vs_rht *t;
+ int csize = 0;
char buf[64];
+ rcu_read_lock();
+ t = rcu_dereference(ipvs->conn_tab);
+ if (t)
+ csize = t->size;
+ rcu_read_unlock();
sprintf(buf, "IP Virtual Server version %d.%d.%d (size=%d)",
- NVERSION(IP_VS_VERSION_CODE), ip_vs_conn_tab_size);
+ NVERSION(IP_VS_VERSION_CODE), csize);
if (copy_to_user(user, buf, strlen(buf)+1) != 0) {
ret = -EFAULT;
goto out;
@@ -3438,8 +3451,16 @@ do_ip_vs_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
case IP_VS_SO_GET_INFO:
{
struct ip_vs_getinfo info;
+ struct ip_vs_rht *t;
+ int csize = 0;
+
+ rcu_read_lock();
+ t = rcu_dereference(ipvs->conn_tab);
+ if (t)
+ csize = t->size;
+ rcu_read_unlock();
info.version = IP_VS_VERSION_CODE;
- info.size = ip_vs_conn_tab_size;
+ info.size = csize;
info.num_services =
atomic_read(&ipvs->num_services[IP_VS_AF_INET]);
if (copy_to_user(user, &info, sizeof(info)) != 0)
@@ -4381,6 +4402,8 @@ static int ip_vs_genl_get_cmd(struct sk_buff *skb, struct genl_info *info)
int ret, cmd, reply_cmd;
struct net *net = sock_net(skb->sk);
struct netns_ipvs *ipvs = net_ipvs(net);
+ struct ip_vs_rht *t;
+ int csize;
cmd = info->genlhdr->cmd;
@@ -4448,10 +4471,13 @@ static int ip_vs_genl_get_cmd(struct sk_buff *skb, struct genl_info *info)
}
case IPVS_CMD_GET_INFO:
+ csize = 0;
+ t = rcu_dereference(ipvs->conn_tab);
+ if (t)
+ csize = t->size;
if (nla_put_u32(msg, IPVS_INFO_ATTR_VERSION,
IP_VS_VERSION_CODE) ||
- nla_put_u32(msg, IPVS_INFO_ATTR_CONN_TAB_SIZE,
- ip_vs_conn_tab_size))
+ nla_put_u32(msg, IPVS_INFO_ATTR_CONN_TAB_SIZE, csize))
goto nla_put_failure;
break;
}
--
2.44.0
next prev parent reply other threads:[~2024-03-31 14:04 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-31 14:03 [PATCHv3 net-next 00/14] ipvs: per-net tables and optimizations Julian Anastasov
2024-03-31 14:03 ` [PATCHv3 net-next 01/14] rculist_bl: add hlist_bl_for_each_entry_continue_rcu Julian Anastasov
2024-03-31 14:03 ` [PATCHv3 net-next 02/14] ipvs: make ip_vs_svc_table and ip_vs_svc_fwm_table per netns Julian Anastasov
2024-03-31 14:03 ` [PATCHv3 net-next 03/14] ipvs: some service readers can use RCU Julian Anastasov
2024-03-31 14:03 ` [PATCHv3 net-next 04/14] ipvs: use single svc table Julian Anastasov
2024-03-31 14:03 ` [PATCHv3 net-next 05/14] ipvs: do not keep dest_dst after dest is removed Julian Anastasov
2024-03-31 14:03 ` [PATCHv3 net-next 06/14] ipvs: use more counters to avoid service lookups Julian Anastasov
2024-03-31 14:03 ` [PATCHv3 net-next 07/14] ipvs: add resizable hash tables Julian Anastasov
2024-03-31 14:03 ` [PATCHv3 net-next 08/14] ipvs: use resizable hash table for services Julian Anastasov
2024-03-31 14:03 ` [PATCHv3 net-next 09/14] ipvs: switch to per-net connection table Julian Anastasov
2024-03-31 14:03 ` Julian Anastasov [this message]
2024-03-31 14:03 ` [PATCHv3 net-next 11/14] ipvs: no_cport and dropentry counters can be per-net Julian Anastasov
2024-03-31 14:03 ` [PATCHv3 net-next 12/14] ipvs: use more keys for connection hashing Julian Anastasov
2024-03-31 14:04 ` [PATCHv3 net-next 13/14] ipvs: add ip_vs_status info Julian Anastasov
2024-03-31 14:04 ` [PATCHv3 net-next 14/14] ipvs: add conn_lfactor and svc_lfactor sysctl vars Julian Anastasov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240331140401.77657-11-ja@ssi.bg \
--to=ja@ssi.bg \
--cc=dust.li@linux.alibaba.com \
--cc=horms@verge.net.au \
--cc=jiejian@linux.alibaba.com \
--cc=lvs-devel@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=rcu@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.