netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [conntrack-tools PATCH r7363 0/5] rbtree alarm review
@ 2008-02-13 17:13 Max Kellermann
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 1/5] eliminate duplicate initialization Max Kellermann
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Max Kellermann @ 2008-02-13 17:13 UTC (permalink / raw)
  To: netfilter-devel; +Cc: pablo

Hi Pablo,

I have finally been able to take a little time and review your rbtree
based alarm implementation.  I looks good, I haven't found major
showstoppers here.  Here is a small patch set which optimizes the code
a little.

Max

---

Max Kellermann (5):
      minor whitespace cleanup
      use list_for_each_entry()
      make alarm_run_queue a local variable
      use "for" loop instead of "while"
      eliminate duplicate initialization


 include/queue.h |    4 ++--
 src/alarm.c     |   21 +++++++++------------
 src/main.c      |    6 +++---
 src/netlink.c   |   14 +++++++-------
 src/run.c       |   12 ++++++------
 5 files changed, 27 insertions(+), 30 deletions(-)


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [conntrack-tools PATCH r7363 1/5] eliminate duplicate initialization
  2008-02-13 17:13 [conntrack-tools PATCH r7363 0/5] rbtree alarm review Max Kellermann
@ 2008-02-13 17:13 ` Max Kellermann
  2008-02-14 14:17   ` Pablo Neira Ayuso
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 2/5] use "for" loop instead of "while" Max Kellermann
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Max Kellermann @ 2008-02-13 17:13 UTC (permalink / raw)
  To: netfilter-devel; +Cc: pablo


---

 src/alarm.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)


diff --git a/src/alarm.c b/src/alarm.c
index 5013735..470efdd 100644
--- a/src/alarm.c
+++ b/src/alarm.c
@@ -105,7 +105,7 @@ calculate_next_run(struct timeval *cand,
 struct timeval *
 get_next_alarm_run(struct timeval *next_run)
 {
-	struct rb_node *node = alarm_root.rb_node;
+	struct rb_node *node;
 	struct timeval tv;
 
 	gettimeofday(&tv, NULL);
@@ -122,7 +122,7 @@ get_next_alarm_run(struct timeval *next_run)
 struct timeval *
 do_alarm_run(struct timeval *next_run)
 {
-	struct rb_node *node = alarm_root.rb_node;
+	struct rb_node *node;
 	struct alarm_block *this, *tmp;
 	struct timeval tv;
 



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [conntrack-tools PATCH r7363 2/5] use "for" loop instead of "while"
  2008-02-13 17:13 [conntrack-tools PATCH r7363 0/5] rbtree alarm review Max Kellermann
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 1/5] eliminate duplicate initialization Max Kellermann
@ 2008-02-13 17:13 ` Max Kellermann
  2008-02-14 14:19   ` Pablo Neira Ayuso
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 3/5] make alarm_run_queue a local variable Max Kellermann
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Max Kellermann @ 2008-02-13 17:13 UTC (permalink / raw)
  To: netfilter-devel; +Cc: pablo


---

 src/alarm.c |    5 +----
 1 files changed, 1 insertions(+), 4 deletions(-)


diff --git a/src/alarm.c b/src/alarm.c
index 470efdd..a3bdbe2 100644
--- a/src/alarm.c
+++ b/src/alarm.c
@@ -128,15 +128,12 @@ do_alarm_run(struct timeval *next_run)
 
 	gettimeofday(&tv, NULL);
 
-	node = rb_first(&alarm_root);
-	while (node) {
+	for (node = rb_first(&alarm_root); node; node = rb_next(node)) {
 		this = container_of(node, struct alarm_block, node);
 
 		if (timercmp(&this->tv, &tv, >))
 			break;
 
-		node = rb_next(node);
-
 		list_add(&this->list, &alarm_run_queue);
 	}
 



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [conntrack-tools PATCH r7363 3/5] make alarm_run_queue a local variable
  2008-02-13 17:13 [conntrack-tools PATCH r7363 0/5] rbtree alarm review Max Kellermann
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 1/5] eliminate duplicate initialization Max Kellermann
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 2/5] use "for" loop instead of "while" Max Kellermann
@ 2008-02-13 17:13 ` Max Kellermann
  2008-02-14 14:21   ` Pablo Neira Ayuso
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 5/5] minor whitespace cleanup Max Kellermann
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Max Kellermann @ 2008-02-13 17:13 UTC (permalink / raw)
  To: netfilter-devel; +Cc: pablo


---

 src/alarm.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)


diff --git a/src/alarm.c b/src/alarm.c
index a3bdbe2..c86ce44 100644
--- a/src/alarm.c
+++ b/src/alarm.c
@@ -21,7 +21,6 @@
 #include <limits.h>
 
 static struct rb_root alarm_root = RB_ROOT;
-static LIST_HEAD(alarm_run_queue);
 
 void init_alarm(struct alarm_block *t,
 		void *data,
@@ -122,12 +121,14 @@ get_next_alarm_run(struct timeval *next_run)
 struct timeval *
 do_alarm_run(struct timeval *next_run)
 {
+	struct list_head alarm_run_queue;
 	struct rb_node *node;
 	struct alarm_block *this, *tmp;
 	struct timeval tv;
 
 	gettimeofday(&tv, NULL);
 
+	INIT_LIST_HEAD(&alarm_run_queue);
 	for (node = rb_first(&alarm_root); node; node = rb_next(node)) {
 		this = container_of(node, struct alarm_block, node);
 



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [conntrack-tools PATCH r7363 4/5] use list_for_each_entry()
  2008-02-13 17:13 [conntrack-tools PATCH r7363 0/5] rbtree alarm review Max Kellermann
                   ` (3 preceding siblings ...)
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 5/5] minor whitespace cleanup Max Kellermann
@ 2008-02-13 17:13 ` Max Kellermann
  2008-02-14 14:22   ` Pablo Neira Ayuso
  2008-02-14 14:44 ` [conntrack-tools PATCH r7363 0/5] rbtree alarm review Pablo Neira Ayuso
  5 siblings, 1 reply; 12+ messages in thread
From: Max Kellermann @ 2008-02-13 17:13 UTC (permalink / raw)
  To: netfilter-devel; +Cc: pablo

since alarm_run_queue is now a local variable, we can use the faster
list_for_each_entry() instead of list_for_each_entry_safe() /
list_del().
---

 src/alarm.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)


diff --git a/src/alarm.c b/src/alarm.c
index c86ce44..8056ee6 100644
--- a/src/alarm.c
+++ b/src/alarm.c
@@ -123,7 +123,7 @@ do_alarm_run(struct timeval *next_run)
 {
 	struct list_head alarm_run_queue;
 	struct rb_node *node;
-	struct alarm_block *this, *tmp;
+	struct alarm_block *this;
 	struct timeval tv;
 
 	gettimeofday(&tv, NULL);
@@ -138,8 +138,7 @@ do_alarm_run(struct timeval *next_run)
 		list_add(&this->list, &alarm_run_queue);
 	}
 
-	list_for_each_entry_safe(this, tmp, &alarm_run_queue, list) {
-		list_del(&this->list);
+	list_for_each_entry(this, &alarm_run_queue, list) {
 		rb_erase(&this->node, &alarm_root);
 		RB_CLEAR_NODE(&this->node);
 		this->function(this, this->data);



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [conntrack-tools PATCH r7363 5/5] minor whitespace cleanup
  2008-02-13 17:13 [conntrack-tools PATCH r7363 0/5] rbtree alarm review Max Kellermann
                   ` (2 preceding siblings ...)
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 3/5] make alarm_run_queue a local variable Max Kellermann
@ 2008-02-13 17:13 ` Max Kellermann
  2008-02-14 14:27   ` Pablo Neira Ayuso
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 4/5] use list_for_each_entry() Max Kellermann
  2008-02-14 14:44 ` [conntrack-tools PATCH r7363 0/5] rbtree alarm review Pablo Neira Ayuso
  5 siblings, 1 reply; 12+ messages in thread
From: Max Kellermann @ 2008-02-13 17:13 UTC (permalink / raw)
  To: netfilter-devel; +Cc: pablo


---

 include/queue.h |    4 ++--
 src/alarm.c     |    4 ++--
 src/main.c      |    6 +++---
 src/netlink.c   |   14 +++++++-------
 src/run.c       |   12 ++++++------
 5 files changed, 20 insertions(+), 20 deletions(-)


diff --git a/include/queue.h b/include/queue.h
index 9a5d7b8..5a9cf39 100644
--- a/include/queue.h
+++ b/include/queue.h
@@ -21,8 +21,8 @@ void queue_destroy(struct queue *b);
 unsigned int queue_len(const struct queue *b);
 int queue_add(struct queue *b, const void *data, size_t size);
 void queue_del(struct queue *b, void *data);
-void queue_iterate(struct queue *b, 
-		   const void *data, 
+void queue_iterate(struct queue *b,
+		   const void *data,
 		   int (*iterate)(void *data1, const void *data2));
 
 #endif
diff --git a/src/alarm.c b/src/alarm.c
index 8056ee6..91ee2ca 100644
--- a/src/alarm.c
+++ b/src/alarm.c
@@ -1,6 +1,6 @@
 /*
  * (C) 2006-2008 by Pablo Neira Ayuso <pablo@netfilter.org>
- * 
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -85,7 +85,7 @@ int alarm_pending(struct alarm_block *alarm)
 
 static struct timeval *
 calculate_next_run(struct timeval *cand,
-		   struct timeval *tv, 
+		   struct timeval *tv,
 		   struct timeval *next_run)
 {
 	if (cand->tv_sec != LONG_MAX) {
diff --git a/src/main.c b/src/main.c
index 8221564..b6011f0 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,6 +1,6 @@
 /*
  * (C) 2006-2007 by Pablo Neira Ayuso <pablo@netfilter.org>
- * 
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -34,7 +34,7 @@ static const char usage_daemon_commands[] =
 	"Daemon mode commands:\n"
 	"  -d [options]\t\tRun in daemon mode\n";
 
-static const char usage_client_commands[] = 
+static const char usage_client_commands[] =
 	"Client mode commands:\n"
 	"  -c, commit external cache to conntrack table\n"
 	"  -f, flush internal and external cache\n"
@@ -244,7 +244,7 @@ int main(int argc, char *argv[])
 			exit(EXIT_FAILURE);
 		} else if (pid)
 			exit(EXIT_SUCCESS);
-		
+
 		setsid();
 
 		close(STDOUT_FILENO);
diff --git a/src/netlink.c b/src/netlink.c
index bb94001..f6a2378 100644
--- a/src/netlink.c
+++ b/src/netlink.c
@@ -1,6 +1,6 @@
 /*
  * (C) 2006 by Pablo Neira Ayuso <pablo@netfilter.org>
- * 
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -35,7 +35,7 @@ int ignore_conntrack(struct nf_conntrack *ct)
 		return 0;
 	}
 
-        /* Accept SNAT'ed traffic: not really coming to the local machine */
+	/* Accept SNAT'ed traffic: not really coming to the local machine */
 	if (nfct_getobjopt(ct, NFCT_GOPT_IS_SNAT)) {
 		debug_ct(ct, "SNAT");
 		return 0;
@@ -54,7 +54,7 @@ static int event_handler(enum nf_conntrack_msg_type type,
 			 struct nf_conntrack *ct,
 			 void *data)
 {
-	/* 
+	/*
 	 * Ignore this conntrack: it talks about a
 	 * connection that is not interesting for us.
 	 */
@@ -94,7 +94,7 @@ int nl_init_event_handler(void)
 
 	/* set up socket buffer size */
 	if (CONFIG(netlink_buffer_size))
-		nfnl_rcvbufsiz(nfct_nfnlh(STATE(event)), 
+		nfnl_rcvbufsiz(nfct_nfnlh(STATE(event)),
 			       CONFIG(netlink_buffer_size));
 	else {
 		socklen_t socklen = sizeof(unsigned int);
@@ -109,7 +109,7 @@ int nl_init_event_handler(void)
 
 	/* ensure that maximum grown size is >= than maximum size */
 	if (CONFIG(netlink_buffer_size_max_grown) < CONFIG(netlink_buffer_size))
-		CONFIG(netlink_buffer_size_max_grown) = 
+		CONFIG(netlink_buffer_size_max_grown) =
 					CONFIG(netlink_buffer_size);
 
 	/* register callback for events */
@@ -122,7 +122,7 @@ static int dump_handler(enum nf_conntrack_msg_type type,
 			struct nf_conntrack *ct,
 			void *data)
 {
-	/* 
+	/*
 	 * Ignore this conntrack: it talks about a
 	 * connection that is not interesting for us.
 	 */
@@ -167,7 +167,7 @@ void nl_resize_socket_buffer(struct nfct_handle *h)
 		return;
 
 	if (s > CONFIG(netlink_buffer_size_max_grown)) {
-		dlog(LOG_WARNING, 
+		dlog(LOG_WARNING,
 		     "maximum netlink socket buffer "
 		     "size has been reached. We are likely to "
 		     "be losing events, this may lead to "
diff --git a/src/run.c b/src/run.c
index f5832bc..6cf259d 100644
--- a/src/run.c
+++ b/src/run.c
@@ -48,7 +48,7 @@ void killer(int foo)
 
 	sigprocmask(SIG_UNBLOCK, &STATE(block), NULL);
 
-	exit(0);			
+	exit(0);
 }
 
 static void child(int foo)
@@ -115,7 +115,7 @@ init(void)
 	}
 
 	if (nl_init_event_handler() == -1) {
-		dlog(LOG_ERR, "can't open netlink handler: %s", 
+		dlog(LOG_ERR, "can't open netlink handler: %s",
 		     strerror(errno));
 		dlog(LOG_ERR, "no ctnetlink kernel support?");
 		return -1;
@@ -128,7 +128,7 @@ init(void)
 		return -1;
 	}
 
-        /* Signals handling */
+	/* Signals handling */
 	sigemptyset(&STATE(block));
 	sigaddset(&STATE(block), SIGTERM);
 	sigaddset(&STATE(block), SIGINT);
@@ -177,7 +177,7 @@ static void __run(struct timeval *next_alarm)
 	}
 
 	/* signals are racy */
-	sigprocmask(SIG_BLOCK, &STATE(block), NULL);		
+	sigprocmask(SIG_BLOCK, &STATE(block), NULL);
 
 	/* order received via UNIX socket */
 	if (FD_ISSET(STATE(local).fd, &readfds))
@@ -189,8 +189,8 @@ static void __run(struct timeval *next_alarm)
 		if (ret == -1) {
 			switch(errno) {
 			case ENOBUFS:
-                		/*
-		 		 * It seems that ctnetlink can't back off,
+				/*
+				 * It seems that ctnetlink can't back off,
 				 * it's likely that we're losing events.
 				 * Solution: duplicate the socket buffer
 				 * size and resync with master conntrack table.



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [conntrack-tools PATCH r7363 1/5] eliminate duplicate initialization
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 1/5] eliminate duplicate initialization Max Kellermann
@ 2008-02-14 14:17   ` Pablo Neira Ayuso
  0 siblings, 0 replies; 12+ messages in thread
From: Pablo Neira Ayuso @ 2008-02-14 14:17 UTC (permalink / raw)
  To: Max Kellermann; +Cc: netfilter-devel

Max Kellermann wrote:
> ---
> 
>  src/alarm.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)

Applied. Thanks Max.

-- 
"Los honestos son inadaptados sociales" -- Les Luthiers

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [conntrack-tools PATCH r7363 2/5] use "for" loop instead of "while"
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 2/5] use "for" loop instead of "while" Max Kellermann
@ 2008-02-14 14:19   ` Pablo Neira Ayuso
  0 siblings, 0 replies; 12+ messages in thread
From: Pablo Neira Ayuso @ 2008-02-14 14:19 UTC (permalink / raw)
  To: Max Kellermann; +Cc: netfilter-devel

Max Kellermann wrote:
> ---
> 
>  src/alarm.c |    5 +----
>  1 files changed, 1 insertions(+), 4 deletions(-)

Applied. Thanks.

-- 
"Los honestos son inadaptados sociales" -- Les Luthiers

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [conntrack-tools PATCH r7363 3/5] make alarm_run_queue a local variable
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 3/5] make alarm_run_queue a local variable Max Kellermann
@ 2008-02-14 14:21   ` Pablo Neira Ayuso
  0 siblings, 0 replies; 12+ messages in thread
From: Pablo Neira Ayuso @ 2008-02-14 14:21 UTC (permalink / raw)
  To: Max Kellermann; +Cc: netfilter-devel

Max Kellermann wrote:
> ---
> 
>  src/alarm.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)

Also applied. Thanks.

-- 
"Los honestos son inadaptados sociales" -- Les Luthiers

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [conntrack-tools PATCH r7363 4/5] use list_for_each_entry()
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 4/5] use list_for_each_entry() Max Kellermann
@ 2008-02-14 14:22   ` Pablo Neira Ayuso
  0 siblings, 0 replies; 12+ messages in thread
From: Pablo Neira Ayuso @ 2008-02-14 14:22 UTC (permalink / raw)
  To: Max Kellermann; +Cc: netfilter-devel

Max Kellermann wrote:
> since alarm_run_queue is now a local variable, we can use the faster
> list_for_each_entry() instead of list_for_each_entry_safe() /
> list_del().

Applied. Thanks.

-- 
"Los honestos son inadaptados sociales" -- Les Luthiers

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [conntrack-tools PATCH r7363 5/5] minor whitespace cleanup
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 5/5] minor whitespace cleanup Max Kellermann
@ 2008-02-14 14:27   ` Pablo Neira Ayuso
  0 siblings, 0 replies; 12+ messages in thread
From: Pablo Neira Ayuso @ 2008-02-14 14:27 UTC (permalink / raw)
  To: Max Kellermann; +Cc: netfilter-devel

Max Kellermann wrote:
> ---
> 
>  include/queue.h |    4 ++--
>  src/alarm.c     |    4 ++--
>  src/main.c      |    6 +++---
>  src/netlink.c   |   14 +++++++-------
>  src/run.c       |   12 ++++++------
>  5 files changed, 20 insertions(+), 20 deletions(-)

Applied. Thanks.

-- 
"Los honestos son inadaptados sociales" -- Les Luthiers

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [conntrack-tools PATCH r7363 0/5] rbtree alarm review
  2008-02-13 17:13 [conntrack-tools PATCH r7363 0/5] rbtree alarm review Max Kellermann
                   ` (4 preceding siblings ...)
  2008-02-13 17:13 ` [conntrack-tools PATCH r7363 4/5] use list_for_each_entry() Max Kellermann
@ 2008-02-14 14:44 ` Pablo Neira Ayuso
  5 siblings, 0 replies; 12+ messages in thread
From: Pablo Neira Ayuso @ 2008-02-14 14:44 UTC (permalink / raw)
  To: Max Kellermann; +Cc: netfilter-devel

Hi Max,

Max Kellermann wrote:
> I have finally been able to take a little time and review your rbtree
> based alarm implementation.  I looks good, I haven't found major
> showstoppers here.  Here is a small patch set which optimizes the code
> a little.

Again, thanks for the review and the patches.

Cheers,
Pablo

-- 
"Los honestos son inadaptados sociales" -- Les Luthiers

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2008-02-14 14:44 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-13 17:13 [conntrack-tools PATCH r7363 0/5] rbtree alarm review Max Kellermann
2008-02-13 17:13 ` [conntrack-tools PATCH r7363 1/5] eliminate duplicate initialization Max Kellermann
2008-02-14 14:17   ` Pablo Neira Ayuso
2008-02-13 17:13 ` [conntrack-tools PATCH r7363 2/5] use "for" loop instead of "while" Max Kellermann
2008-02-14 14:19   ` Pablo Neira Ayuso
2008-02-13 17:13 ` [conntrack-tools PATCH r7363 3/5] make alarm_run_queue a local variable Max Kellermann
2008-02-14 14:21   ` Pablo Neira Ayuso
2008-02-13 17:13 ` [conntrack-tools PATCH r7363 5/5] minor whitespace cleanup Max Kellermann
2008-02-14 14:27   ` Pablo Neira Ayuso
2008-02-13 17:13 ` [conntrack-tools PATCH r7363 4/5] use list_for_each_entry() Max Kellermann
2008-02-14 14:22   ` Pablo Neira Ayuso
2008-02-14 14:44 ` [conntrack-tools PATCH r7363 0/5] rbtree alarm review Pablo Neira Ayuso

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).