aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/xattr.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ocfs2/xattr.c')
-rw-r--r--fs/ocfs2/xattr.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
index 3cf8e80b2b6..8594df36640 100644
--- a/fs/ocfs2/xattr.c
+++ b/fs/ocfs2/xattr.c
@@ -155,6 +155,7 @@ static inline u16 ocfs2_xattr_max_xe_in_bucket(struct super_block *sb)
155} 155}
156 156
157#define bucket_blkno(_b) ((_b)->bu_bhs[0]->b_blocknr) 157#define bucket_blkno(_b) ((_b)->bu_bhs[0]->b_blocknr)
158#define bucket_block(_b, _n) ((_b)->bu_bhs[(_n)]->b_data)
158 159
159static inline const char *ocfs2_xattr_prefix(int name_index) 160static inline const char *ocfs2_xattr_prefix(int name_index)
160{ 161{
@@ -801,7 +802,7 @@ static int ocfs2_xattr_block_get(struct inode *inode,
801 i, 802 i,
802 &block_off, 803 &block_off,
803 &name_offset); 804 &name_offset);
804 xs->base = xs->bucket.bu_bhs[block_off]->b_data; 805 xs->base = bucket_block(&xs->bucket, block_off);
805 } 806 }
806 if (ocfs2_xattr_is_local(xs->here)) { 807 if (ocfs2_xattr_is_local(xs->here)) {
807 memcpy(buffer, (void *)xs->base + 808 memcpy(buffer, (void *)xs->base +
@@ -2280,11 +2281,11 @@ static int ocfs2_xattr_bucket_find(struct inode *inode,
2280 } 2281 }
2281 xs->bucket.bu_bhs[0] = lower_bh; 2282 xs->bucket.bu_bhs[0] = lower_bh;
2282 xs->bucket.bu_xh = (struct ocfs2_xattr_header *) 2283 xs->bucket.bu_xh = (struct ocfs2_xattr_header *)
2283 xs->bucket.bu_bhs[0]->b_data; 2284 bucket_block(&xs->bucket, 0);
2284 lower_bh = NULL; 2285 lower_bh = NULL;
2285 2286
2286 xs->header = xs->bucket.bu_xh; 2287 xs->header = xs->bucket.bu_xh;
2287 xs->base = xs->bucket.bu_bhs[0]->b_data; 2288 xs->base = bucket_block(&xs->bucket, 0);
2288 xs->end = xs->base + inode->i_sb->s_blocksize; 2289 xs->end = xs->base + inode->i_sb->s_blocksize;
2289 2290
2290 if (found) { 2291 if (found) {
@@ -2378,7 +2379,7 @@ static int ocfs2_iterate_xattr_buckets(struct inode *inode,
2378 goto out; 2379 goto out;
2379 } 2380 }
2380 2381
2381 bucket.bu_xh = (struct ocfs2_xattr_header *)bucket.bu_bhs[0]->b_data; 2382 bucket.bu_xh = (struct ocfs2_xattr_header *)bucket_block(&bucket, 0);
2382 /* 2383 /*
2383 * The real bucket num in this series of blocks is stored 2384 * The real bucket num in this series of blocks is stored
2384 * in the 1st bucket. 2385 * in the 1st bucket.
@@ -2457,7 +2458,7 @@ static int ocfs2_list_xattr_bucket(struct inode *inode,
2457 if (ret) 2458 if (ret)
2458 break; 2459 break;
2459 2460
2460 name = (const char *)bucket->bu_bhs[block_off]->b_data + 2461 name = (const char *)bucket_block(bucket, block_off) +
2461 new_offset; 2462 new_offset;
2462 ret = ocfs2_xattr_list_entry(xl->buffer, 2463 ret = ocfs2_xattr_list_entry(xl->buffer,
2463 xl->buffer_size, 2464 xl->buffer_size,
@@ -2630,7 +2631,7 @@ static int ocfs2_xattr_update_xattr_search(struct inode *inode,
2630 2631
2631 xs->bucket.bu_bhs[0] = new_bh; 2632 xs->bucket.bu_bhs[0] = new_bh;
2632 get_bh(new_bh); 2633 get_bh(new_bh);
2633 xs->bucket.bu_xh = (struct ocfs2_xattr_header *)xs->bucket.bu_bhs[0]->b_data; 2634 xs->bucket.bu_xh = (struct ocfs2_xattr_header *)bucket_block(&xs->bucket, 0);
2634 xs->header = xs->bucket.bu_xh; 2635 xs->header = xs->bucket.bu_xh;
2635 2636
2636 xs->base = new_bh->b_data; 2637 xs->base = new_bh->b_data;
@@ -3931,7 +3932,7 @@ static inline char *ocfs2_xattr_bucket_get_val(struct inode *inode,
3931 int block_off = offs >> inode->i_sb->s_blocksize_bits; 3932 int block_off = offs >> inode->i_sb->s_blocksize_bits;
3932 3933
3933 offs = offs % inode->i_sb->s_blocksize; 3934 offs = offs % inode->i_sb->s_blocksize;
3934 return bucket->bu_bhs[block_off]->b_data + offs; 3935 return bucket_block(bucket, block_off) + offs;
3935} 3936}
3936 3937
3937/* 3938/*