Skip to content

Commit

Permalink
xfs: return a void pointer from xfs_buf_offset
Browse files Browse the repository at this point in the history
This avoids all kinds of unessecary casts in an envrionment like Linux where
we can assume that pointer arithmetics are support on void pointers.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
  • Loading branch information
Christoph Hellwig authored and Dave Chinner committed Jun 21, 2015
1 parent fc51c2b commit 88ee2df
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 17 deletions.
3 changes: 1 addition & 2 deletions fs/xfs/libxfs/xfs_ialloc.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,7 @@ xfs_icluster_size_fsb(
static inline struct xfs_dinode *
xfs_make_iptr(struct xfs_mount *mp, struct xfs_buf *b, int o)
{
return (struct xfs_dinode *)
(xfs_buf_offset(b, o << (mp)->m_sb.sb_inodelog));
return xfs_buf_offset(b, o << (mp)->m_sb.sb_inodelog);
}

/*
Expand Down
8 changes: 3 additions & 5 deletions fs/xfs/libxfs/xfs_inode_buf.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,7 @@ xfs_inobp_check(
j = mp->m_inode_cluster_size >> mp->m_sb.sb_inodelog;

for (i = 0; i < j; i++) {
dip = (xfs_dinode_t *)xfs_buf_offset(bp,
i * mp->m_sb.sb_inodesize);
dip = xfs_buf_offset(bp, i * mp->m_sb.sb_inodesize);
if (!dip->di_next_unlinked) {
xfs_alert(mp,
"Detected bogus zero next_unlinked field in inode %d buffer 0x%llx.",
Expand Down Expand Up @@ -86,8 +85,7 @@ xfs_inode_buf_verify(
int di_ok;
xfs_dinode_t *dip;

dip = (struct xfs_dinode *)xfs_buf_offset(bp,
(i << mp->m_sb.sb_inodelog));
dip = xfs_buf_offset(bp, (i << mp->m_sb.sb_inodelog));
di_ok = dip->di_magic == cpu_to_be16(XFS_DINODE_MAGIC) &&
XFS_DINODE_GOOD_VERSION(dip->di_version);
if (unlikely(XFS_TEST_ERROR(!di_ok, mp,
Expand Down Expand Up @@ -186,7 +184,7 @@ xfs_imap_to_bp(
}

*bpp = bp;
*dipp = (struct xfs_dinode *)xfs_buf_offset(bp, imap->im_boffset);
*dipp = xfs_buf_offset(bp, imap->im_boffset);
return 0;
}

Expand Down
6 changes: 3 additions & 3 deletions fs/xfs/xfs_buf.c
Original file line number Diff line number Diff line change
Expand Up @@ -1419,9 +1419,9 @@ xfs_buf_submit_wait(
return error;
}

xfs_caddr_t
void *
xfs_buf_offset(
xfs_buf_t *bp,
struct xfs_buf *bp,
size_t offset)
{
struct page *page;
Expand All @@ -1431,7 +1431,7 @@ xfs_buf_offset(

offset += bp->b_offset;
page = bp->b_pages[offset >> PAGE_SHIFT];
return (xfs_caddr_t)page_address(page) + (offset & (PAGE_SIZE-1));
return page_address(page) + (offset & (PAGE_SIZE-1));
}

/*
Expand Down
2 changes: 1 addition & 1 deletion fs/xfs/xfs_buf.h
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ extern void xfs_buf_iomove(xfs_buf_t *, size_t, size_t, void *,
xfs_buf_iomove((bp), (off), (len), NULL, XBRW_ZERO)

/* Buffer Utility Routines */
extern xfs_caddr_t xfs_buf_offset(xfs_buf_t *, size_t);
extern void *xfs_buf_offset(struct xfs_buf *, size_t);

/* Delayed Write Buffer Routines */
extern bool xfs_buf_delwri_queue(struct xfs_buf *, struct list_head *);
Expand Down
2 changes: 1 addition & 1 deletion fs/xfs/xfs_inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -3464,7 +3464,7 @@ xfs_iflush_int(
ASSERT(ip->i_d.di_version > 1);

/* set *dip = inode's place in the buffer */
dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset);
dip = xfs_buf_offset(bp, ip->i_imap.im_boffset);

if (XFS_TEST_ERROR(dip->di_magic != cpu_to_be16(XFS_DINODE_MAGIC),
mp, XFS_ERRTAG_IFLUSH_1, XFS_RANDOM_IFLUSH_1)) {
Expand Down
9 changes: 4 additions & 5 deletions fs/xfs/xfs_log_recover.c
Original file line number Diff line number Diff line change
Expand Up @@ -1789,16 +1789,15 @@ xlog_recover_do_inode_buffer(
return -EFSCORRUPTED;
}

buffer_nextp = (xfs_agino_t *)xfs_buf_offset(bp,
next_unlinked_offset);
buffer_nextp = xfs_buf_offset(bp, next_unlinked_offset);
*buffer_nextp = *logged_nextp;

/*
* If necessary, recalculate the CRC in the on-disk inode. We
* have to leave the inode in a consistent state for whoever
* reads it next....
*/
xfs_dinode_calc_crc(mp, (struct xfs_dinode *)
xfs_dinode_calc_crc(mp,
xfs_buf_offset(bp, i * mp->m_sb.sb_inodesize));

}
Expand Down Expand Up @@ -2546,7 +2545,7 @@ xlog_recover_inode_pass2(
goto out_release;
}
ASSERT(in_f->ilf_fields & XFS_ILOG_CORE);
dip = (xfs_dinode_t *)xfs_buf_offset(bp, in_f->ilf_boffset);
dip = xfs_buf_offset(bp, in_f->ilf_boffset);

/*
* Make sure the place we're flushing out to really looks
Expand Down Expand Up @@ -2885,7 +2884,7 @@ xlog_recover_dquot_pass2(
return error;

ASSERT(bp);
ddq = (xfs_disk_dquot_t *)xfs_buf_offset(bp, dq_f->qlf_boffset);
ddq = xfs_buf_offset(bp, dq_f->qlf_boffset);

/*
* If the dquot has an LSN in it, recover the dquot only if it's less
Expand Down

0 comments on commit 88ee2df

Please sign in to comment.