[Ocfs2-commits] mfasheh commits r1753 - trunk/src

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Mon Jan 10 17:57:58 CST 2005


Author: mfasheh
Date: 2005-01-10 17:57:56 -0600 (Mon, 10 Jan 2005)
New Revision: 1753

Modified:
   trunk/src/alloc.c
   trunk/src/dlmglue.c
   trunk/src/dlmglue.h
Log:
* make the lvb stuff host endian independent



Modified: trunk/src/alloc.c
===================================================================
--- trunk/src/alloc.c	2005-01-10 23:55:05 UTC (rev 1752)
+++ trunk/src/alloc.c	2005-01-10 23:57:56 UTC (rev 1753)
@@ -1174,7 +1174,7 @@
 						     i_size_read(inode));
 
 	/* the extent map gets truncated in ocfs_do_truncate */
-	ocfs2_lvb_set_trunc_clusters(inode, target_i_clusters);
+	ocfs2_meta_lvb_set_trunc_clusters(inode, target_i_clusters);
 
 	last_eb_bh = tc->tc_last_eb_bh;
 	tc->tc_last_eb_bh = NULL;

Modified: trunk/src/dlmglue.c
===================================================================
--- trunk/src/dlmglue.c	2005-01-10 23:55:05 UTC (rev 1752)
+++ trunk/src/dlmglue.c	2005-01-10 23:57:56 UTC (rev 1753)
@@ -221,14 +221,18 @@
 static inline int ocfs2_lvb_is_trustable(ocfs2_lock_res *lockres)
 {
 	ocfs2_lvb *lvb = (ocfs2_lvb *) lockres->l_lksb.lvb;
+	unsigned int lvb_seq;
 	int ret = 0;
 
 	LOG_ENTRY();
 
 	spin_lock(&lockres->l_lock);
-	if (lvb->lvb_seq &&
-	    lockres->l_local_seq == lvb->lvb_seq)
+
+	lvb_seq = be32_to_cpu(lvb->lvb_seq);
+	if (lvb_seq &&
+	    lockres->l_local_seq == lvb_seq)
 		ret = 1;
+
 	spin_unlock(&lockres->l_lock);
 
 	LOG_EXIT_STATUS(ret);
@@ -238,20 +242,24 @@
 static inline void ocfs2_set_local_seq_from_lvb(ocfs2_lock_res *lockres)
 {
 	ocfs2_lvb *lvb = (ocfs2_lvb *) lockres->l_lksb.lvb;
+	unsigned int lvb_seq;
 
 	LOG_ENTRY();
 
 	spin_lock(&lockres->l_lock);
-	if (lvb->lvb_seq)
-		lockres->l_local_seq = lvb->lvb_seq;
+
+	lvb_seq = be32_to_cpu(lvb->lvb_seq);
+	if (lvb_seq)
+		lockres->l_local_seq = lvb_seq;
+
 	spin_unlock(&lockres->l_lock);
 
 	LOG_EXIT();
 }
 
 /* fill in new values as we add them to the lvb. */
-static inline void ocfs2_meta_lvb_get_values(ocfs2_lock_res *lockres,
-					     unsigned int *trunc_clusters)
+static inline void ocfs2_meta_lvb_get_trunc_clusters(ocfs2_lock_res *lockres,
+						     unsigned int *trunc_clusters)
 {
 	ocfs2_meta_lvb *lvb;
 
@@ -264,7 +272,7 @@
 
 	lvb = (ocfs2_meta_lvb *) lockres->l_lksb.lvb;
 	if (trunc_clusters)
-		*trunc_clusters = lvb->lvb_trunc_clusters;
+		*trunc_clusters = be32_to_cpu(lvb->lvb_trunc_clusters);
 
 	spin_unlock(&lockres->l_lock);
 
@@ -636,6 +644,8 @@
 	       lockres->l_level, 
 	       (lockres->l_type == OCFS_TYPE_META) ? "Meta" : "Data");
 
+	OCFS_ASSERT(level > LKM_NLMODE);
+
 	ocfs2_generic_handle_bast(lockres, level);
 
 	ocfs2_schedule_blocked_inode_lock(inode, lockres);
@@ -844,6 +854,7 @@
 		/* is someone sitting in dlm_lock? If so, wait on
 		 * them. */
 		spin_unlock(&lockres->l_lock);
+
 		ocfs2_wait_on_busy_lock(lockres);
 		goto again;
 	}
@@ -864,6 +875,7 @@
 		/* is the lock is currently blocked on behalf of
 		 * another node */
 		spin_unlock(&lockres->l_lock);
+
 		ocfs2_wait_on_blocked_lock(lockres);
 		goto again;
 	}
@@ -1076,7 +1088,9 @@
 
 /* Call this with the lockres locked. I am reasonably sure we don't
  * need ip_lock in this function as anyone who would be changing those
- * values is supposed to be blocked in ocfs2_meta_lock right now. */
+ * values is supposed to be blocked in ocfs2_meta_lock right now.
+ * This doesn't stuff trunc_clusters as that should already be up to
+ * date from the truncate code. */
 static void __ocfs2_stuff_meta_lvb(struct inode *inode)
 {
 	ocfs_inode_private *oip = OCFS_I(inode);
@@ -1085,15 +1099,15 @@
 
 	LOG_ENTRY();
 
-	lvb->lvb_iclusters = oip->ip_clusters;
-	lvb->lvb_iuid      = inode->i_uid;
-	lvb->lvb_igid      = inode->i_gid;
-	lvb->lvb_isize     = i_size_read(inode);
-	lvb->lvb_imode     = inode->i_mode;
-	lvb->lvb_inlink    = inode->i_nlink;
-	lvb->lvb_iatime    = ocfs_get_seconds(inode->i_atime);
-	lvb->lvb_ictime    = ocfs_get_seconds(inode->i_ctime);
-	lvb->lvb_imtime    = ocfs_get_seconds(inode->i_mtime);
+	lvb->lvb_iclusters = cpu_to_be32(oip->ip_clusters);
+	lvb->lvb_iuid      = cpu_to_be32(inode->i_uid);
+	lvb->lvb_igid      = cpu_to_be32(inode->i_gid);
+	lvb->lvb_isize     = cpu_to_be64(i_size_read(inode));
+	lvb->lvb_imode     = cpu_to_be16(inode->i_mode);
+	lvb->lvb_inlink    = cpu_to_be16(inode->i_nlink);
+	lvb->lvb_iatime    = cpu_to_be64(ocfs_get_seconds(inode->i_atime));
+	lvb->lvb_ictime    = cpu_to_be64(ocfs_get_seconds(inode->i_ctime));
+	lvb->lvb_imtime    = cpu_to_be64(ocfs_get_seconds(inode->i_mtime));
 
 	LOG_EXIT();
 }
@@ -1107,29 +1121,32 @@
 	LOG_ENTRY();
 
 	dprintk("seq %u, trunc clusters %u, iclusters %u\n",
-		lvb->lvb.lvb_seq, lvb->lvb_trunc_clusters, lvb->lvb_iclusters);
+		be32_to_cpu(lvb->lvb.lvb_seq),
+		be32_to_cpu(lvb->lvb_trunc_clusters),
+		be32_to_cpu(lvb->lvb_iclusters));
 	dprintk("uid %u, gid %u, isize %llu, mode 0x%x\n",
-		lvb->lvb_iuid, lvb->lvb_igid, lvb->lvb_isize, lvb->lvb_imode);
+		be32_to_cpu(lvb->lvb_iuid), be32_to_cpu(lvb->lvb_igid),
+		be64_to_cpu(lvb->lvb_isize), be16_to_cpu(lvb->lvb_imode));
 	dprintk("nlink %u, atime %llx, ctime %llx, mtime %llx\n",
-	       lvb->lvb_inlink, lvb->lvb_iatime, lvb->lvb_ictime,
-		lvb->lvb_imtime);
+		be16_to_cpu(lvb->lvb_inlink), be64_to_cpu(lvb->lvb_iatime), 
+		be64_to_cpu(lvb->lvb_ictime), be64_to_cpu(lvb->lvb_imtime));
 
 	/* We're safe here without the lockres lock... */
 	spin_lock(&oip->ip_lock);
-	oip->ip_clusters = lvb->lvb_iclusters;
-	inode->i_uid     = lvb->lvb_iuid;
-	inode->i_gid     = lvb->lvb_igid;
-	i_size_write(inode, lvb->lvb_isize);
-	inode->i_mode    = lvb->lvb_imode;
-	inode->i_nlink   = lvb->lvb_inlink;
+	oip->ip_clusters = be32_to_cpu(lvb->lvb_iclusters);
+	inode->i_uid     = be32_to_cpu(lvb->lvb_iuid);
+	inode->i_gid     = be32_to_cpu(lvb->lvb_igid);
+	i_size_write(inode, be64_to_cpu(lvb->lvb_isize));
+	inode->i_mode    = be16_to_cpu(lvb->lvb_imode);
+	inode->i_nlink   = be16_to_cpu(lvb->lvb_inlink);
 	/* fast-symlinks are a special case */
 	if (S_ISLNK(inode->i_mode) && !oip->ip_clusters)
 		inode->i_blocks = 0;
 	else
 		inode->i_blocks  = (inode->i_size + inode->i_sb->s_blocksize - 1) >> inode->i_sb->s_blocksize_bits;
-	OCFS_SET_INODE_TIME(inode, i_atime, lvb->lvb_iatime);
-	OCFS_SET_INODE_TIME(inode, i_ctime, lvb->lvb_ictime);
-	OCFS_SET_INODE_TIME(inode, i_mtime, lvb->lvb_imtime);
+	OCFS_SET_INODE_TIME(inode, i_atime, be64_to_cpu(lvb->lvb_iatime));
+	OCFS_SET_INODE_TIME(inode, i_ctime, be64_to_cpu(lvb->lvb_ictime));
+	OCFS_SET_INODE_TIME(inode, i_mtime, be64_to_cpu(lvb->lvb_imtime));
 	spin_unlock(&oip->ip_lock);
 
 	LOG_EXIT();
@@ -1149,7 +1166,7 @@
 
 	spin_lock(&lockres->l_lock);
 	if (lockres->l_level == LKM_EXMODE)
-		lvb->lvb_trunc_clusters = i_clusters;
+		lvb->lvb_trunc_clusters = cpu_to_be32(i_clusters);
 	spin_unlock(&lockres->l_lock);
 
 	LOG_EXIT();
@@ -1159,19 +1176,21 @@
 				       int new_level)
 {
 	ocfs2_lvb *lvb = (ocfs2_lvb *) lockres->l_lksb.lvb;
+	u32 lvb_seq = be32_to_cpu(lvb->lvb_seq);
 
 	LOG_ENTRY();
 
 	if (lockres->l_level == LKM_EXMODE) {
-		lvb->lvb_seq++;
+		lvb_seq++;
 		/* Overflow? */
-		if (!lvb->lvb_seq)
-			lvb->lvb_seq = 1;
-		lockres->l_local_seq = lvb->lvb_seq;
+		if (!lvb_seq)
+			lvb_seq = 1;
+		lockres->l_local_seq = lvb_seq;
 		if (new_level == LKM_NLMODE)
 			lockres->l_local_seq++;
+		lvb->lvb_seq = cpu_to_be32(lvb_seq);
 	} else if (lockres->l_level == LKM_PRMODE) {
-		if (lvb->lvb_seq)
+		if (lvb_seq)
 			lockres->l_local_seq++;
 	}
 
@@ -1181,7 +1200,7 @@
 /* Determine whether a lock resource needs to be refreshed, and
  * arbitrate who gets to refresh it.
  *
- * -1 means error, 0 means no refresh needed, > 0 means you need to
+ * < 0 means error, 0 means no refresh needed, > 0 means you need to
  *   refresh this and you MUST call ocfs2_complete_lock_res_refresh
  *   afterwards. */
 static int ocfs2_should_refresh_lock_res(ocfs2_lock_res *lockres)
@@ -1264,7 +1283,8 @@
 	if (!(OCFS_I(inode)->ip_flags & OCFS_INODE_BITMAP) &&
 	    ocfs2_lvb_is_trustable(lockres)) {
 		/* yay, fastpath! */
-		ocfs2_meta_lvb_get_values(lockres, &trustable_clusters);
+		ocfs2_meta_lvb_get_trunc_clusters(lockres,
+						  &trustable_clusters);
 		ocfs2_refresh_inode_from_lvb(inode);
 	} else {
 		/* Boo, we have to go to disk. */
@@ -2087,4 +2107,3 @@
 	ocfs2_schedule_blocked_lock(OCFS2_SB(inode->i_sb), lockres);
 	LOG_EXIT();
 }
-

Modified: trunk/src/dlmglue.h
===================================================================
--- trunk/src/dlmglue.h	2005-01-10 23:55:05 UTC (rev 1752)
+++ trunk/src/dlmglue.h	2005-01-10 23:57:56 UTC (rev 1753)
@@ -113,8 +113,8 @@
 void ocfs2_process_blocked_lock(ocfs_super *osb,
 				ocfs2_lock_res *lockres);
 
-static inline void ocfs2_lvb_set_trunc_clusters(struct inode *inode,
-						unsigned int trunc_clusters)
+static inline void ocfs2_meta_lvb_set_trunc_clusters(struct inode *inode,
+						     unsigned int trunc_clusters)
 {
 	ocfs2_lock_res *lockres = &OCFS_I(inode)->ip_meta_lockres;
 	ocfs2_meta_lvb *lvb;
@@ -123,8 +123,8 @@
 	OCFS_ASSERT(lockres->l_level == LKM_EXMODE);
 
 	lvb = (ocfs2_meta_lvb *) lockres->l_lksb.lvb;
-	if (lvb->lvb_trunc_clusters > trunc_clusters)
-		lvb->lvb_trunc_clusters = trunc_clusters;
+	if (be32_to_cpu(lvb->lvb_trunc_clusters) > trunc_clusters)
+		lvb->lvb_trunc_clusters = cpu_to_be32(trunc_clusters);
 	spin_unlock(&lockres->l_lock);
 }
 



More information about the Ocfs2-commits mailing list