From: Pete Zaitcev <zaitcev@redhat.com>
To: Jeff Garzik <jeff@garzik.org>
Cc: Project Hail List <hail-devel@vger.kernel.org>
Subject: [Patch] cld: pad protocol structures
Date: Tue, 25 Aug 2009 18:37:40 -0600 [thread overview]
Message-ID: <20090825183740.24cbc72d@redhat.com> (raw)
As it turned out, sizeof produces different results on 64-bit and
32-bit hosts because the size of the structure may aligned on whatever
biggest alignment the gcc decides appropriate. It's not necesserily
the biggest type, as on RISCs and Itanium, where accessing arrays
of structs with misaligned sizeof will cause SIGBUS. As a result,
our structs varied in size despite using fixed-size types.
Our preferred fix is to pad structures so that they become more
portable.
This patch creates a flag day on 32-bit systems (but not on 64-bit
ones). CLD clients and the daemon must be rebuilt.
Signed-Off-By: Pete Zaitcev <zaitcev@redhat.com>
diff --git a/include/cld_msg.h b/include/cld_msg.h
index 89ab066..e4c8f28 100644
--- a/include/cld_msg.h
+++ b/include/cld_msg.h
@@ -167,6 +167,7 @@ struct cld_msg_open {
uint32_t mode; /**< open mode, COM_xxx */
uint32_t events; /**< events mask, CE_xxx */
uint16_t name_len; /**< length of file name */
+ uint8_t res[6];
/* inode name */
};
@@ -195,7 +196,7 @@ struct cld_msg_get_resp {
uint64_t time_create; /**< creation time */
uint64_t time_modify; /**< last modification time */
uint32_t flags; /**< inode flags; CIFL_xxx */
-
+ uint8_t res[4];
/* inode name */
};
@@ -205,6 +206,7 @@ struct cld_msg_put {
uint64_t fh; /**< open file handle */
uint32_t data_size; /**< total size of data */
+ uint8_t res[4];
};
/** CLOSE message */
@@ -219,6 +221,7 @@ struct cld_msg_del {
struct cld_msg_hdr hdr;
uint16_t name_len; /**< length of file name */
+ uint8_t res[6];
/* inode name */
};
@@ -235,6 +238,7 @@ struct cld_msg_lock {
uint64_t fh; /**< open file handle */
uint32_t flags; /**< CLF_xxx */
+ uint8_t res[4];
};
/** Server-to-client EVENT message */
@@ -243,6 +247,7 @@ struct cld_msg_event {
uint64_t fh; /**< open file handle */
uint32_t events; /**< CE_xxx */
+ uint8_t res[4];
};
/*
next reply other threads:[~2009-08-26 0:37 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-26 0:37 Pete Zaitcev [this message]
2009-08-26 6:25 ` [Patch] cld: pad protocol structures Jeff Garzik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090825183740.24cbc72d@redhat.com \
--to=zaitcev@redhat.com \
--cc=hail-devel@vger.kernel.org \
--cc=jeff@garzik.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.