xfs
[Top] [All Lists]

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

To: Barry Naujok <bnaujok@xxxxxxx>
Subject: Re: [REVIEW] Fix unaligned accesses in IA64 in xfsprogs
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Tue, 2 Dec 2008 01:46:35 -0500
Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx>, "xfs@xxxxxxxxxxx" <xfs@xxxxxxxxxxx>
In-reply-to: <op.ulieotl73jf8g2@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <op.ulg0j1bf3jf8g2@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> <20081201134205.GA7528@xxxxxxxxxxxxx> <op.ulieotl73jf8g2@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
User-agent: Mutt/1.5.18 (2008-05-17)
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@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs
---end quoted text---

<Prev in Thread] Current Thread [Next in Thread>