mib: add net to NET_ADD_STATS_BH
This one is tricky. The thing is that this macro is only used when killing tw buckets, but since this killer is promiscuous wrt to which net each particular tw belongs to, I have to use it only when NET_NS is off. When the net namespaces are on, I use the INET_INC_STATS_BH for each bucket. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6f67c817fc
commit
f2bf415cfe
2 changed files with 13 additions and 4 deletions
|
@ -164,7 +164,7 @@ DECLARE_SNMP_STAT(struct linux_mib, net_statistics);
|
|||
#define NET_INC_STATS(net, field) do { (void)net; SNMP_INC_STATS(net_statistics, field); } while (0)
|
||||
#define NET_INC_STATS_BH(net, field) do { (void)net; SNMP_INC_STATS_BH(net_statistics, field); } while (0)
|
||||
#define NET_INC_STATS_USER(net, field) do { (void)net; SNMP_INC_STATS_USER(net_statistics, field); } while (0)
|
||||
#define NET_ADD_STATS_BH(field, adnd) SNMP_ADD_STATS_BH(net_statistics, field, adnd)
|
||||
#define NET_ADD_STATS_BH(net, field, adnd) do { (void)net; SNMP_ADD_STATS_BH(net_statistics, field, adnd); } while (0)
|
||||
#define NET_ADD_STATS_USER(field, adnd) SNMP_ADD_STATS_USER(net_statistics, field, adnd)
|
||||
|
||||
extern unsigned long snmp_fold_field(void *mib[], int offt);
|
||||
|
|
|
@ -160,6 +160,9 @@ static int inet_twdr_do_twkill_work(struct inet_timewait_death_row *twdr,
|
|||
__inet_twsk_del_dead_node(tw);
|
||||
spin_unlock(&twdr->death_lock);
|
||||
__inet_twsk_kill(tw, twdr->hashinfo);
|
||||
#ifdef CONFIG_NET_NS
|
||||
NET_INC_STATS_BH(twsk_net(tw), LINUX_MIB_TIMEWAITED);
|
||||
#endif
|
||||
inet_twsk_put(tw);
|
||||
killed++;
|
||||
spin_lock(&twdr->death_lock);
|
||||
|
@ -178,8 +181,9 @@ static int inet_twdr_do_twkill_work(struct inet_timewait_death_row *twdr,
|
|||
}
|
||||
|
||||
twdr->tw_count -= killed;
|
||||
NET_ADD_STATS_BH(LINUX_MIB_TIMEWAITED, killed);
|
||||
|
||||
#ifndef CONFIG_NET_NS
|
||||
NET_ADD_STATS_BH(&init_net, LINUX_MIB_TIMEWAITED, killed);
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -372,6 +376,9 @@ void inet_twdr_twcal_tick(unsigned long data)
|
|||
&twdr->twcal_row[slot]) {
|
||||
__inet_twsk_del_dead_node(tw);
|
||||
__inet_twsk_kill(tw, twdr->hashinfo);
|
||||
#ifdef CONFIG_NET_NS
|
||||
NET_INC_STATS_BH(twsk_net(tw), LINUX_MIB_TIMEWAITKILLED);
|
||||
#endif
|
||||
inet_twsk_put(tw);
|
||||
killed++;
|
||||
}
|
||||
|
@ -395,7 +402,9 @@ void inet_twdr_twcal_tick(unsigned long data)
|
|||
out:
|
||||
if ((twdr->tw_count -= killed) == 0)
|
||||
del_timer(&twdr->tw_timer);
|
||||
NET_ADD_STATS_BH(LINUX_MIB_TIMEWAITKILLED, killed);
|
||||
#ifndef CONFIG_NET_NS
|
||||
NET_ADD_STATS_BH(&init_net, LINUX_MIB_TIMEWAITKILLED, killed);
|
||||
#endif
|
||||
spin_unlock(&twdr->death_lock);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue