Re: [PATCH 06/19] dlm: align midcomms message buffer

From: Fabio M. Di Nitto
Date: Tue Jan 29 2008 - 00:38:44 EST


On Sat, 26 Jan 2008, Andrew Morton wrote:

On Thu, 24 Jan 2008 10:50:29 -0600 David Teigland <teigland@xxxxxxxxxx> wrote:
From: Fabio M. Di Nitto <fabbione@xxxxxxxxxx>

gcc does not guarantee that a static buffer is 64bit aligned. This change
allows sparc64 to work.


This buffer is not static: changelog needs fixing: s/static/auto/

---
fs/dlm/midcomms.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/dlm/midcomms.c b/fs/dlm/midcomms.c
index f8c69dd..da653b5 100644
--- a/fs/dlm/midcomms.c
+++ b/fs/dlm/midcomms.c
@@ -58,7 +58,7 @@ static void copy_from_cb(void *dst, const void *base, unsigned offset,
int dlm_process_incoming_buffer(int nodeid, const void *base,
unsigned offset, unsigned len, unsigned limit)
{
- unsigned char __tmp[DLM_INBUF_LEN];
+ unsigned char __tmp[DLM_INBUF_LEN] __attribute__((aligned(64)));
struct dlm_header *msg = (struct dlm_header *) __tmp;
int ret = 0;
int err = 0;

Why does DLM require that this thing be 64-bit aligned?

It all looks rather ugly. Can't this stuff be implemeted within the C type
system somehow?


how about this one: