cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
From: teigland@sourceware.org <teigland@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] cluster/group/gfs_controld plock.c
Date: 2 Aug 2006 19:23:43 -0000	[thread overview]
Message-ID: <20060802192343.30538.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland at sourceware.org	2006-08-02 19:23:42

Modified files:
	group/gfs_controld: plock.c 

Log message:
	do byte-swapping

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/gfs_controld/plock.c.diff?cvsroot=cluster&r1=1.4&r2=1.5

--- cluster/group/gfs_controld/plock.c	2006/08/02 18:27:57	1.4
+++ cluster/group/gfs_controld/plock.c	2006/08/02 19:23:41	1.5
@@ -87,6 +87,36 @@
 	struct gdlm_plock_info	info;
 };
 
+static void info_bswap_out(struct gdlm_plock_info *i)
+{
+	i->version[0]	= cpu_to_le32(i->version[0]);
+	i->version[1]	= cpu_to_le32(i->version[1]);
+	i->version[2]	= cpu_to_le32(i->version[2]);
+	i->pid		= cpu_to_le32(i->pid);
+	i->nodeid	= cpu_to_le32(i->nodeid);
+	i->rv		= cpu_to_le32(i->rv);
+	i->fsid		= cpu_to_le32(i->fsid);
+	i->number	= cpu_to_le64(i->number);
+	i->start	= cpu_to_le64(i->start);
+	i->end		= cpu_to_le64(i->end);
+	i->owner	= cpu_to_le64(i->owner);
+}
+
+static void info_bswap_in(struct gdlm_plock_info *i)
+{
+	i->version[0]	= le32_to_cpu(i->version[0]);
+	i->version[1]	= le32_to_cpu(i->version[1]);
+	i->version[2]	= le32_to_cpu(i->version[2]);
+	i->pid		= le32_to_cpu(i->pid);
+	i->nodeid	= le32_to_cpu(i->nodeid);
+	i->rv		= le32_to_cpu(i->rv);
+	i->fsid		= le32_to_cpu(i->fsid);
+	i->number	= le64_to_cpu(i->number);
+	i->start	= le64_to_cpu(i->start);
+	i->end		= le64_to_cpu(i->end);
+	i->owner	= le64_to_cpu(i->owner);
+}
+
 static int get_proc_number(const char *file, const char *name, uint32_t *number)
 {
 	FILE *fl;
@@ -267,14 +297,15 @@
 
 	info.nodeid = our_nodeid;
 
-	/* FIXME: do byte swapping */
-
 	hd = (struct gdlm_header *)buf;
 	hd->type = MSG_PLOCK;
 	hd->nodeid = our_nodeid;
 	hd->to_nodeid = 0;
 	memcpy(buf + sizeof(struct gdlm_header), &info, sizeof(info));
 
+	info_bswap_out((struct gdlm_plock_info *) buf +
+						  sizeof(struct gdlm_header));
+
 	rv = send_group_message(mg, len, buf);
 
 	free(buf);
@@ -755,7 +786,7 @@
 
 	memcpy(&info, buf + sizeof(struct gdlm_header), sizeof(info));
 
-	/* FIXME: do byte swapping */
+	info_bswap_in(&info);
 
 	log_group(mg, "receive_plock from %d op %d fs %x num %llx ex %d w %d",
 		  from, info.optype, info.fsid, info.number, info.ex,
@@ -847,11 +878,11 @@
 	pp = (struct pack_plock *) &section_buf;
 
 	list_for_each_entry(po, &r->locks, list) {
-		pp->start	= po->start;
-		pp->end		= po->end;
-		pp->owner	= po->owner;
-		pp->pid		= po->pid;
-		pp->nodeid	= po->nodeid;
+		pp->start	= cpu_to_le64(po->start);
+		pp->end		= cpu_to_le64(po->end);
+		pp->owner	= cpu_to_le64(po->owner);
+		pp->pid		= cpu_to_le32(po->pid);
+		pp->nodeid	= cpu_to_le32(po->nodeid);
 		pp->ex		= po->ex;
 		pp->waiter	= 0;
 		pp++;
@@ -859,11 +890,11 @@
 	}
 
 	list_for_each_entry(w, &r->waiters, list) {
-		pp->start	= w->info.start;
-		pp->end		= w->info.end;
-		pp->owner	= w->info.owner;
-		pp->pid		= w->info.pid;
-		pp->nodeid	= w->info.nodeid;
+		pp->start	= cpu_to_le64(w->info.start);
+		pp->end		= cpu_to_le64(w->info.end);
+		pp->owner	= cpu_to_le64(w->info.owner);
+		pp->pid		= cpu_to_le32(w->info.pid);
+		pp->nodeid	= cpu_to_le32(w->info.nodeid);
 		pp->ex		= w->info.ex;
 		pp->waiter	= 1;
 		pp++;
@@ -899,20 +930,20 @@
 	for (i = 0; i < count; i++) {
 		if (!pp->waiter) {
 			po = malloc(sizeof(struct posix_lock));
-			po->start	= pp->start;
-			po->end		= pp->end;
-			po->owner	= pp->owner;
-			po->pid		= pp->pid;
-			po->nodeid	= pp->nodeid;
+			po->start	= le64_to_cpu(pp->start);
+			po->end		= le64_to_cpu(pp->end);
+			po->owner	= le64_to_cpu(pp->owner);
+			po->pid		= le32_to_cpu(pp->pid);
+			po->nodeid	= le32_to_cpu(pp->nodeid);
 			po->ex		= pp->ex;
 			list_add_tail(&po->list, &r->locks);
 		} else {
 			w = malloc(sizeof(struct lock_waiter));
-			w->info.start	= pp->start;
-			w->info.end	= pp->end;
-			w->info.owner	= pp->owner;
-			w->info.pid	= pp->pid;
-			w->info.nodeid	= pp->nodeid;
+			w->info.start	= le64_to_cpu(pp->start);
+			w->info.end	= le64_to_cpu(pp->end);
+			w->info.owner	= le64_to_cpu(pp->owner);
+			w->info.pid	= le32_to_cpu(pp->pid);
+			w->info.nodeid	= le32_to_cpu(pp->nodeid);
 			w->info.ex	= pp->ex;
 			list_add_tail(&w->list, &r->waiters);
 		}



             reply	other threads:[~2006-08-02 19:23 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-02 19:23 teigland [this message]
  -- strict thread matches above, loose matches on Subject: below --
2006-08-08 18:43 [Cluster-devel] cluster/group/gfs_controld plock.c teigland
2006-08-08 19:37 teigland
2006-08-14 20:15 teigland
2006-08-15 22:21 rpeterso
2006-08-16 17:05 teigland
2006-08-16 19:30 teigland
2006-08-17 19:39 teigland
2006-10-09 21:51 teigland
2006-11-03 15:33 teigland
2006-11-20 18:10 teigland
2006-11-20 18:12 teigland
2006-11-20 18:13 teigland
2006-11-20 21:28 teigland
2006-11-20 21:29 teigland
2006-11-20 21:29 teigland
2007-06-08 21:30 teigland
2007-06-08 21:31 teigland
2007-11-29 21:27 teigland
2007-11-30 16:20 teigland
2008-01-21 20:17 teigland
2008-01-21 20:19 teigland
2008-01-21 20:21 teigland

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=20060802192343.30538.qmail@sourceware.org \
    --to=teigland@sourceware.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 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).