From cc640d96802268715065e4c3e8b16a6950b191a0 Mon Sep 17 00:00:00 2001 From: Mark Fasheh Date: Thu, 19 Feb 2009 13:17:05 -0800 Subject: [PATCH] --- yaml --- r: 140301 b: refs/heads/master c: 1d46dc08d33138c29c63d717807c08ab704fc773 h: refs/heads/master i: 140299: d0042e38371da2740e0b225a7425556fa46c165f v: v3 --- [refs] | 2 +- trunk/fs/ocfs2/dir.c | 3 +-- trunk/fs/ocfs2/ocfs2.h | 10 ++++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 6809f2a7d957..8d242f00fe28 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b80b549c3520b31d3bbc4b36e37e0a5102da0b94 +refs/heads/master: 1d46dc08d33138c29c63d717807c08ab704fc773 diff --git a/trunk/fs/ocfs2/dir.c b/trunk/fs/ocfs2/dir.c index 5e6aeb00cb43..e71160cda110 100644 --- a/trunk/fs/ocfs2/dir.c +++ b/trunk/fs/ocfs2/dir.c @@ -3941,8 +3941,7 @@ static int ocfs2_dx_dir_rebalance(struct ocfs2_super *osb, struct inode *dir, goto out_commit; } - orig_leaves_start = leaf_blkno & ~(osb->s_clustersize_bits - - osb->sb->s_blocksize_bits); + orig_leaves_start = ocfs2_block_to_cluster_start(dir->i_sb, leaf_blkno); ret = ocfs2_read_dx_leaves(dir, orig_leaves_start, num_dx_leaves, orig_dx_leaves); if (ret) { diff --git a/trunk/fs/ocfs2/ocfs2.h b/trunk/fs/ocfs2/ocfs2.h index fa3c6d3f0bd2..e1844d5736c4 100644 --- a/trunk/fs/ocfs2/ocfs2.h +++ b/trunk/fs/ocfs2/ocfs2.h @@ -582,6 +582,16 @@ static inline u64 ocfs2_clusters_to_bytes(struct super_block *sb, return (u64)clusters << OCFS2_SB(sb)->s_clustersize_bits; } +static inline u64 ocfs2_block_to_cluster_start(struct super_block *sb, + u64 blocks) +{ + int bits = OCFS2_SB(sb)->s_clustersize_bits - sb->s_blocksize_bits; + unsigned int clusters; + + clusters = ocfs2_blocks_to_clusters(sb, blocks); + return (u64)clusters << bits; +} + static inline u64 ocfs2_align_bytes_to_clusters(struct super_block *sb, u64 bytes) {