public inbox for cluster-cvs@sourceware.org help / color / mirror / Atom feed
From: Jonathan Brassow <jbrassow@fedoraproject.org> To: cluster-cvs-relay@redhat.com Subject: cluster: RHEL5 - clogd/dm-log-clustered.ko: Fix arch mixing issues Date: Thu, 11 Jun 2009 16:15:00 -0000 [thread overview] Message-ID: <20090611161519.DC3AA1201D7@lists.fedorahosted.org> (raw) Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=400a33b0a5f715702a419c46a10d0b3491130a53 Commit: 400a33b0a5f715702a419c46a10d0b3491130a53 Parent: 935a60f838d37c848405d7df17404c3adad78392 Author: Jonathan Brassow <jbrassow@redhat.com> AuthorDate: Thu Jun 11 11:14:03 2009 -0500 Committer: Jonathan Brassow <jbrassow@redhat.com> CommitterDate: Thu Jun 11 11:14:03 2009 -0500 clogd/dm-log-clustered.ko: Fix arch mixing issues Fix arch mixing issues by being explicit about variable sizes (int vs int32_t, etc) and doing padding where necessary. --- cmirror-kernel/src/dm-clog-tfr.c | 2 +- cmirror-kernel/src/dm-clog-tfr.h | 5 +++-- cmirror-kernel/src/dm-clog.c | 18 +++++++++++++++--- cmirror/src/functions.c | 23 ++++++++++++++++++----- cmirror/src/local.c | 1 + 5 files changed, 38 insertions(+), 11 deletions(-) diff --git a/cmirror-kernel/src/dm-clog-tfr.c b/cmirror-kernel/src/dm-clog-tfr.c index 3ceb320..778ffb7 100644 --- a/cmirror-kernel/src/dm-clog-tfr.c +++ b/cmirror-kernel/src/dm-clog-tfr.c @@ -105,7 +105,7 @@ static int fill_pkg(struct cn_msg *msg, struct clog_tfr *tfr) } else if (tfr->data_size > *(pkg->data_size)) { DMERR("Insufficient space to receive package [%s]::", RQ_TYPE(tfr->request_type)); - DMERR(" tfr->data_size = %u", tfr->data_size); + DMERR(" tfr->data_size = %llu", tfr->data_size); DMERR(" *(pkg->data_size) = %u", *(pkg->data_size)); *(pkg->data_size) = 0; diff --git a/cmirror-kernel/src/dm-clog-tfr.h b/cmirror-kernel/src/dm-clog-tfr.h index bdf4b6d..dcf7e91 100644 --- a/cmirror-kernel/src/dm-clog-tfr.h +++ b/cmirror-kernel/src/dm-clog-tfr.h @@ -52,13 +52,14 @@ struct clog_tfr { uint64_t private[2]; char uuid[DM_UUID_LEN]; /* Ties a request to a specific mirror log */ + char uuid_padding[7]; /* DM_UUID_LEN == 129 */ - int error; /* Used by server to inform of errors */ + int32_t error; /* Used by server to inform of errors */ uint32_t originator; /* Cluster ID of this machine */ uint32_t seq; /* Sequence number for request */ uint32_t request_type; /* DM_CLOG_* */ - uint32_t data_size; /* How much data (not including this struct) */ + uint64_t data_size; /* How much data (not including this struct) */ char data[0]; }; diff --git a/cmirror-kernel/src/dm-clog.c b/cmirror-kernel/src/dm-clog.c index f21823e..be08331 100644 --- a/cmirror-kernel/src/dm-clog.c +++ b/cmirror-kernel/src/dm-clog.c @@ -536,7 +536,11 @@ static int cluster_get_resync_work(struct dm_dirty_log *log, region_t *region) int r; int rdata_size; struct log_c *lc = (struct log_c *)log->context; - struct { int i; region_t r; } pkg; + struct { + int32_t i; + uint32_t arch_padding; + region_t r; + } pkg; if (lc->in_sync_hint >= lc->region_count) return 0; @@ -564,7 +568,11 @@ static void cluster_set_region_sync(struct dm_dirty_log *log, { int r; struct log_c *lc = (struct log_c *)log->context; - struct { region_t r; int i; } pkg; + struct { + region_t r; + uint32_t arch_padding; + int32_t i; + } pkg; pkg.r = region; pkg.i = in_sync; @@ -659,7 +667,11 @@ static int cluster_is_remote_recovering(struct dm_dirty_log *log, region_t regio int r; struct log_c *lc = (struct log_c *)log->context; static unsigned long long limit = 0; - struct { int is_recovering; uint64_t in_sync_hint; } pkg; + struct { + int32_t is_recovering; + uint32_t arch_padding; + uint64_t in_sync_hint; + } pkg; int rdata_size = sizeof(pkg); /* diff --git a/cmirror/src/functions.c b/cmirror/src/functions.c index 45fdc1a..0523e9c 100644 --- a/cmirror/src/functions.c +++ b/cmirror/src/functions.c @@ -545,8 +545,9 @@ static int clog_ctr(struct clog_tfr *tfr) if (strlen(tfr->data) != tfr->data_size) { LOG_ERROR("Received constructor request with bad data"); - LOG_ERROR("strlen(tfr->data)[%d] != tfr->data_size[%d]", - (int)strlen(tfr->data), tfr->data_size); + LOG_ERROR("strlen(tfr->data)[%d] != tfr->data_size[%llu]", + (int)strlen(tfr->data), + (unsigned long long)tfr->data_size); LOG_ERROR("tfr->data = '%s' [%d]", tfr->data, (int)strlen(tfr->data)); return -EINVAL; @@ -1164,7 +1165,11 @@ static int clog_clear_region(struct clog_tfr *tfr) */ static int clog_get_resync_work(struct clog_tfr *tfr) { - struct {int i; uint64_t r; } *pkg = (void *)tfr->data; + struct { + int32_t i; + uint32_t arch_padding; + uint64_t r; + } *pkg = (void *)tfr->data; struct log_c *lc = get_log(tfr->uuid); if (!lc) @@ -1254,7 +1259,11 @@ static int clog_get_resync_work(struct clog_tfr *tfr) */ static int clog_set_region_sync(struct clog_tfr *tfr) { - struct { uint64_t region; int in_sync; } *pkg = (void *)tfr->data; + struct { + uint64_t region; + uint32_t arch_padding; + int32_t in_sync; + } *pkg = (void *)tfr->data; struct log_c *lc = get_log(tfr->uuid); if (!lc) @@ -1485,7 +1494,11 @@ static int clog_status_table(struct clog_tfr *tfr) static int clog_is_remote_recovering(struct clog_tfr *tfr) { uint64_t region = *((uint64_t *)(tfr->data)); - struct { int is_recovering; uint64_t in_sync_hint; } *pkg = (void *)tfr->data; + struct { + int32_t is_recovering; + uint32_t arch_padding; + uint64_t in_sync_hint; + } *pkg = (void *)tfr->data; struct log_c *lc = get_log(tfr->uuid); if (!lc) diff --git a/cmirror/src/local.c b/cmirror/src/local.c index 7f9a403..cf64855 100644 --- a/cmirror/src/local.c +++ b/cmirror/src/local.c @@ -263,6 +263,7 @@ static int do_local_work(void *data) case DM_CLOG_GET_REGION_SIZE: default: LOG_ERROR("Invalid log request received, ignoring."); + return 0; }
reply other threads:[~2009-06-11 16:15 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20090611161519.DC3AA1201D7@lists.fedorahosted.org \ --to=jbrassow@fedoraproject.org \ --cc=cluster-cvs-relay@redhat.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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 read-only IMAP folder(s) and NNTP newsgroup(s).