[Ocfs2-commits] mfasheh commits r2316 - trunk/fs/ocfs2
svn-commits at oss.oracle.com
svn-commits at oss.oracle.com
Tue May 24 17:47:21 CDT 2005
Author: mfasheh
Signed-off-by: jlbec
Date: 2005-05-24 17:47:20 -0500 (Tue, 24 May 2005)
New Revision: 2316
Modified:
trunk/fs/ocfs2/dlmglue.c
trunk/fs/ocfs2/dlmglue.h
Log:
* pack the ocfs2 lvb tighter, this saves us a couple u32's in there.
Signed-off-by: jlbec
Modified: trunk/fs/ocfs2/dlmglue.c
===================================================================
--- trunk/fs/ocfs2/dlmglue.c 2005-05-24 22:43:53 UTC (rev 2315)
+++ trunk/fs/ocfs2/dlmglue.c 2005-05-24 22:47:20 UTC (rev 2316)
@@ -1230,20 +1230,31 @@
* date from the truncate code. */
static void __ocfs2_stuff_meta_lvb(struct inode *inode)
{
- ocfs2_lock_res *lockres = &OCFS2_I(inode)->ip_meta_lockres;
+ unsigned int isize_off;
+ struct ocfs2_inode_info *oi = OCFS2_I(inode);
+ ocfs2_lock_res *lockres = &oi->ip_meta_lockres;
ocfs2_meta_lvb *lvb = (ocfs2_meta_lvb *) lockres->l_lksb.lvb;
mlog_entry_void();
- lvb->lvb_iclusters = cpu_to_be32(OCFS2_I(inode)->ip_clusters);
+ /* take advantage of the fact that we don't support holes --
+ * we only need the byte offset from i_clusters which nicely
+ * cuts our lvb storage requirement to a u32 */
+ isize_off = ocfs2_clusters_to_bytes(inode->i_sb, oi->ip_clusters)
+ - i_size_read(inode);
+
+ lvb->lvb_isize_off = cpu_to_be32(isize_off);
+ lvb->lvb_iclusters = cpu_to_be32(oi->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(ocfs2_pack_timespec(&inode->i_atime));
- lvb->lvb_ictime = cpu_to_be64(ocfs2_pack_timespec(&inode->i_ctime));
- lvb->lvb_imtime = cpu_to_be64(ocfs2_pack_timespec(&inode->i_mtime));
+ lvb->lvb_iatime_packed =
+ cpu_to_be64(ocfs2_pack_timespec(&inode->i_atime));
+ lvb->lvb_ictime_packed =
+ cpu_to_be64(ocfs2_pack_timespec(&inode->i_ctime));
+ lvb->lvb_imtime_packed =
+ cpu_to_be64(ocfs2_pack_timespec(&inode->i_mtime));
mlog_exit_void();
}
@@ -1257,7 +1268,9 @@
static void ocfs2_refresh_inode_from_lvb(struct inode *inode)
{
- ocfs2_lock_res *lockres = &OCFS2_I(inode)->ip_meta_lockres;
+ loff_t isize;
+ struct ocfs2_inode_info *oi = OCFS2_I(inode);
+ ocfs2_lock_res *lockres = &oi->ip_meta_lockres;
ocfs2_meta_lvb *lvb = (ocfs2_meta_lvb *) lockres->l_lksb.lvb;
mlog_entry_void();
@@ -1266,30 +1279,41 @@
be32_to_cpu(lvb->lvb.lvb_seq),
be32_to_cpu(lvb->lvb_trunc_clusters),
be32_to_cpu(lvb->lvb_iclusters));
- mlog(0, "uid %u, gid %u, isize %"MLFu64", mode 0x%x\n",
+ mlog(0, "uid %u, gid %u, isize offset %u, mode 0x%x\n",
be32_to_cpu(lvb->lvb_iuid), be32_to_cpu(lvb->lvb_igid),
- be64_to_cpu(lvb->lvb_isize), be16_to_cpu(lvb->lvb_imode));
- mlog(0, "nlink %u, atime %"MLFu64", ctime %"MLFx64", mtime %"MLFx64"\n",
- be16_to_cpu(lvb->lvb_inlink), be64_to_cpu(lvb->lvb_iatime),
- be64_to_cpu(lvb->lvb_ictime), be64_to_cpu(lvb->lvb_imtime));
+ be32_to_cpu(lvb->lvb_isize_off), be16_to_cpu(lvb->lvb_imode));
+ mlog(0, "nlink %u, atime_packed %"MLFu64", ctime_packed %"MLFx64", "
+ "mtime_packed %"MLFx64"\n",
+ be16_to_cpu(lvb->lvb_inlink), be64_to_cpu(lvb->lvb_iatime_packed),
+ be64_to_cpu(lvb->lvb_ictime_packed),
+ be64_to_cpu(lvb->lvb_imtime_packed));
/* We're safe here without the lockres lock... */
- spin_lock(&OCFS2_I(inode)->ip_lock);
- OCFS2_I(inode)->ip_clusters = be32_to_cpu(lvb->lvb_iclusters);
+ spin_lock(&oi->ip_lock);
+ oi->ip_clusters = be32_to_cpu(lvb->lvb_iclusters);
+
+ isize = ocfs2_clusters_to_bytes(inode->i_sb, oi->ip_clusters)
+ - be32_to_cpu(lvb->lvb_isize_off);
+ i_size_write(inode, isize);
+
+ /* fast-symlinks are a special case */
+ if (S_ISLNK(inode->i_mode) && !oi->ip_clusters)
+ inode->i_blocks = 0;
+ else
+ inode->i_blocks =
+ ocfs2_align_bytes_to_sectors(i_size_read(inode));
+
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) && !OCFS2_I(inode)->ip_clusters)
- inode->i_blocks = 0;
- else
- inode->i_blocks = ocfs2_align_bytes_to_sectors(i_size_read(inode));
- ocfs2_unpack_timespec(&inode->i_atime, be64_to_cpu(lvb->lvb_iatime));
- ocfs2_unpack_timespec(&inode->i_mtime, be64_to_cpu(lvb->lvb_imtime));
- ocfs2_unpack_timespec(&inode->i_ctime, be64_to_cpu(lvb->lvb_ictime));
- spin_unlock(&OCFS2_I(inode)->ip_lock);
+ ocfs2_unpack_timespec(&inode->i_atime,
+ be64_to_cpu(lvb->lvb_iatime_packed));
+ ocfs2_unpack_timespec(&inode->i_mtime,
+ be64_to_cpu(lvb->lvb_imtime_packed));
+ ocfs2_unpack_timespec(&inode->i_ctime,
+ be64_to_cpu(lvb->lvb_ictime_packed));
+ spin_unlock(&oi->ip_lock);
mlog_exit_void();
}
Modified: trunk/fs/ocfs2/dlmglue.h
===================================================================
--- trunk/fs/ocfs2/dlmglue.h 2005-05-24 22:43:53 UTC (rev 2315)
+++ trunk/fs/ocfs2/dlmglue.h 2005-05-24 22:47:20 UTC (rev 2316)
@@ -71,10 +71,11 @@
u32 lvb_igid;
u16 lvb_imode;
u16 lvb_inlink;
- u64 lvb_isize;
- u64 lvb_iatime;
- u64 lvb_ictime;
- u64 lvb_imtime;
+ u64 lvb_iatime_packed;
+ u64 lvb_ictime_packed;
+ u64 lvb_imtime_packed;
+ u32 lvb_isize_off;
+ u32 lvb_reserved[3];
} ocfs2_meta_lvb;
int ocfs2_dlm_init(ocfs_super *osb);
More information about the Ocfs2-commits
mailing list