mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 14:12:06 +00:00
Merge branch 'inet-shrink-netns'
Eric Dumazet says: ==================== inet: shrink netns_ipv{4|6} This patch series work on reducing footprint of netns_ipv4 and netns_ipv6. Some sysctls are converted to bytes, and some fields are moves to reduce number of holes and paddings. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
ab1b4f0a83
@ -32,14 +32,18 @@ struct inet_hashinfo;
|
||||
|
||||
struct inet_timewait_death_row {
|
||||
atomic_t tw_count;
|
||||
char tw_pad[L1_CACHE_BYTES - sizeof(atomic_t)];
|
||||
|
||||
struct inet_hashinfo *hashinfo ____cacheline_aligned_in_smp;
|
||||
struct inet_hashinfo *hashinfo;
|
||||
int sysctl_max_tw_buckets;
|
||||
};
|
||||
|
||||
struct tcp_fastopen_context;
|
||||
|
||||
struct netns_ipv4 {
|
||||
/* Please keep tcp_death_row at first field in netns_ipv4 */
|
||||
struct inet_timewait_death_row tcp_death_row ____cacheline_aligned_in_smp;
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
struct ctl_table_header *forw_hdr;
|
||||
struct ctl_table_header *frags_hdr;
|
||||
@ -53,17 +57,17 @@ struct netns_ipv4 {
|
||||
struct mutex ra_mutex;
|
||||
#ifdef CONFIG_IP_MULTIPLE_TABLES
|
||||
struct fib_rules_ops *rules_ops;
|
||||
bool fib_has_custom_rules;
|
||||
unsigned int fib_rules_require_fldissect;
|
||||
struct fib_table __rcu *fib_main;
|
||||
struct fib_table __rcu *fib_default;
|
||||
unsigned int fib_rules_require_fldissect;
|
||||
bool fib_has_custom_rules;
|
||||
#endif
|
||||
bool fib_has_custom_local_routes;
|
||||
bool fib_offload_disabled;
|
||||
#ifdef CONFIG_IP_ROUTE_CLASSID
|
||||
int fib_num_tclassid_users;
|
||||
#endif
|
||||
struct hlist_head *fib_table_hash;
|
||||
bool fib_offload_disabled;
|
||||
struct sock *fibnl;
|
||||
|
||||
struct sock * __percpu *icmp_sk;
|
||||
@ -167,15 +171,14 @@ struct netns_ipv4 {
|
||||
u8 sysctl_tcp_min_tso_segs;
|
||||
u8 sysctl_tcp_autocorking;
|
||||
u8 sysctl_tcp_reflect_tos;
|
||||
u8 sysctl_tcp_comp_sack_nr;
|
||||
int sysctl_tcp_invalid_ratelimit;
|
||||
int sysctl_tcp_pacing_ss_ratio;
|
||||
int sysctl_tcp_pacing_ca_ratio;
|
||||
int sysctl_tcp_wmem[3];
|
||||
int sysctl_tcp_rmem[3];
|
||||
int sysctl_tcp_comp_sack_nr;
|
||||
unsigned long sysctl_tcp_comp_sack_delay_ns;
|
||||
unsigned long sysctl_tcp_comp_sack_slack_ns;
|
||||
struct inet_timewait_death_row tcp_death_row;
|
||||
int sysctl_max_syn_backlog;
|
||||
int sysctl_tcp_fastopen;
|
||||
const struct tcp_congestion_ops __rcu *tcp_congestion_control;
|
||||
@ -188,15 +191,15 @@ struct netns_ipv4 {
|
||||
int sysctl_udp_wmem_min;
|
||||
int sysctl_udp_rmem_min;
|
||||
|
||||
int sysctl_fib_notify_on_flag_change;
|
||||
u8 sysctl_fib_notify_on_flag_change;
|
||||
|
||||
#ifdef CONFIG_NET_L3_MASTER_DEV
|
||||
int sysctl_udp_l3mdev_accept;
|
||||
u8 sysctl_udp_l3mdev_accept;
|
||||
#endif
|
||||
|
||||
u8 sysctl_igmp_llm_reports;
|
||||
int sysctl_igmp_max_memberships;
|
||||
int sysctl_igmp_max_msf;
|
||||
int sysctl_igmp_llm_reports;
|
||||
int sysctl_igmp_qrv;
|
||||
|
||||
struct ping_group_range ping_group_range;
|
||||
@ -217,8 +220,8 @@ struct netns_ipv4 {
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_IP_ROUTE_MULTIPATH
|
||||
int sysctl_fib_multipath_use_neigh;
|
||||
int sysctl_fib_multipath_hash_policy;
|
||||
u8 sysctl_fib_multipath_use_neigh;
|
||||
u8 sysctl_fib_multipath_hash_policy;
|
||||
#endif
|
||||
|
||||
struct fib_notifier_ops *notifier_ops;
|
||||
|
@ -20,7 +20,6 @@ struct netns_sysctl_ipv6 {
|
||||
struct ctl_table_header *frags_hdr;
|
||||
struct ctl_table_header *xfrm6_hdr;
|
||||
#endif
|
||||
int bindv6only;
|
||||
int flush_delay;
|
||||
int ip6_rt_max_size;
|
||||
int ip6_rt_gc_min_interval;
|
||||
@ -29,21 +28,22 @@ struct netns_sysctl_ipv6 {
|
||||
int ip6_rt_gc_elasticity;
|
||||
int ip6_rt_mtu_expires;
|
||||
int ip6_rt_min_advmss;
|
||||
int multipath_hash_policy;
|
||||
int flowlabel_consistency;
|
||||
int auto_flowlabels;
|
||||
u8 bindv6only;
|
||||
u8 multipath_hash_policy;
|
||||
u8 flowlabel_consistency;
|
||||
u8 auto_flowlabels;
|
||||
int icmpv6_time;
|
||||
int icmpv6_echo_ignore_all;
|
||||
int icmpv6_echo_ignore_multicast;
|
||||
int icmpv6_echo_ignore_anycast;
|
||||
u8 icmpv6_echo_ignore_all;
|
||||
u8 icmpv6_echo_ignore_multicast;
|
||||
u8 icmpv6_echo_ignore_anycast;
|
||||
DECLARE_BITMAP(icmpv6_ratemask, ICMPV6_MSG_MAX + 1);
|
||||
unsigned long *icmpv6_ratemask_ptr;
|
||||
int anycast_src_echo_reply;
|
||||
int ip_nonlocal_bind;
|
||||
int fwmark_reflect;
|
||||
u8 anycast_src_echo_reply;
|
||||
u8 ip_nonlocal_bind;
|
||||
u8 fwmark_reflect;
|
||||
u8 flowlabel_state_ranges;
|
||||
int idgen_retries;
|
||||
int idgen_delay;
|
||||
int flowlabel_state_ranges;
|
||||
int flowlabel_reflect;
|
||||
int max_dst_opts_cnt;
|
||||
int max_hbh_opts_cnt;
|
||||
@ -51,10 +51,13 @@ struct netns_sysctl_ipv6 {
|
||||
int max_hbh_opts_len;
|
||||
int seg6_flowlabel;
|
||||
bool skip_notify_on_dev_down;
|
||||
int fib_notify_on_flag_change;
|
||||
u8 fib_notify_on_flag_change;
|
||||
};
|
||||
|
||||
struct netns_ipv6 {
|
||||
/* Keep ip6_dst_ops at the beginning of netns_sysctl_ipv6 */
|
||||
struct dst_ops ip6_dst_ops;
|
||||
|
||||
struct netns_sysctl_ipv6 sysctl;
|
||||
struct ipv6_devconf *devconf_all;
|
||||
struct ipv6_devconf *devconf_dflt;
|
||||
@ -76,7 +79,6 @@ struct netns_ipv6 {
|
||||
struct hlist_head *fib_table_hash;
|
||||
struct fib6_table *fib6_main_tbl;
|
||||
struct list_head fib6_walkers;
|
||||
struct dst_ops ip6_dst_ops;
|
||||
rwlock_t fib6_walker_lock;
|
||||
spinlock_t fib6_gc_lock;
|
||||
unsigned int ip6_rt_gc_expire;
|
||||
|
@ -46,7 +46,6 @@ static int tcp_syn_retries_min = 1;
|
||||
static int tcp_syn_retries_max = MAX_TCP_SYNCNT;
|
||||
static int ip_ping_group_range_min[] = { 0, 0 };
|
||||
static int ip_ping_group_range_max[] = { GID_T_MAX, GID_T_MAX };
|
||||
static int comp_sack_nr_max = 255;
|
||||
static u32 u32_max_div_HZ = UINT_MAX / HZ;
|
||||
static int one_day_secs = 24 * 3600;
|
||||
|
||||
@ -456,7 +455,7 @@ static int proc_fib_multipath_hash_policy(struct ctl_table *table, int write,
|
||||
ipv4.sysctl_fib_multipath_hash_policy);
|
||||
int ret;
|
||||
|
||||
ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
|
||||
ret = proc_dou8vec_minmax(table, write, buffer, lenp, ppos);
|
||||
if (write && ret == 0)
|
||||
call_netevent_notifiers(NETEVENT_IPV4_MPATH_HASH_UPDATE, net);
|
||||
|
||||
@ -848,9 +847,9 @@ static struct ctl_table ipv4_net_table[] = {
|
||||
{
|
||||
.procname = "igmp_link_local_mcast_reports",
|
||||
.data = &init_net.ipv4.sysctl_igmp_llm_reports,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
},
|
||||
{
|
||||
.procname = "igmp_max_memberships",
|
||||
@ -1038,16 +1037,16 @@ static struct ctl_table ipv4_net_table[] = {
|
||||
{
|
||||
.procname = "fib_multipath_use_neigh",
|
||||
.data = &init_net.ipv4.sysctl_fib_multipath_use_neigh,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
.extra1 = SYSCTL_ZERO,
|
||||
.extra2 = SYSCTL_ONE,
|
||||
},
|
||||
{
|
||||
.procname = "fib_multipath_hash_policy",
|
||||
.data = &init_net.ipv4.sysctl_fib_multipath_hash_policy,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_fib_multipath_hash_policy,
|
||||
.extra1 = SYSCTL_ZERO,
|
||||
@ -1065,9 +1064,9 @@ static struct ctl_table ipv4_net_table[] = {
|
||||
{
|
||||
.procname = "udp_l3mdev_accept",
|
||||
.data = &init_net.ipv4.sysctl_udp_l3mdev_accept,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
.extra1 = SYSCTL_ZERO,
|
||||
.extra2 = SYSCTL_ONE,
|
||||
},
|
||||
@ -1330,11 +1329,10 @@ static struct ctl_table ipv4_net_table[] = {
|
||||
{
|
||||
.procname = "tcp_comp_sack_nr",
|
||||
.data = &init_net.ipv4.sysctl_tcp_comp_sack_nr,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
.extra1 = SYSCTL_ZERO,
|
||||
.extra2 = &comp_sack_nr_max,
|
||||
},
|
||||
{
|
||||
.procname = "tcp_reflect_tos",
|
||||
@ -1364,9 +1362,9 @@ static struct ctl_table ipv4_net_table[] = {
|
||||
{
|
||||
.procname = "fib_notify_on_flag_change",
|
||||
.data = &init_net.ipv4.sysctl_fib_notify_on_flag_change,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
.extra1 = SYSCTL_ZERO,
|
||||
.extra2 = &two,
|
||||
},
|
||||
|
@ -1169,23 +1169,23 @@ static struct ctl_table ipv6_icmp_table_template[] = {
|
||||
{
|
||||
.procname = "echo_ignore_all",
|
||||
.data = &init_net.ipv6.sysctl.icmpv6_echo_ignore_all,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
},
|
||||
{
|
||||
.procname = "echo_ignore_multicast",
|
||||
.data = &init_net.ipv6.sysctl.icmpv6_echo_ignore_multicast,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
},
|
||||
{
|
||||
.procname = "echo_ignore_anycast",
|
||||
.data = &init_net.ipv6.sysctl.icmpv6_echo_ignore_anycast,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
},
|
||||
{
|
||||
.procname = "ratemask",
|
||||
|
@ -23,7 +23,6 @@
|
||||
|
||||
static int two = 2;
|
||||
static int flowlabel_reflect_max = 0x7;
|
||||
static int auto_flowlabels_min;
|
||||
static int auto_flowlabels_max = IP6_AUTO_FLOW_LABEL_MAX;
|
||||
|
||||
static int proc_rt6_multipath_hash_policy(struct ctl_table *table, int write,
|
||||
@ -34,7 +33,7 @@ static int proc_rt6_multipath_hash_policy(struct ctl_table *table, int write,
|
||||
|
||||
net = container_of(table->data, struct net,
|
||||
ipv6.sysctl.multipath_hash_policy);
|
||||
ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
|
||||
ret = proc_dou8vec_minmax(table, write, buffer, lenp, ppos);
|
||||
if (write && ret == 0)
|
||||
call_netevent_notifiers(NETEVENT_IPV6_MPATH_HASH_UPDATE, net);
|
||||
|
||||
@ -45,39 +44,38 @@ static struct ctl_table ipv6_table_template[] = {
|
||||
{
|
||||
.procname = "bindv6only",
|
||||
.data = &init_net.ipv6.sysctl.bindv6only,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
},
|
||||
{
|
||||
.procname = "anycast_src_echo_reply",
|
||||
.data = &init_net.ipv6.sysctl.anycast_src_echo_reply,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
},
|
||||
{
|
||||
.procname = "flowlabel_consistency",
|
||||
.data = &init_net.ipv6.sysctl.flowlabel_consistency,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
},
|
||||
{
|
||||
.procname = "auto_flowlabels",
|
||||
.data = &init_net.ipv6.sysctl.auto_flowlabels,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.extra1 = &auto_flowlabels_min,
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
.extra2 = &auto_flowlabels_max
|
||||
},
|
||||
{
|
||||
.procname = "fwmark_reflect",
|
||||
.data = &init_net.ipv6.sysctl.fwmark_reflect,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
},
|
||||
{
|
||||
.procname = "idgen_retries",
|
||||
@ -96,16 +94,16 @@ static struct ctl_table ipv6_table_template[] = {
|
||||
{
|
||||
.procname = "flowlabel_state_ranges",
|
||||
.data = &init_net.ipv6.sysctl.flowlabel_state_ranges,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
},
|
||||
{
|
||||
.procname = "ip_nonlocal_bind",
|
||||
.data = &init_net.ipv6.sysctl.ip_nonlocal_bind,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
},
|
||||
{
|
||||
.procname = "flowlabel_reflect",
|
||||
@ -147,7 +145,7 @@ static struct ctl_table ipv6_table_template[] = {
|
||||
{
|
||||
.procname = "fib_multipath_hash_policy",
|
||||
.data = &init_net.ipv6.sysctl.multipath_hash_policy,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_rt6_multipath_hash_policy,
|
||||
.extra1 = SYSCTL_ZERO,
|
||||
@ -163,9 +161,9 @@ static struct ctl_table ipv6_table_template[] = {
|
||||
{
|
||||
.procname = "fib_notify_on_flag_change",
|
||||
.data = &init_net.ipv6.sysctl.fib_notify_on_flag_change,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(u8),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.proc_handler = proc_dou8vec_minmax,
|
||||
.extra1 = SYSCTL_ZERO,
|
||||
.extra2 = &two,
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user