* [GIT] Please pull updates for IPVS
@ 2008-08-11 21:46 Sven Wegener
2008-08-12 1:10 ` David Miller
0 siblings, 1 reply; 20+ messages in thread
From: Sven Wegener @ 2008-08-11 21:46 UTC (permalink / raw)
To: davem; +Cc: lvs-devel, netdev, horms
Hi Dave,
I have a couple of updates for IPVS pending. The patches have been
posted to the mailing-list and acked by Simon Horman, so I thought it's
ok to send you a pull request for them, if that's ok with you.
Mostly trivial cleanups. Two potential deadlock fixes, one introduced by
my last sync daemon changes and one in the estimator code, which is
going back for years. The other estimator change is the biggest one. If
you have an issue with something, just holler and I'll get on it. I'll
append an overall diff as it's not that big.
Thanks!
The following changes since commit 8123b421e8ed944671d7241323ed3198cccb4041:
David S. Miller (1):
pkt_sched: Fix ingress deletion and filter attachment.
are available in the git repository at:
git://git.stealer.net/linux-2.6.git stealer/ipvs/for-davem
Simon Horman (1):
ipvs: Explictly clear ip_vs_stats members
Sven Wegener (9):
ipvs: Fix possible deadlock in sync code
ipvs: Fix possible deadlock in estimator code
ipvs: Use ARRAY_SIZE()
ipvs: Use list_empty() instead of open-coding the same functionality
ipvs: Initialize schedulers' struct list_head at compile time
ipvs: Annotate init functions with __init
ipvs: Mark net_vs_ctl_path const
ipvs: Embed estimator object into stats object
ipvs: No need to zero out ip_vs_stats during initialization
include/net/ip_vs.h | 32 ++++++++++--
net/ipv4/ipvs/ip_vs_app.c | 2 +-
net/ipv4/ipvs/ip_vs_conn.c | 2 +-
net/ipv4/ipvs/ip_vs_ctl.c | 27 +++++++---
net/ipv4/ipvs/ip_vs_dh.c | 2 +-
net/ipv4/ipvs/ip_vs_est.c | 116 ++++++++++++++----------------------------
net/ipv4/ipvs/ip_vs_lblc.c | 2 +-
net/ipv4/ipvs/ip_vs_lblcr.c | 2 +-
net/ipv4/ipvs/ip_vs_lc.c | 2 +-
net/ipv4/ipvs/ip_vs_nq.c | 2 +-
net/ipv4/ipvs/ip_vs_proto.c | 4 +-
net/ipv4/ipvs/ip_vs_rr.c | 2 +-
net/ipv4/ipvs/ip_vs_sched.c | 4 +-
net/ipv4/ipvs/ip_vs_sed.c | 2 +-
net/ipv4/ipvs/ip_vs_sh.c | 2 +-
net/ipv4/ipvs/ip_vs_sync.c | 4 +-
net/ipv4/ipvs/ip_vs_wlc.c | 2 +-
net/ipv4/ipvs/ip_vs_wrr.c | 2 +-
18 files changed, 105 insertions(+), 106 deletions(-)
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
index cbb59eb..7312c3d 100644
--- a/include/net/ip_vs.h
+++ b/include/net/ip_vs.h
@@ -140,8 +140,24 @@ struct ip_vs_seq {
/*
- * IPVS statistics object
+ * IPVS statistics objects
*/
+struct ip_vs_estimator {
+ struct list_head list;
+
+ u64 last_inbytes;
+ u64 last_outbytes;
+ u32 last_conns;
+ u32 last_inpkts;
+ u32 last_outpkts;
+
+ u32 cps;
+ u32 inpps;
+ u32 outpps;
+ u32 inbps;
+ u32 outbps;
+};
+
struct ip_vs_stats
{
__u32 conns; /* connections scheduled */
@@ -156,7 +172,15 @@ struct ip_vs_stats
__u32 inbps; /* current in byte rate */
__u32 outbps; /* current out byte rate */
+ /*
+ * Don't add anything before the lock, because we use memcpy() to copy
+ * the members before the lock to struct ip_vs_stats_user in
+ * ip_vs_ctl.c.
+ */
+
spinlock_t lock; /* spin lock */
+
+ struct ip_vs_estimator est; /* estimator */
};
struct dst_entry;
@@ -440,7 +464,7 @@ struct ip_vs_app
*/
extern const char *ip_vs_proto_name(unsigned proto);
extern void ip_vs_init_hash_table(struct list_head *table, int rows);
-#define IP_VS_INIT_HASH_TABLE(t) ip_vs_init_hash_table(t, sizeof(t)/sizeof(t[0]))
+#define IP_VS_INIT_HASH_TABLE(t) ip_vs_init_hash_table((t), ARRAY_SIZE((t)))
#define IP_VS_APP_TYPE_FTP 1
@@ -620,7 +644,7 @@ extern int sysctl_ip_vs_expire_quiescent_template;
extern int sysctl_ip_vs_sync_threshold[2];
extern int sysctl_ip_vs_nat_icmp_send;
extern struct ip_vs_stats ip_vs_stats;
-extern struct ctl_path net_vs_ctl_path[];
+extern const struct ctl_path net_vs_ctl_path[];
extern struct ip_vs_service *
ip_vs_service_get(__u32 fwmark, __u16 protocol, __be32 vaddr, __be16 vport);
@@ -659,7 +683,7 @@ extern void ip_vs_sync_conn(struct ip_vs_conn *cp);
/*
* IPVS rate estimator prototypes (from ip_vs_est.c)
*/
-extern int ip_vs_new_estimator(struct ip_vs_stats *stats);
+extern void ip_vs_new_estimator(struct ip_vs_stats *stats);
extern void ip_vs_kill_estimator(struct ip_vs_stats *stats);
extern void ip_vs_zero_estimator(struct ip_vs_stats *stats);
diff --git a/net/ipv4/ipvs/ip_vs_app.c b/net/ipv4/ipvs/ip_vs_app.c
index 1f1897a..201b8ea 100644
--- a/net/ipv4/ipvs/ip_vs_app.c
+++ b/net/ipv4/ipvs/ip_vs_app.c
@@ -608,7 +608,7 @@ int ip_vs_skb_replace(struct sk_buff *skb, gfp_t pri,
}
-int ip_vs_app_init(void)
+int __init ip_vs_app_init(void)
{
/* we will replace it with proc_net_ipvs_create() soon */
proc_net_fops_create(&init_net, "ip_vs_app", 0, &ip_vs_app_fops);
diff --git a/net/ipv4/ipvs/ip_vs_conn.c b/net/ipv4/ipvs/ip_vs_conn.c
index f8bdae4..44a6872 100644
--- a/net/ipv4/ipvs/ip_vs_conn.c
+++ b/net/ipv4/ipvs/ip_vs_conn.c
@@ -965,7 +965,7 @@ static void ip_vs_conn_flush(void)
}
-int ip_vs_conn_init(void)
+int __init ip_vs_conn_init(void)
{
int idx;
diff --git a/net/ipv4/ipvs/ip_vs_ctl.c b/net/ipv4/ipvs/ip_vs_ctl.c
index 9a5ace0..6379705 100644
--- a/net/ipv4/ipvs/ip_vs_ctl.c
+++ b/net/ipv4/ipvs/ip_vs_ctl.c
@@ -683,9 +683,22 @@ static void
ip_vs_zero_stats(struct ip_vs_stats *stats)
{
spin_lock_bh(&stats->lock);
- memset(stats, 0, (char *)&stats->lock - (char *)stats);
- spin_unlock_bh(&stats->lock);
+
+ stats->conns = 0;
+ stats->inpkts = 0;
+ stats->outpkts = 0;
+ stats->inbytes = 0;
+ stats->outbytes = 0;
+
+ stats->cps = 0;
+ stats->inpps = 0;
+ stats->outpps = 0;
+ stats->inbps = 0;
+ stats->outbps = 0;
+
ip_vs_zero_estimator(stats);
+
+ spin_unlock_bh(&stats->lock);
}
/*
@@ -1589,7 +1602,7 @@ static struct ctl_table vs_vars[] = {
{ .ctl_name = 0 }
};
-struct ctl_path net_vs_ctl_path[] = {
+const struct ctl_path net_vs_ctl_path[] = {
{ .procname = "net", .ctl_name = CTL_NET, },
{ .procname = "ipv4", .ctl_name = NET_IPV4, },
{ .procname = "vs", },
@@ -1784,7 +1797,9 @@ static const struct file_operations ip_vs_info_fops = {
#endif
-struct ip_vs_stats ip_vs_stats;
+struct ip_vs_stats ip_vs_stats = {
+ .lock = __SPIN_LOCK_UNLOCKED(ip_vs_stats.lock),
+};
#ifdef CONFIG_PROC_FS
static int ip_vs_stats_show(struct seq_file *seq, void *v)
@@ -2306,7 +2321,7 @@ static struct nf_sockopt_ops ip_vs_sockopts = {
};
-int ip_vs_control_init(void)
+int __init ip_vs_control_init(void)
{
int ret;
int idx;
@@ -2333,8 +2348,6 @@ int ip_vs_control_init(void)
INIT_LIST_HEAD(&ip_vs_rtable[idx]);
}
- memset(&ip_vs_stats, 0, sizeof(ip_vs_stats));
- spin_lock_init(&ip_vs_stats.lock);
ip_vs_new_estimator(&ip_vs_stats);
/* Hook the defense timer */
diff --git a/net/ipv4/ipvs/ip_vs_dh.c b/net/ipv4/ipvs/ip_vs_dh.c
index 8afc150..fa66824 100644
--- a/net/ipv4/ipvs/ip_vs_dh.c
+++ b/net/ipv4/ipvs/ip_vs_dh.c
@@ -233,6 +233,7 @@ static struct ip_vs_scheduler ip_vs_dh_scheduler =
.name = "dh",
.refcnt = ATOMIC_INIT(0),
.module = THIS_MODULE,
+ .n_list = LIST_HEAD_INIT(ip_vs_dh_scheduler.n_list),
.init_service = ip_vs_dh_init_svc,
.done_service = ip_vs_dh_done_svc,
.update_service = ip_vs_dh_update_svc,
@@ -242,7 +243,6 @@ static struct ip_vs_scheduler ip_vs_dh_scheduler =
static int __init ip_vs_dh_init(void)
{
- INIT_LIST_HEAD(&ip_vs_dh_scheduler.n_list);
return register_ip_vs_scheduler(&ip_vs_dh_scheduler);
}
diff --git a/net/ipv4/ipvs/ip_vs_est.c b/net/ipv4/ipvs/ip_vs_est.c
index bc04eed..5a20f93 100644
--- a/net/ipv4/ipvs/ip_vs_est.c
+++ b/net/ipv4/ipvs/ip_vs_est.c
@@ -17,6 +17,7 @@
#include <linux/types.h>
#include <linux/interrupt.h>
#include <linux/sysctl.h>
+#include <linux/list.h>
#include <net/ip_vs.h>
@@ -44,28 +45,11 @@
*/
-struct ip_vs_estimator
-{
- struct ip_vs_estimator *next;
- struct ip_vs_stats *stats;
-
- u32 last_conns;
- u32 last_inpkts;
- u32 last_outpkts;
- u64 last_inbytes;
- u64 last_outbytes;
-
- u32 cps;
- u32 inpps;
- u32 outpps;
- u32 inbps;
- u32 outbps;
-};
-
+static void estimation_timer(unsigned long arg);
-static struct ip_vs_estimator *est_list = NULL;
-static DEFINE_RWLOCK(est_lock);
-static struct timer_list est_timer;
+static LIST_HEAD(est_list);
+static DEFINE_SPINLOCK(est_lock);
+static DEFINE_TIMER(est_timer, estimation_timer, 0, 0);
static void estimation_timer(unsigned long arg)
{
@@ -76,9 +60,9 @@ static void estimation_timer(unsigned long arg)
u64 n_inbytes, n_outbytes;
u32 rate;
- read_lock(&est_lock);
- for (e = est_list; e; e = e->next) {
- s = e->stats;
+ spin_lock(&est_lock);
+ list_for_each_entry(e, &est_list, list) {
+ s = container_of(e, struct ip_vs_stats, est);
spin_lock(&s->lock);
n_conns = s->conns;
@@ -114,19 +98,16 @@ static void estimation_timer(unsigned long arg)
s->outbps = (e->outbps+0xF)>>5;
spin_unlock(&s->lock);
}
- read_unlock(&est_lock);
+ spin_unlock(&est_lock);
mod_timer(&est_timer, jiffies + 2*HZ);
}
-int ip_vs_new_estimator(struct ip_vs_stats *stats)
+void ip_vs_new_estimator(struct ip_vs_stats *stats)
{
- struct ip_vs_estimator *est;
+ struct ip_vs_estimator *est = &stats->est;
- est = kzalloc(sizeof(*est), GFP_KERNEL);
- if (est == NULL)
- return -ENOMEM;
+ INIT_LIST_HEAD(&est->list);
- est->stats = stats;
est->last_conns = stats->conns;
est->cps = stats->cps<<10;
@@ -142,59 +123,40 @@ int ip_vs_new_estimator(struct ip_vs_stats *stats)
est->last_outbytes = stats->outbytes;
est->outbps = stats->outbps<<5;
- write_lock_bh(&est_lock);
- est->next = est_list;
- if (est->next == NULL) {
- setup_timer(&est_timer, estimation_timer, 0);
- est_timer.expires = jiffies + 2*HZ;
- add_timer(&est_timer);
- }
- est_list = est;
- write_unlock_bh(&est_lock);
- return 0;
+ spin_lock_bh(&est_lock);
+ if (list_empty(&est_list))
+ mod_timer(&est_timer, jiffies + 2 * HZ);
+ list_add(&est->list, &est_list);
+ spin_unlock_bh(&est_lock);
}
void ip_vs_kill_estimator(struct ip_vs_stats *stats)
{
- struct ip_vs_estimator *est, **pest;
- int killed = 0;
-
- write_lock_bh(&est_lock);
- pest = &est_list;
- while ((est=*pest) != NULL) {
- if (est->stats != stats) {
- pest = &est->next;
- continue;
- }
- *pest = est->next;
- kfree(est);
- killed++;
+ struct ip_vs_estimator *est = &stats->est;
+
+ spin_lock_bh(&est_lock);
+ list_del(&est->list);
+ while (list_empty(&est_list) && try_to_del_timer_sync(&est_timer) < 0) {
+ spin_unlock_bh(&est_lock);
+ cpu_relax();
+ spin_lock_bh(&est_lock);
}
- if (killed && est_list == NULL)
- del_timer_sync(&est_timer);
- write_unlock_bh(&est_lock);
+ spin_unlock_bh(&est_lock);
}
void ip_vs_zero_estimator(struct ip_vs_stats *stats)
{
- struct ip_vs_estimator *e;
-
- write_lock_bh(&est_lock);
- for (e = est_list; e; e = e->next) {
- if (e->stats != stats)
- continue;
-
- /* set counters zero */
- e->last_conns = 0;
- e->last_inpkts = 0;
- e->last_outpkts = 0;
- e->last_inbytes = 0;
- e->last_outbytes = 0;
- e->cps = 0;
- e->inpps = 0;
- e->outpps = 0;
- e->inbps = 0;
- e->outbps = 0;
- }
- write_unlock_bh(&est_lock);
+ struct ip_vs_estimator *est = &stats->est;
+
+ /* set counters zero, caller must hold the stats->lock lock */
+ est->last_inbytes = 0;
+ est->last_outbytes = 0;
+ est->last_conns = 0;
+ est->last_inpkts = 0;
+ est->last_outpkts = 0;
+ est->cps = 0;
+ est->inpps = 0;
+ est->outpps = 0;
+ est->inbps = 0;
+ est->outbps = 0;
}
diff --git a/net/ipv4/ipvs/ip_vs_lblc.c b/net/ipv4/ipvs/ip_vs_lblc.c
index 0efa3db..7a6a319 100644
--- a/net/ipv4/ipvs/ip_vs_lblc.c
+++ b/net/ipv4/ipvs/ip_vs_lblc.c
@@ -539,6 +539,7 @@ static struct ip_vs_scheduler ip_vs_lblc_scheduler =
.name = "lblc",
.refcnt = ATOMIC_INIT(0),
.module = THIS_MODULE,
+ .n_list = LIST_HEAD_INIT(ip_vs_lblc_scheduler.n_list),
.init_service = ip_vs_lblc_init_svc,
.done_service = ip_vs_lblc_done_svc,
.update_service = ip_vs_lblc_update_svc,
@@ -550,7 +551,6 @@ static int __init ip_vs_lblc_init(void)
{
int ret;
- INIT_LIST_HEAD(&ip_vs_lblc_scheduler.n_list);
sysctl_header = register_sysctl_paths(net_vs_ctl_path, vs_vars_table);
ret = register_ip_vs_scheduler(&ip_vs_lblc_scheduler);
if (ret)
diff --git a/net/ipv4/ipvs/ip_vs_lblcr.c b/net/ipv4/ipvs/ip_vs_lblcr.c
index 8e3bbeb..c234e73 100644
--- a/net/ipv4/ipvs/ip_vs_lblcr.c
+++ b/net/ipv4/ipvs/ip_vs_lblcr.c
@@ -728,6 +728,7 @@ static struct ip_vs_scheduler ip_vs_lblcr_scheduler =
.name = "lblcr",
.refcnt = ATOMIC_INIT(0),
.module = THIS_MODULE,
+ .n_list = LIST_HEAD_INIT(ip_vs_lblcr_scheduler.n_list),
.init_service = ip_vs_lblcr_init_svc,
.done_service = ip_vs_lblcr_done_svc,
.update_service = ip_vs_lblcr_update_svc,
@@ -739,7 +740,6 @@ static int __init ip_vs_lblcr_init(void)
{
int ret;
- INIT_LIST_HEAD(&ip_vs_lblcr_scheduler.n_list);
sysctl_header = register_sysctl_paths(net_vs_ctl_path, vs_vars_table);
ret = register_ip_vs_scheduler(&ip_vs_lblcr_scheduler);
if (ret)
diff --git a/net/ipv4/ipvs/ip_vs_lc.c b/net/ipv4/ipvs/ip_vs_lc.c
index ac9f08e..ebcdbf7 100644
--- a/net/ipv4/ipvs/ip_vs_lc.c
+++ b/net/ipv4/ipvs/ip_vs_lc.c
@@ -98,6 +98,7 @@ static struct ip_vs_scheduler ip_vs_lc_scheduler = {
.name = "lc",
.refcnt = ATOMIC_INIT(0),
.module = THIS_MODULE,
+ .n_list = LIST_HEAD_INIT(ip_vs_lc_scheduler.n_list),
.init_service = ip_vs_lc_init_svc,
.done_service = ip_vs_lc_done_svc,
.update_service = ip_vs_lc_update_svc,
@@ -107,7 +108,6 @@ static struct ip_vs_scheduler ip_vs_lc_scheduler = {
static int __init ip_vs_lc_init(void)
{
- INIT_LIST_HEAD(&ip_vs_lc_scheduler.n_list);
return register_ip_vs_scheduler(&ip_vs_lc_scheduler) ;
}
diff --git a/net/ipv4/ipvs/ip_vs_nq.c b/net/ipv4/ipvs/ip_vs_nq.c
index a46bf25..92f3a67 100644
--- a/net/ipv4/ipvs/ip_vs_nq.c
+++ b/net/ipv4/ipvs/ip_vs_nq.c
@@ -136,6 +136,7 @@ static struct ip_vs_scheduler ip_vs_nq_scheduler =
.name = "nq",
.refcnt = ATOMIC_INIT(0),
.module = THIS_MODULE,
+ .n_list = LIST_HEAD_INIT(ip_vs_nq_scheduler.n_list),
.init_service = ip_vs_nq_init_svc,
.done_service = ip_vs_nq_done_svc,
.update_service = ip_vs_nq_update_svc,
@@ -145,7 +146,6 @@ static struct ip_vs_scheduler ip_vs_nq_scheduler =
static int __init ip_vs_nq_init(void)
{
- INIT_LIST_HEAD(&ip_vs_nq_scheduler.n_list);
return register_ip_vs_scheduler(&ip_vs_nq_scheduler);
}
diff --git a/net/ipv4/ipvs/ip_vs_proto.c b/net/ipv4/ipvs/ip_vs_proto.c
index 876714f..6099a88 100644
--- a/net/ipv4/ipvs/ip_vs_proto.c
+++ b/net/ipv4/ipvs/ip_vs_proto.c
@@ -43,7 +43,7 @@ static struct ip_vs_protocol *ip_vs_proto_table[IP_VS_PROTO_TAB_SIZE];
/*
* register an ipvs protocol
*/
-static int __used register_ip_vs_protocol(struct ip_vs_protocol *pp)
+static int __used __init register_ip_vs_protocol(struct ip_vs_protocol *pp)
{
unsigned hash = IP_VS_PROTO_HASH(pp->protocol);
@@ -190,7 +190,7 @@ ip_vs_tcpudp_debug_packet(struct ip_vs_protocol *pp,
}
-int ip_vs_protocol_init(void)
+int __init ip_vs_protocol_init(void)
{
char protocols[64];
#define REGISTER_PROTOCOL(p) \
diff --git a/net/ipv4/ipvs/ip_vs_rr.c b/net/ipv4/ipvs/ip_vs_rr.c
index c8db12d..358110d 100644
--- a/net/ipv4/ipvs/ip_vs_rr.c
+++ b/net/ipv4/ipvs/ip_vs_rr.c
@@ -94,6 +94,7 @@ static struct ip_vs_scheduler ip_vs_rr_scheduler = {
.name = "rr", /* name */
.refcnt = ATOMIC_INIT(0),
.module = THIS_MODULE,
+ .n_list = LIST_HEAD_INIT(ip_vs_rr_scheduler.n_list),
.init_service = ip_vs_rr_init_svc,
.done_service = ip_vs_rr_done_svc,
.update_service = ip_vs_rr_update_svc,
@@ -102,7 +103,6 @@ static struct ip_vs_scheduler ip_vs_rr_scheduler = {
static int __init ip_vs_rr_init(void)
{
- INIT_LIST_HEAD(&ip_vs_rr_scheduler.n_list);
return register_ip_vs_scheduler(&ip_vs_rr_scheduler);
}
diff --git a/net/ipv4/ipvs/ip_vs_sched.c b/net/ipv4/ipvs/ip_vs_sched.c
index b647673..a46ad9e 100644
--- a/net/ipv4/ipvs/ip_vs_sched.c
+++ b/net/ipv4/ipvs/ip_vs_sched.c
@@ -184,7 +184,7 @@ int register_ip_vs_scheduler(struct ip_vs_scheduler *scheduler)
write_lock_bh(&__ip_vs_sched_lock);
- if (scheduler->n_list.next != &scheduler->n_list) {
+ if (!list_empty(&scheduler->n_list)) {
write_unlock_bh(&__ip_vs_sched_lock);
ip_vs_use_count_dec();
IP_VS_ERR("register_ip_vs_scheduler(): [%s] scheduler "
@@ -229,7 +229,7 @@ int unregister_ip_vs_scheduler(struct ip_vs_scheduler *scheduler)
}
write_lock_bh(&__ip_vs_sched_lock);
- if (scheduler->n_list.next == &scheduler->n_list) {
+ if (list_empty(&scheduler->n_list)) {
write_unlock_bh(&__ip_vs_sched_lock);
IP_VS_ERR("unregister_ip_vs_scheduler(): [%s] scheduler "
"is not in the list. failed\n", scheduler->name);
diff --git a/net/ipv4/ipvs/ip_vs_sed.c b/net/ipv4/ipvs/ip_vs_sed.c
index 2a7d313..77663d8 100644
--- a/net/ipv4/ipvs/ip_vs_sed.c
+++ b/net/ipv4/ipvs/ip_vs_sed.c
@@ -138,6 +138,7 @@ static struct ip_vs_scheduler ip_vs_sed_scheduler =
.name = "sed",
.refcnt = ATOMIC_INIT(0),
.module = THIS_MODULE,
+ .n_list = LIST_HEAD_INIT(ip_vs_sed_scheduler.n_list),
.init_service = ip_vs_sed_init_svc,
.done_service = ip_vs_sed_done_svc,
.update_service = ip_vs_sed_update_svc,
@@ -147,7 +148,6 @@ static struct ip_vs_scheduler ip_vs_sed_scheduler =
static int __init ip_vs_sed_init(void)
{
- INIT_LIST_HEAD(&ip_vs_sed_scheduler.n_list);
return register_ip_vs_scheduler(&ip_vs_sed_scheduler);
}
diff --git a/net/ipv4/ipvs/ip_vs_sh.c b/net/ipv4/ipvs/ip_vs_sh.c
index b8fdfac..7b979e2 100644
--- a/net/ipv4/ipvs/ip_vs_sh.c
+++ b/net/ipv4/ipvs/ip_vs_sh.c
@@ -230,6 +230,7 @@ static struct ip_vs_scheduler ip_vs_sh_scheduler =
.name = "sh",
.refcnt = ATOMIC_INIT(0),
.module = THIS_MODULE,
+ .n_list = LIST_HEAD_INIT(ip_vs_sh_scheduler.n_list),
.init_service = ip_vs_sh_init_svc,
.done_service = ip_vs_sh_done_svc,
.update_service = ip_vs_sh_update_svc,
@@ -239,7 +240,6 @@ static struct ip_vs_scheduler ip_vs_sh_scheduler =
static int __init ip_vs_sh_init(void)
{
- INIT_LIST_HEAD(&ip_vs_sh_scheduler.n_list);
return register_ip_vs_scheduler(&ip_vs_sh_scheduler);
}
diff --git a/net/ipv4/ipvs/ip_vs_sync.c b/net/ipv4/ipvs/ip_vs_sync.c
index 45e9bd9..a652da2 100644
--- a/net/ipv4/ipvs/ip_vs_sync.c
+++ b/net/ipv4/ipvs/ip_vs_sync.c
@@ -904,9 +904,9 @@ int stop_sync_thread(int state)
* progress of stopping the master sync daemon.
*/
- spin_lock(&ip_vs_sync_lock);
+ spin_lock_bh(&ip_vs_sync_lock);
ip_vs_sync_state &= ~IP_VS_STATE_MASTER;
- spin_unlock(&ip_vs_sync_lock);
+ spin_unlock_bh(&ip_vs_sync_lock);
kthread_stop(sync_master_thread);
sync_master_thread = NULL;
} else if (state == IP_VS_STATE_BACKUP) {
diff --git a/net/ipv4/ipvs/ip_vs_wlc.c b/net/ipv4/ipvs/ip_vs_wlc.c
index 772c3cb..9b0ef86 100644
--- a/net/ipv4/ipvs/ip_vs_wlc.c
+++ b/net/ipv4/ipvs/ip_vs_wlc.c
@@ -126,6 +126,7 @@ static struct ip_vs_scheduler ip_vs_wlc_scheduler =
.name = "wlc",
.refcnt = ATOMIC_INIT(0),
.module = THIS_MODULE,
+ .n_list = LIST_HEAD_INIT(ip_vs_wlc_scheduler.n_list),
.init_service = ip_vs_wlc_init_svc,
.done_service = ip_vs_wlc_done_svc,
.update_service = ip_vs_wlc_update_svc,
@@ -135,7 +136,6 @@ static struct ip_vs_scheduler ip_vs_wlc_scheduler =
static int __init ip_vs_wlc_init(void)
{
- INIT_LIST_HEAD(&ip_vs_wlc_scheduler.n_list);
return register_ip_vs_scheduler(&ip_vs_wlc_scheduler);
}
diff --git a/net/ipv4/ipvs/ip_vs_wrr.c b/net/ipv4/ipvs/ip_vs_wrr.c
index 1d6932d..0d86a79 100644
--- a/net/ipv4/ipvs/ip_vs_wrr.c
+++ b/net/ipv4/ipvs/ip_vs_wrr.c
@@ -212,6 +212,7 @@ static struct ip_vs_scheduler ip_vs_wrr_scheduler = {
.name = "wrr",
.refcnt = ATOMIC_INIT(0),
.module = THIS_MODULE,
+ .n_list = LIST_HEAD_INIT(ip_vs_wrr_scheduler.n_list),
.init_service = ip_vs_wrr_init_svc,
.done_service = ip_vs_wrr_done_svc,
.update_service = ip_vs_wrr_update_svc,
@@ -220,7 +221,6 @@ static struct ip_vs_scheduler ip_vs_wrr_scheduler = {
static int __init ip_vs_wrr_init(void)
{
- INIT_LIST_HEAD(&ip_vs_wrr_scheduler.n_list);
return register_ip_vs_scheduler(&ip_vs_wrr_scheduler) ;
}
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-08-11 21:46 Sven Wegener
@ 2008-08-12 1:10 ` David Miller
0 siblings, 0 replies; 20+ messages in thread
From: David Miller @ 2008-08-12 1:10 UTC (permalink / raw)
To: sven.wegener; +Cc: lvs-devel, netdev, horms
From: Sven Wegener <sven.wegener@stealer.net>
Date: Mon, 11 Aug 2008 23:46:50 +0200 (CEST)
> I have a couple of updates for IPVS pending. The patches have been
> posted to the mailing-list and acked by Simon Horman, so I thought it's
> ok to send you a pull request for them, if that's ok with you.
>
> Mostly trivial cleanups. Two potential deadlock fixes, one introduced by
> my last sync daemon changes and one in the estimator code, which is
> going back for years. The other estimator change is the biggest one. If
> you have an issue with something, just holler and I'll get on it. I'll
> append an overall diff as it's not that big.
Pulled, thanks a lot Sven.
^ permalink raw reply [flat|nested] 20+ messages in thread
* [GIT] Please pull updates for IPVS
@ 2008-08-15 0:12 Simon Horman
2008-08-15 0:25 ` David Miller
2008-08-27 5:33 ` Simon Horman
0 siblings, 2 replies; 20+ messages in thread
From: Simon Horman @ 2008-08-15 0:12 UTC (permalink / raw)
To: lvs-devel, netdev
Cc: David Miller, Sven Wegener, Julius Volz, Wensong Zhang,
Julian Anastasov
Hi Dave,
I have pulled together the handful of unmerged but agreed to
IPVS patches that are floating around.
Julius, Sven and I would particularly like Julius' two changes to go
in. They add a new interface which is currently unused and thus the
likelihood of breakage seems low.
The other changes are clean ups.
The following changes since commit 0eb8b1fe9238ca4c1797e4c105d5790abda1726f:
Michael Chan (1):
bnx2: Update version to 1.8.0.
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-2.6.git master
Julius Volz (2):
IPVS: Add genetlink interface definitions to ip_vs.h
IPVS: Add genetlink interface implementation
Simon Horman (1):
ipvs: rename __ip_vs_wlc_schedule in lblc and lblcr schedulers
Sven Wegener (2):
ipvs: Only call init_service, update_service and done_service for schedulers if defined
ipvs: Create init functions for estimator code
include/linux/ip_vs.h | 160 ++++++++
include/net/ip_vs.h | 2 +
net/ipv4/ipvs/ip_vs_core.c | 8 +-
net/ipv4/ipvs/ip_vs_ctl.c | 896 ++++++++++++++++++++++++++++++++++++++++++-
net/ipv4/ipvs/ip_vs_est.c | 18 +-
net/ipv4/ipvs/ip_vs_lblc.c | 13 +-
net/ipv4/ipvs/ip_vs_lblcr.c | 13 +-
net/ipv4/ipvs/ip_vs_lc.c | 21 -
net/ipv4/ipvs/ip_vs_nq.c | 24 --
net/ipv4/ipvs/ip_vs_rr.c | 7 -
net/ipv4/ipvs/ip_vs_sed.c | 24 --
net/ipv4/ipvs/ip_vs_wlc.c | 24 --
12 files changed, 1072 insertions(+), 138 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-08-15 0:12 [GIT] Please pull updates for IPVS Simon Horman
@ 2008-08-15 0:25 ` David Miller
2008-08-15 1:02 ` Simon Horman
2008-08-27 5:33 ` Simon Horman
1 sibling, 1 reply; 20+ messages in thread
From: David Miller @ 2008-08-15 0:25 UTC (permalink / raw)
To: horms; +Cc: lvs-devel, netdev, sven.wegener, juliusv, wensong, ja
From: Simon Horman <horms@verge.net.au>
Date: Fri, 15 Aug 2008 10:12:52 +1000
> Julius, Sven and I would particularly like Julius' two changes to go
> in. They add a new interface which is currently unused and thus the
> likelihood of breakage seems low.
Actually these are the two changes that should not go in at this
time. This netlink stuff is a new feature, therefore not appropriate
to merge outside of the merge window.
Bug fixes only now, please.
Thanks.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-08-15 0:25 ` David Miller
@ 2008-08-15 1:02 ` Simon Horman
2008-08-15 6:09 ` Sven Wegener
2008-08-15 11:31 ` Julius Volz
0 siblings, 2 replies; 20+ messages in thread
From: Simon Horman @ 2008-08-15 1:02 UTC (permalink / raw)
To: David Miller; +Cc: lvs-devel, netdev, sven.wegener, juliusv, wensong, ja
On Thu, Aug 14, 2008 at 05:25:08PM -0700, David Miller wrote:
> From: Simon Horman <horms@verge.net.au>
> Date: Fri, 15 Aug 2008 10:12:52 +1000
>
> > Julius, Sven and I would particularly like Julius' two changes to go
> > in. They add a new interface which is currently unused and thus the
> > likelihood of breakage seems low.
>
> Actually these are the two changes that should not go in at this
> time. This netlink stuff is a new feature, therefore not appropriate
> to merge outside of the merge window.
>
> Bug fixes only now, please.
Hi Dave,
thanks for the clarification. In that case I believe that
all of these changes can wait.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-08-15 1:02 ` Simon Horman
@ 2008-08-15 6:09 ` Sven Wegener
2008-08-15 11:31 ` Julius Volz
1 sibling, 0 replies; 20+ messages in thread
From: Sven Wegener @ 2008-08-15 6:09 UTC (permalink / raw)
To: Simon Horman; +Cc: David Miller, lvs-devel, netdev, juliusv, wensong, ja
On Fri, 15 Aug 2008, Simon Horman wrote:
> On Thu, Aug 14, 2008 at 05:25:08PM -0700, David Miller wrote:
> > From: Simon Horman <horms@verge.net.au>
> > Date: Fri, 15 Aug 2008 10:12:52 +1000
> >
> > > Julius, Sven and I would particularly like Julius' two changes to go
> > > in. They add a new interface which is currently unused and thus the
> > > likelihood of breakage seems low.
> >
> > Actually these are the two changes that should not go in at this
> > time. This netlink stuff is a new feature, therefore not appropriate
> > to merge outside of the merge window.
> >
> > Bug fixes only now, please.
>
> thanks for the clarification. In that case I believe that
> all of these changes can wait.
We should get something cooked up for -next, so that we can push these
changes this way into wider testing. Having a place for -next might be
good in general, not for this case only.
Sven
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-08-15 1:02 ` Simon Horman
2008-08-15 6:09 ` Sven Wegener
@ 2008-08-15 11:31 ` Julius Volz
2008-08-15 21:18 ` David Miller
1 sibling, 1 reply; 20+ messages in thread
From: Julius Volz @ 2008-08-15 11:31 UTC (permalink / raw)
To: Simon Horman; +Cc: David Miller, lvs-devel, netdev, sven.wegener, wensong, ja
On Fri, Aug 15, 2008 at 3:02 AM, Simon Horman <horms@verge.net.au> wrote:
> On Thu, Aug 14, 2008 at 05:25:08PM -0700, David Miller wrote:
>> From: Simon Horman <horms@verge.net.au>
>> Date: Fri, 15 Aug 2008 10:12:52 +1000
>>
>> > Julius, Sven and I would particularly like Julius' two changes to go
>> > in. They add a new interface which is currently unused and thus the
>> > likelihood of breakage seems low.
>>
>> Actually these are the two changes that should not go in at this
>> time. This netlink stuff is a new feature, therefore not appropriate
>> to merge outside of the merge window.
>>
>> Bug fixes only now, please.
>
> Hi Dave,
>
> thanks for the clarification. In that case I believe that
> all of these changes can wait.
Ok, how does the process work? Do I send the patches again at a later
point or will they be pulled from your tree then?
Julius
--
Google Switzerland GmbH
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-08-15 11:31 ` Julius Volz
@ 2008-08-15 21:18 ` David Miller
2008-08-15 21:39 ` Julius Volz
2008-08-16 3:41 ` Simon Horman
0 siblings, 2 replies; 20+ messages in thread
From: David Miller @ 2008-08-15 21:18 UTC (permalink / raw)
To: juliusv; +Cc: horms, lvs-devel, netdev, sven.wegener, wensong, ja
From: "Julius Volz" <juliusv@google.com>
Date: Fri, 15 Aug 2008 13:31:59 +0200
> On Fri, Aug 15, 2008 at 3:02 AM, Simon Horman <horms@verge.net.au> wrote:
> > thanks for the clarification. In that case I believe that
> > all of these changes can wait.
>
> Ok, how does the process work? Do I send the patches again at a later
> point or will they be pulled from your tree then?
Simon can maintain a tree if he wants, and your feature patches can
go into there.
Later when I start accepting net-next-2.6 stuff, I can pull things in
from him.
Or Sven can maintain such a GIT tree, whoever wants to do it.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-08-15 21:18 ` David Miller
@ 2008-08-15 21:39 ` Julius Volz
2008-08-15 21:45 ` David Miller
2008-08-16 3:41 ` Simon Horman
1 sibling, 1 reply; 20+ messages in thread
From: Julius Volz @ 2008-08-15 21:39 UTC (permalink / raw)
To: David Miller; +Cc: horms, lvs-devel, netdev, sven.wegener, wensong, ja
On Fri, Aug 15, 2008 at 11:18 PM, David Miller <davem@davemloft.net> wrote:
> From: "Julius Volz" <juliusv@google.com>
> Date: Fri, 15 Aug 2008 13:31:59 +0200
>
>> On Fri, Aug 15, 2008 at 3:02 AM, Simon Horman <horms@verge.net.au> wrote:
>> > thanks for the clarification. In that case I believe that
>> > all of these changes can wait.
>>
>> Ok, how does the process work? Do I send the patches again at a later
>> point or will they be pulled from your tree then?
>
> Simon can maintain a tree if he wants, and your feature patches can
> go into there.
>
> Later when I start accepting net-next-2.6 stuff, I can pull things in
> from him.
>
> Or Sven can maintain such a GIT tree, whoever wants to do it.
Ok, thanks!
Sorry, I was not fully aware about the process and what may go in
when. From reading about it, it seems that after an -rc1, only bug
fixes are accepted until after the stable release. So I guess you only
start accepting net-next-2.6 stuff after the official stable release,
too?
Julius
--
Google Switzerland GmbH
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-08-15 21:39 ` Julius Volz
@ 2008-08-15 21:45 ` David Miller
2008-08-15 21:48 ` Julius Volz
0 siblings, 1 reply; 20+ messages in thread
From: David Miller @ 2008-08-15 21:45 UTC (permalink / raw)
To: juliusv; +Cc: horms, lvs-devel, netdev, sven.wegener, wensong, ja
From: "Julius Volz" <juliusv@google.com>
Date: Fri, 15 Aug 2008 23:39:15 +0200
> Sorry, I was not fully aware about the process and what may go in
> when. From reading about it, it seems that after an -rc1, only bug
> fixes are accepted until after the stable release. So I guess you only
> start accepting net-next-2.6 stuff after the official stable release,
> too?
I could start accepting things into my net-next-2.6 tree now, but I'd
rather people work on bug fixing for just a little bit longer.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-08-15 21:45 ` David Miller
@ 2008-08-15 21:48 ` Julius Volz
0 siblings, 0 replies; 20+ messages in thread
From: Julius Volz @ 2008-08-15 21:48 UTC (permalink / raw)
To: David Miller; +Cc: horms, lvs-devel, netdev, sven.wegener, wensong, ja
On Fri, Aug 15, 2008 at 11:45 PM, David Miller <davem@davemloft.net> wrote:
> From: "Julius Volz" <juliusv@google.com>
> Date: Fri, 15 Aug 2008 23:39:15 +0200
>
>> Sorry, I was not fully aware about the process and what may go in
>> when. From reading about it, it seems that after an -rc1, only bug
>> fixes are accepted until after the stable release. So I guess you only
>> start accepting net-next-2.6 stuff after the official stable release,
>> too?
>
> I could start accepting things into my net-next-2.6 tree now, but I'd
> rather people work on bug fixing for just a little bit longer.
Makes sense, thanks for the explanation!
Julius
--
Google Switzerland GmbH
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-08-15 21:18 ` David Miller
2008-08-15 21:39 ` Julius Volz
@ 2008-08-16 3:41 ` Simon Horman
1 sibling, 0 replies; 20+ messages in thread
From: Simon Horman @ 2008-08-16 3:41 UTC (permalink / raw)
To: David Miller; +Cc: juliusv, lvs-devel, netdev, sven.wegener, wensong, ja
On Fri, Aug 15, 2008 at 02:18:41PM -0700, David Miller wrote:
> From: "Julius Volz" <juliusv@google.com>
> Date: Fri, 15 Aug 2008 13:31:59 +0200
>
> > On Fri, Aug 15, 2008 at 3:02 AM, Simon Horman <horms@verge.net.au> wrote:
> > > thanks for the clarification. In that case I believe that
> > > all of these changes can wait.
> >
> > Ok, how does the process work? Do I send the patches again at a later
> > point or will they be pulled from your tree then?
>
> Simon can maintain a tree if he wants, and your feature patches can
> go into there.
I'd like to take a stab at maintaining a tree.
> Later when I start accepting net-next-2.6 stuff, I can pull things in
> from him.
>
> Or Sven can maintain such a GIT tree, whoever wants to do it.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-08-15 0:12 [GIT] Please pull updates for IPVS Simon Horman
2008-08-15 0:25 ` David Miller
@ 2008-08-27 5:33 ` Simon Horman
2008-08-27 12:13 ` David Miller
1 sibling, 1 reply; 20+ messages in thread
From: Simon Horman @ 2008-08-27 5:33 UTC (permalink / raw)
To: lvs-devel, netdev
Cc: David Miller, Sven Wegener, Julius Volz, Wensong Zhang,
Julian Anastasov
Hi Dave,
Please let me know if this is inappropriate or I am doing things wrong.
This should pull straight into net-next.2.6. The master branch is still
based on net-2.6 and also contains all of these changesets (less the last
trivial merge).
The following changes since commit a4356b2920fd4861dd6c75f558749fa5c38a00e8:
lpo Järvinen (1):
tcp: Add tcp_parse_aligned_timestamp
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-2.6.git lvs-next-2.6
Julius Volz (4):
IPVS: Add genetlink interface definitions to ip_vs.h
IPVS: Add genetlink interface implementation
IPVS: Integrate ESP protocol into ip_vs_proto_ah.c
IPVS: Rename ip_vs_proto_ah.c to ip_vs_proto_ah_esp.c
Simon Horman (4):
ipvs: rename __ip_vs_wlc_schedule in lblc and lblcr schedulers
Merge branch 'master' of git://git.kernel.org/.../davem/net-2.6
Merge branch 'master' of git://git.kernel.org/.../davem/net-2.6
Merge branch 'master' of git://git.kernel.org/.../horms/lvs-2.6 into lvs-next-2.6
Sven Wegener (4):
ipvs: Only call init_service, update_service and done_service for schedulers if defined
ipvs: Create init functions for estimator code
ipvs: Fix race conditions in lblc scheduler
ipvs: Fix race conditions in lblcr scheduler
include/linux/ip_vs.h | 160 +++++++
include/net/ip_vs.h | 2
net/ipv4/ipvs/ip_vs_core.c | 8
net/ipv4/ipvs/ip_vs_ctl.c | 896 ++++++++++++++++++++++++++++++++++++++++++-
net/ipv4/ipvs/ip_vs_est.c | 18
net/ipv4/ipvs/ip_vs_lblc.c | 213 ++++------
net/ipv4/ipvs/ip_vs_lblcr.c | 238 +++++------
net/ipv4/ipvs/ip_vs_lc.c | 21 -
net/ipv4/ipvs/ip_vs_nq.c | 24 -
net/ipv4/ipvs/ip_vs_rr.c | 7
net/ipv4/ipvs/ip_vs_sed.c | 24 -
net/ipv4/ipvs/ip_vs_wlc.c | 24 -
12 files changed, 1278 insertions(+), 357 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-08-27 5:33 ` Simon Horman
@ 2008-08-27 12:13 ` David Miller
0 siblings, 0 replies; 20+ messages in thread
From: David Miller @ 2008-08-27 12:13 UTC (permalink / raw)
To: horms; +Cc: lvs-devel, netdev, sven.wegener, juliusv, wensong, ja
From: Simon Horman <horms@verge.net.au>
Date: Wed, 27 Aug 2008 15:33:06 +1000
> Please let me know if this is inappropriate or I am doing things wrong.
> This should pull straight into net-next.2.6. The master branch is still
> based on net-2.6 and also contains all of these changesets (less the last
> trivial merge).
...
> git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-2.6.git lvs-next-2.6
Pulled, thanks a lot mate.
^ permalink raw reply [flat|nested] 20+ messages in thread
* [GIT] Please pull updates for IPVS
@ 2008-09-09 23:45 Simon Horman
2008-09-10 2:57 ` David Miller
0 siblings, 1 reply; 20+ messages in thread
From: Simon Horman @ 2008-09-09 23:45 UTC (permalink / raw)
To: lvs-devel, netdev
Cc: David Miller, Herbert Xu, Sven Wegener, Julius Volz, Vince Busam,
Malcolm Turnbull, Siim Põder, Wensong Zhang,
Julian Anastasov
Hi Dave,
Sorry for not sending a pull-request for a while. There are two new
features, IPv6 and local process load balancing. Unfortunately there were
some conflicts to shake out. And even more unfortunately some errors were
introduced along the way. In hindsight I should have merged IPv6 first and
sent you that. But I think that things are in order now.
If you would like me to change my process, please just let me know.
Summary:
1) Julius Volz and Vince Busam added IPv6 support.
2) Malcolm Turnbull and Siim Põder added support to allow
connections from a local process to be load balanced.
3) I merged the local process load balancing and IPv6 features.
4) Julius Volz noticed that I broke IPv6 during this merge and
thanks to some extensive testing found a bogus call
to ip_route_me_harder(). This was a cut-and-paste error
on my part. Very sorry about that.
5) Julian Anastasov noted that the local process feature was
allowing for empty TCP checksums which is not legal. After
discussion with Herbert Xu it was determined that the problem
was that the new code didn't handle partial checksums correctly.
Partial checksums were previously not possible as traffic from the
loopback device was not handled at all (can they show up other ways?). I
added some code to both TCP and UDP to handle PARTIAL_CHECKSUM. Once
again Julius Volz did a lot of work testing the solution and verifying
that it worked.
I also came up with some patches to implement IPVS's checksumming in
terms of the standard proto_csum_replace* helper functions. These
patches produce incorrect checksums and have been put on hold for now.
6) Sven Wegener provided some post-merge review of the IPv6 code
and some cleanup patches.
7) Sven Wegener provided a patch to streamline the way that the
connection table size is configured through Kconfig.
The following changes are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-2.6.git lvs-next-2.6
They should apply cleanly to net-next-2.6, which I pulled and merged this
morning.
Julius Volz (23):
IPVS: Add CONFIG_IP_VS_IPV6 option for IPv6 support
IPVS: Change IPVS data structures to support IPv6 addresses
IPVS: Add general v4/v6 helper functions / data structures
IPVS: Add debug macros for v4 and v6 address output
IPVS: Add internal versions of sockopt interface structs
IPVS: Convert __ip_vs_svc_get() and __ip_vs_fwm_get()
IPVS: Add v6 support to ip_vs_service_get()
IPVS: Add IPv6 support flag to schedulers
IPVS: Add 'af' args to protocol handler functions
IPVS: Add protocol debug functions for IPv6
IPVS: Extend protocol DNAT/SNAT and state handlers
IPVS: Extend functions for getting/creating connections
IPVS: Add IPv6 support to xmit() support functions
IPVS: Add and bind IPv6 xmit functions
IPVS: Extend scheduling functions for IPv6 support
IPVS: Add/adjust Netfilter hook functions and helpers for v6
IPVS: Convert real server lookup functions
IVPS: Disable sync daemon for IPv6 connections
IPVS: Turn off FTP application helper for IPv6
IPVS: Adjust various debug outputs to use new macros
IPVS: Activate IPv6 Netfilter hooks
IPVS: Allow adding IPv6 services from userspace
IPVS: Remove incorrect ip_route_me_harder(), fix IPv6
Malcolm Turnbull (1):
ipvs: load balance IPv4 connections from a local process
Simon Horman (5):
ipvs: load balance ipv6 connections from a local process
IPVS: fix bogus indentation
IPVS: use ipv6_addr_copy()
ipvs: handle PARTIAL_CHECKSUM
Merge git://git.kernel.org/.../davem/net-next-2.6 into lvs-next-2.6
Sven Wegener (6):
ipvs: Use pointer to address from sync message
ipvs: Return negative error values from ip_vs_edit_service()
ipvs: Mark tcp/udp v4 and v6 debug functions static
ipvs: Reject ipv6 link-local addresses for destinations
ipvs: Restrict connection table size via Kconfig
ipvs: Embed user stats structure into kernel stats structure
Vince Busam (2):
IPVS: Convert procfs files for IPv6 entry output
IPVS: Add function to determine if IPv6 address is local
include/net/ip_vs.h | 308 ++++++++++---
net/ipv4/ipvs/Kconfig | 11
net/ipv4/ipvs/ip_vs_conn.c | 249 +++++++----
net/ipv4/ipvs/ip_vs_core.c | 806 +++++++++++++++++++++++++++---------
net/ipv4/ipvs/ip_vs_ctl.c | 523 +++++++++++++++--------
net/ipv4/ipvs/ip_vs_dh.c | 5
net/ipv4/ipvs/ip_vs_est.c | 40 -
net/ipv4/ipvs/ip_vs_ftp.c | 61 +-
net/ipv4/ipvs/ip_vs_lblc.c | 7
net/ipv4/ipvs/ip_vs_lblcr.c | 11
net/ipv4/ipvs/ip_vs_lc.c | 11
net/ipv4/ipvs/ip_vs_nq.c | 15
net/ipv4/ipvs/ip_vs_proto.c | 65 ++
net/ipv4/ipvs/ip_vs_proto_ah_esp.c | 100 ++--
net/ipv4/ipvs/ip_vs_proto_tcp.c | 253 ++++++++---
net/ipv4/ipvs/ip_vs_proto_udp.c | 226 +++++++---
net/ipv4/ipvs/ip_vs_rr.c | 13
net/ipv4/ipvs/ip_vs_sed.c | 15
net/ipv4/ipvs/ip_vs_sh.c | 5
net/ipv4/ipvs/ip_vs_sync.c | 40 +
net/ipv4/ipvs/ip_vs_wlc.c | 15
net/ipv4/ipvs/ip_vs_wrr.c | 15
net/ipv4/ipvs/ip_vs_xmit.c | 471 ++++++++++++++++++++-
23 files changed, 2469 insertions(+), 796 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-09-09 23:45 Simon Horman
@ 2008-09-10 2:57 ` David Miller
0 siblings, 0 replies; 20+ messages in thread
From: David Miller @ 2008-09-10 2:57 UTC (permalink / raw)
To: horms
Cc: lvs-devel, netdev, herbert, sven.wegener, juliusv, vbusam,
malcolm, siim, wensong, ja
From: Simon Horman <horms@verge.net.au>
Date: Wed, 10 Sep 2008 09:45:40 +1000
> Sorry for not sending a pull-request for a while. There are two new
> features, IPv6 and local process load balancing. Unfortunately there were
> some conflicts to shake out. And even more unfortunately some errors were
> introduced along the way. In hindsight I should have merged IPv6 first and
> sent you that. But I think that things are in order now.
...
> git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-2.6.git lvs-next-2.6
Pulled and pushed back out to net-next-2.6, thanks Simon.
^ permalink raw reply [flat|nested] 20+ messages in thread
* [GIT] Please pull updates for IPVS
@ 2008-09-17 0:21 Simon Horman
2008-09-18 21:44 ` David Miller
0 siblings, 1 reply; 20+ messages in thread
From: Simon Horman @ 2008-09-17 0:21 UTC (permalink / raw)
To: lvs-devel, netdev
Cc: David Miller, Brian Haley, Sven Wegener, Julius Volz, Vince Busam,
Wensong Zhang, Julian Anastasov
Hi Dave,
the following are several cleanup patches, mainly resulting from
the IPv6 merge. The "ipvs: supply a valid 0 address to ip_vs_conn_new()"
change appears to be a fix for a regression caused by that merge,
though I don't believe that anyone has observed it causing a problem.
The following changes are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-2.6.git lvs-next-2.6
They should apply cleanly to net-next-2.6, which I pulled and merged this
morning.
Brian Haley (1):
ipvs: change some __constant_htons() to htons()
Simon Horman (4):
Merge git://git.kernel.org/.../horms/lvs-2.6 into lvs-next-2.6
ipvs: only unlock in ip_vs_edit_service() if already locked
ipvs: supply a valid 0 address to ip_vs_conn_new()
ipvs: add __aquire/__release annotations to ip_vs_info_seq_start/ip_vs_info_seq_stop
net/ipv4/ipvs/ip_vs_core.c | 3 ++-
net/ipv4/ipvs/ip_vs_ctl.c | 9 ++++++---
net/ipv4/ipvs/ip_vs_proto.c | 2 +-
net/ipv4/ipvs/ip_vs_proto_ah_esp.c | 2 +-
4 files changed, 10 insertions(+), 6 deletions(-)
--
Simon Horman
VA Linux Systems Japan K.K., Sydney, Australia Satellite Office
H: www.vergenet.net/~horms/ W: www.valinux.co.jp/en
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-09-17 0:21 Simon Horman
@ 2008-09-18 21:44 ` David Miller
0 siblings, 0 replies; 20+ messages in thread
From: David Miller @ 2008-09-18 21:44 UTC (permalink / raw)
To: horms
Cc: lvs-devel, netdev, brian.haley, sven.wegener, juliusv, vbusam,
wensong, ja
From: Simon Horman <horms@verge.net.au>
Date: Wed, 17 Sep 2008 10:21:48 +1000
> the following are several cleanup patches, mainly resulting from
> the IPv6 merge. The "ipvs: supply a valid 0 address to ip_vs_conn_new()"
> change appears to be a fix for a regression caused by that merge,
> though I don't believe that anyone has observed it causing a problem.
>
> The following changes are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-2.6.git lvs-next-2.6
>
> They should apply cleanly to net-next-2.6, which I pulled and merged this
> morning.
Pulled, thanks a lot Simon.
^ permalink raw reply [flat|nested] 20+ messages in thread
* [GIT] Please pull updates for IPVS
@ 2008-10-07 0:17 Simon Horman
2008-10-08 21:30 ` David Miller
0 siblings, 1 reply; 20+ messages in thread
From: Simon Horman @ 2008-10-07 0:17 UTC (permalink / raw)
To: lvs-devel, netdev
Cc: David Miller, Patrick McHardy, Sven Wegener, Julius Volz,
Wensong Zhang, Julian Anastasov
Hi Dave,
Please pull the following changes. Sorry I have let some of
them sit in my tree for a while, I wanted to be sure that
Patrick McHardy was ok with the move to netfilter.
1) Fix from Sven Wegener to prevent more than 255 connections
from being added to a synchronisation packet - which results
in something unparsable by the other end. The cause of this was
an assumption that 1500 would be the largest MTU.
This bug is likely as old as the synchronisation code.
2) An unused label fix from Sven Wegener.
This is just minor fall-out from the the IPVS IPv6 merge.
3) Julius Volz moved IPVS from net/ipv4/ipvs/ to net/netfilter/ipvs/
This is an enourmous patch, but really is a simple as
the commit message claims.
The following changes are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-2.6.git lvs-next-2.6
They should apply cleanly to net-next-2.6, which I pulled and merged this
morning.
Julius Volz (1):
IPVS: Move IPVS to net/netfilter/ipvs
Simon Horman (1):
Merge git://git.kernel.org/.../davem/net-next-2.6 into lvs-next-2.6
Sven Wegener (2):
ipvs: Restrict sync message to 255 connections
ipvs: Fix unused label warning
net/ipv4/Kconfig | 2
net/ipv4/Makefile | 1
net/ipv4/ipvs/Kconfig | 239 --
net/ipv4/ipvs/Makefile | 33
net/ipv4/ipvs/ip_vs_app.c | 622 -----
net/ipv4/ipvs/ip_vs_conn.c | 1110 ---------
net/ipv4/ipvs/ip_vs_core.c | 1542 -------------
net/ipv4/ipvs/ip_vs_ctl.c | 3441 ------------------------------
net/ipv4/ipvs/ip_vs_est.c | 166 -
net/ipv4/ipvs/ip_vs_ftp.c | 410 ---
net/ipv4/ipvs/ip_vs_lblc.c | 555 ----
net/ipv4/ipvs/ip_vs_lblcr.c | 755 ------
net/ipv4/ipvs/ip_vs_lc.c | 103
net/ipv4/ipvs/ip_vs_nq.c | 138 -
net/ipv4/ipvs/ip_vs_proto.c | 288 --
net/ipv4/ipvs/ip_vs_proto_ah_esp.c | 235 --
net/ipv4/ipvs/ip_vs_proto_tcp.c | 732 ------
net/ipv4/ipvs/ip_vs_proto_udp.c | 533 ----
net/ipv4/ipvs/ip_vs_rr.c | 112 -
net/ipv4/ipvs/ip_vs_sched.c | 251 --
net/ipv4/ipvs/ip_vs_sed.c | 140 -
net/ipv4/ipvs/ip_vs_sh.c | 258 --
net/ipv4/ipvs/ip_vs_sync.c | 940 --------
net/ipv4/ipvs/ip_vs_wlc.c | 128 -
net/ipv4/ipvs/ip_vs_wrr.c | 237 --
net/ipv4/ipvs/ip_vs_xmit.c | 1004 ---------
net/netfilter/Kconfig | 2
net/netfilter/Makefile | 3
net/netfilter/ipvs/Kconfig | 239 ++
net/netfilter/ipvs/Makefile | 33
net/netfilter/ipvs/ip_vs_app.c | 622 +++++
net/netfilter/ipvs/ip_vs_conn.c | 1110 +++++++++
net/netfilter/ipvs/ip_vs_core.c | 1542 +++++++++++++
net/netfilter/ipvs/ip_vs_ctl.c | 3443 +++++++++++++++++++++++++++++++
net/netfilter/ipvs/ip_vs_dh.c | 261 ++
net/netfilter/ipvs/ip_vs_est.c | 166 +
net/netfilter/ipvs/ip_vs_ftp.c | 410 +++
net/netfilter/ipvs/ip_vs_lblc.c | 555 ++++
net/netfilter/ipvs/ip_vs_lblcr.c | 755 ++++++
net/netfilter/ipvs/ip_vs_lc.c | 103
net/netfilter/ipvs/ip_vs_nq.c | 138 +
net/netfilter/ipvs/ip_vs_proto.c | 288 ++
net/netfilter/ipvs/ip_vs_proto_ah_esp.c | 235 ++
net/netfilter/ipvs/ip_vs_proto_tcp.c | 732 ++++++
net/netfilter/ipvs/ip_vs_proto_udp.c | 533 ++++
net/netfilter/ipvs/ip_vs_rr.c | 112 +
net/netfilter/ipvs/ip_vs_sched.c | 251 ++
net/netfilter/ipvs/ip_vs_sed.c | 140 +
net/netfilter/ipvs/ip_vs_sh.c | 258 ++
net/netfilter/ipvs/ip_vs_sync.c | 942 ++++++++
net/netfilter/ipvs/ip_vs_wlc.c | 128 +
net/netfilter/ipvs/ip_vs_wrr.c | 237 ++
net/netfilter/ipvs/ip_vs_xmit.c | 1004 +++++++++
53 files changed, 14242 insertions(+), 13975 deletions(-)
--
Simon Horman
VA Linux Systems Japan K.K., Sydney, Australia Satellite Office
H: www.vergenet.net/~horms/ W: www.valinux.co.jp/en
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [GIT] Please pull updates for IPVS
2008-10-07 0:17 Simon Horman
@ 2008-10-08 21:30 ` David Miller
0 siblings, 0 replies; 20+ messages in thread
From: David Miller @ 2008-10-08 21:30 UTC (permalink / raw)
To: horms; +Cc: lvs-devel, netdev, kaber, sven.wegener, juliusv, wensong, ja
From: Simon Horman <horms@verge.net.au>
Date: Tue, 7 Oct 2008 11:17:10 +1100
> Please pull the following changes. Sorry I have let some of
> them sit in my tree for a while, I wanted to be sure that
> Patrick McHardy was ok with the move to netfilter.
...
> The following changes are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-2.6.git lvs-next-2.6
>
> They should apply cleanly to net-next-2.6, which I pulled and merged this
> morning.
Pulled thanks a lot Simon.
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2008-10-08 21:30 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-15 0:12 [GIT] Please pull updates for IPVS Simon Horman
2008-08-15 0:25 ` David Miller
2008-08-15 1:02 ` Simon Horman
2008-08-15 6:09 ` Sven Wegener
2008-08-15 11:31 ` Julius Volz
2008-08-15 21:18 ` David Miller
2008-08-15 21:39 ` Julius Volz
2008-08-15 21:45 ` David Miller
2008-08-15 21:48 ` Julius Volz
2008-08-16 3:41 ` Simon Horman
2008-08-27 5:33 ` Simon Horman
2008-08-27 12:13 ` David Miller
-- strict thread matches above, loose matches on Subject: below --
2008-10-07 0:17 Simon Horman
2008-10-08 21:30 ` David Miller
2008-09-17 0:21 Simon Horman
2008-09-18 21:44 ` David Miller
2008-09-09 23:45 Simon Horman
2008-09-10 2:57 ` David Miller
2008-08-11 21:46 Sven Wegener
2008-08-12 1:10 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).