[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20091104202716.GE14821@hostway.ca>
Date: Wed, 4 Nov 2009 12:27:16 -0800
From: Simon Kirby <sim@...tway.ca>
To: netdev@...r.kernel.org, Wensong Zhang <wensong@...ux-vs.org>,
Julian Anastasov <ja@....bg>
Subject: test
Hello!
I was noticing a significant amount of what seems/seemed to be
destination lists with multiple entries with the lblcr LVS algorithm.
While tracking it down, I think I stumbled over a mistake. In
ip_vs_lblcr_full_check(), it appears the time check logic is reversed:
for (i=0, j=tbl->rover; i<IP_VS_LBLCR_TAB_SIZE; i++) {
j = (j + 1) & IP_VS_LBLCR_TAB_MASK;
write_lock(&svc->sched_lock);
list_for_each_entry_safe(en, nxt, &tbl->bucket[j], list) {
if (time_after(en->lastuse+sysctl_ip_vs_lblcr_expiration,
now))
continue;
ip_vs_lblcr_free(en);
atomic_dec(&tbl->entries);
}
write_unlock(&svc->sched_lock);
}
Shouldn't this be "time_before"? It seems that it currently nukes all
recently-used entries every time this function is called, which seems to
be every 30 minutes, rather than removing the not-recently-used ones.
If my reading is correct, this patch should fix it. Am I missing
something?
Cheers,
Simon-
View attachment "lblcr+full_check_time_fix.patch" of type "text/x-diff" (536 bytes)
Powered by blists - more mailing lists