From: Joe Perches <joe@perches.com>
Date: Tue, 31 Jan 2012 12:55:41 -0800
On Tue, 2012-01-31 at 12:46 -0800, Arun Sharma wrote:
quoted
On 1/31/12 12:09 PM, Joe Perches wrote:
quoted
quoted
+ too_many_orphans = tcp_too_many_orphans(sk, shift);
+ out_of_socket_memory = tcp_out_of_memory(sk);
+ tcp_log_oom(too_many_orphans, out_of_socket_memory);
+ if (too_many_orphans || out_of_socket_memory) {
Perhaps these repeated three lines should be a routine like:
bool tcp_check_oom(struct sock *sk, int shift)
{
bool tcp_orphans = tcp_too_many_orphans(sk, shift);
bool tcp_oom = tcp_out_of_memory(sk);
printks...
return tcp_orphans || tcp_oom;
}
I like your previous suggestion better. It preserves the ability to write:
if (too_many_orphans) {
do_something();
}
if (out_of_socket_memory) {
do_something_else();
}
shrug. That isn't currently used and
tcp_too_many_orphans and tcp_out_of_memory
could still be checked.
I think the routine could be moved out-of-line.
Indeed, and make the out-of-line combined routine (that does the test
as well as the conditional logging) return a boolean that determines
if the "if (too_many_orphans || out_of_socket_memory)" test should
pass.