diff options
author | Sven Wegener <sven.wegener@stealer.net> | 2008-08-13 18:47:16 -0400 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2008-08-14 19:26:15 -0400 |
commit | a919cf4b6b499416b6e2247dbc79196c4325f2e6 (patch) | |
tree | 07125d10469cb9d2779280a0f389848b5e045b5a /include/net/ip_vs.h | |
parent | 82dfb6f32219d8e6cf6b979a520cb2b11d977d4e (diff) |
ipvs: Create init functions for estimator code
Commit 8ab19ea36c5c5340ff598e4d15fc084eb65671dc ("ipvs: Fix possible deadlock
in estimator code") fixed a deadlock condition, but that condition can only
happen during unload of IPVS, because during normal operation there is at least
our global stats structure in the estimator list. The mod_timer() and
del_timer_sync() calls are actually initialization and cleanup code in
disguise. Let's make it explicit and move them to their own init and cleanup
function.
Signed-off-by: Sven Wegener <sven.wegener@stealer.net>
Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'include/net/ip_vs.h')
-rw-r--r-- | include/net/ip_vs.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h index 7312c3dd309f..a25ad243031d 100644 --- a/include/net/ip_vs.h +++ b/include/net/ip_vs.h | |||
@@ -683,6 +683,8 @@ extern void ip_vs_sync_conn(struct ip_vs_conn *cp); | |||
683 | /* | 683 | /* |
684 | * IPVS rate estimator prototypes (from ip_vs_est.c) | 684 | * IPVS rate estimator prototypes (from ip_vs_est.c) |
685 | */ | 685 | */ |
686 | extern int ip_vs_estimator_init(void); | ||
687 | extern void ip_vs_estimator_cleanup(void); | ||
686 | extern void ip_vs_new_estimator(struct ip_vs_stats *stats); | 688 | extern void ip_vs_new_estimator(struct ip_vs_stats *stats); |
687 | extern void ip_vs_kill_estimator(struct ip_vs_stats *stats); | 689 | extern void ip_vs_kill_estimator(struct ip_vs_stats *stats); |
688 | extern void ip_vs_zero_estimator(struct ip_vs_stats *stats); | 690 | extern void ip_vs_zero_estimator(struct ip_vs_stats *stats); |