[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