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: Mon, 1 Dec 2008 08:42:05 -0500
Cc: "xfs@xxxxxxxxxxx" <xfs@xxxxxxxxxxx>
In-reply-to: <op.ulg0j1bf3jf8g2@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <op.ulg0j1bf3jf8g2@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
User-agent: Mutt/1.5.18 (2008-05-17)
On Mon, Dec 01, 2008 at 05:34:39PM +1100, Barry Naujok wrote:
> xfs_repair is the main culprit when getting disk extents which aren't
> properly aligned in memory. This patch does not call
> xfs_bmbt_disk_get_all directly anymore but does an unaligned get on
> the disk extent record and calls xfs_bmbt_get_all which is host-based
> like the rest of the kernel routines do.

What about just doin the get_unaligned in xfs_bmbt_disk_get_all?  That
way we could just use it everywhere.  The only users that don't need
the get_unaligned are in the tracing code, and I don't think we should
be worried about that little bit of overhead.

> @@ -277,21 +277,17 @@ convert_extent(
>       xfs_dfilblks_t          *cp,
>       int                     *fp)
>   {

And then we could replace this helper with a direct call to
xfs_bmbt_disk_get_all as the caller would be much cleaner with a
xfs_bmbt_irec_t on the stack anyway..

> --- a/xfsprogs/repair/dino_chunks.c   2008-12-01 17:10:37.000000000 +1100
> +++ b/xfsprogs/repair/dino_chunks.c   2008-12-01 16:11:11.549834281 +1100
> @@ -609,7 +609,8 @@ process_inode_chunk(
>       if (blks_per_cluster == 0)
>               blks_per_cluster = 1;
>       cluster_count = XFS_INODES_PER_CHUNK / inodes_per_cluster;
> -     ASSERT(cluster_count > 0);
> +     if (cluster_count == 0)
> +             cluster_count = 1;

I can't see how this is related.

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