Re: [REVIEW] Fix unaligned accesses in IA64 in xfsprogs

Christoph Hellwig
2008-12-02T06:52:17Z

This patch looks good to go to me.

On Tue, Dec 02, 2008 at 11:37:31AM +1100, Barry Naujok wrote:
> Obviously modifying xfs_bmbt_disk_get_all yields a much smaller patch:
>
> ===========================================================================
> xfsprogs/db/bmap.c
> ===========================================================================
>
> --- a/xfsprogs/db/bmap.c 2008-12-02 11:21:00.000000000 +1100
> +++ b/xfsprogs/db/bmap.c 2008-12-02 11:20:41.324928232 +1100
> @@ -277,21 +277,14 @@ convert_extent(
> xfs_dfilblks_t *cp,
> int *fp)
> {
> - xfs_bmbt_irec_t irec, *s = &irec;
> - xfs_bmbt_rec_t rpcopy, *p = &rpcopy;
> + xfs_bmbt_irec_t irec;
>
> - memmove(&rpcopy, rp, sizeof(rpcopy));
> - libxfs_bmbt_disk_get_all(p, s);
> + libxfs_bmbt_disk_get_all(rp, &irec);
>
> - if (s->br_state == XFS_EXT_UNWRITTEN) {
> - *fp = 1;
> - } else {
> - *fp = 0;
> - }
> -
> - *op = s->br_startoff;
> - *sp = s->br_startblock;
> - *cp = s->br_blockcount;
> + *fp = irec.br_state == XFS_EXT_UNWRITTEN;
> + *op = irec.br_startoff;
> + *sp = irec.br_startblock;
> + *cp = irec.br_blockcount;
> }
>
> void
>
> ===========================================================================
> xfsprogs/libxfs/xfs_bmap_btree.c
> ===========================================================================
>
> --- a/xfsprogs/libxfs/xfs_bmap_btree.c 2008-12-02 11:21:00.000000000 +1100
> +++ b/xfsprogs/libxfs/xfs_bmap_btree.c 2008-12-02 11:20:09.553355392 +1100
> @@ -181,7 +181,8 @@ xfs_bmbt_disk_get_all(
> xfs_bmbt_rec_t *r,
> xfs_bmbt_irec_t *s)
> {
> - __xfs_bmbt_get_all(be64_to_cpu(r->l0), be64_to_cpu(r->l1), s);
> + __xfs_bmbt_get_all(get_unaligned_be64(&r->l0),
> + get_unaligned_be64(&r->l1), s);
> }
>
> /*
>
> _______________________________________________
> xfs mailing list
> xfs@oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs
---end quoted text---