Rev 41: enforce the tcp memory alignment in packet queue in http://samba.org/~tridge/ctdb

tridge at samba.org tridge at samba.org
Tue Dec 19 01:07:07 GMT 2006


------------------------------------------------------------
revno: 41
revision-id: tridge at samba.org-20061219010707-r1nxwua8jiv9q4n1
parent: tridge at samba.org-20061219010310-yo8ja17l1tvmeeui
committer: Andrew Tridgell <tridge at samba.org>
branch nick: tridge
timestamp: Tue 2006-12-19 12:07:07 +1100
message:
  enforce the tcp memory alignment in packet queue 
modified:
  tcp/ctdb_tcp.h                 ctdb_tcp.h-20061127103747-l8xeniwiapbydehq-3
  tcp/tcp_init.c                 tcp_init.c-20061128004937-x70q1cu5xzg5g2tm-2
  tcp/tcp_io.c                   tcp_io.c-20061128004937-x70q1cu5xzg5g2tm-3
=== modified file 'tcp/ctdb_tcp.h'
--- a/tcp/ctdb_tcp.h	2006-12-19 01:03:10 +0000
+++ b/tcp/ctdb_tcp.h	2006-12-19 01:07:07 +0000
@@ -72,3 +72,5 @@
 int ctdb_tcp_listen(struct ctdb_context *ctdb);
 void ctdb_tcp_node_connect(struct event_context *ev, struct timed_event *te, 
 			   struct timeval t, void *private);
+
+#define CTDB_TCP_ALIGNMENT 8

=== modified file 'tcp/tcp_init.c'
--- a/tcp/tcp_init.c	2006-12-19 01:03:10 +0000
+++ b/tcp/tcp_init.c	2006-12-19 01:07:07 +0000
@@ -72,7 +72,7 @@
 	/* tcp transport needs to round to 8 byte alignment to ensure
 	   that we can use a length header and 64 bit elements in
 	   structures */
-	size = (size+7) & ~7;
+	size = (size+(CTDB_TCP_ALIGNMENT-1)) & ~(CTDB_TCP_ALIGNMENT-1);
 	return talloc_size(ctdb, size);
 }
 

=== modified file 'tcp/tcp_io.c'
--- a/tcp/tcp_io.c	2006-12-19 01:03:10 +0000
+++ b/tcp/tcp_io.c	2006-12-19 01:07:07 +0000
@@ -199,6 +199,10 @@
 	struct ctdb_tcp_node *tnode = talloc_get_type(node->private, 
 						      struct ctdb_tcp_node);
 	struct ctdb_tcp_packet *pkt;
+
+	/* enforce the length and alignment rules from the tcp packet allocator */
+	length = (length+(CTDB_TCP_ALIGNMENT-1)) & ~(CTDB_TCP_ALIGNMENT-1);
+	*(uint32_t *)data = length;
 	
 	/* if the queue is empty then try an immediate write, avoiding
 	   queue overhead. This relies on non-blocking sockets */



More information about the samba-cvs mailing list