xfs
[Top] [All Lists]

Re: State of XFS on ARM

To: Daniel Goller <morfic@xxxxxxxxx>
Subject: Re: State of XFS on ARM
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Mon, 01 Feb 2010 21:52:44 -0600
Cc: xfs@xxxxxxxxxxx
In-reply-to: <13bb8ce11002011924h611099feh4955eedcc6e588a6@xxxxxxxxxxxxxx>
References: <13bb8ce11002011924h611099feh4955eedcc6e588a6@xxxxxxxxxxxxxx>
User-agent: Thunderbird 2.0.0.23 (Macintosh/20090812)
Daniel Goller wrote:
> Dear Sir or Madam,
> 
> I Would like to find out about the current state of XFS on ARM.
> I have been using XFS for a while successfully on my laptop, and was
> using XFS on a ARM device (little endian) since it would hold the same
> data i had on the laptop.
> It seems i have not been able to unmount it and then mounting it
> cleanly once, always required xfs_repair -L   /dev/sdc3
> I Could understand power issues or lockups causing this, but on clean
> umount and followed mount to see it fail is surprising.

well, actually neither power issues nor lockups should cause it either ;)

> When mounting fails on the headless arm machine i move the drive to a
> x86_64 and run xfs_repair there when mounting there fails too (so log
> can't be replayed, making -L necessary).
> All of this leads me to ask:  "Is XFS as well maintained on ARM as it
> is on x86/x86_64?"

Short answer no, but effort is made.  The last known issue, as far
as I know, is a cache aliasing problem.

This patch is a big-hammer approach, better things have been proposed
but not yet upstream as far as I know.

With "what doesn't work" helpfully commented out  ;) 

Index: linux-2.6.22.18/fs/xfs/linux-2.6/xfs_buf.c
===================================================================
--- linux-2.6.22.18.orig/fs/xfs/linux-2.6/xfs_buf.c
+++ linux-2.6.22.18/fs/xfs/linux-2.6/xfs_buf.c
@@ -1185,6 +1185,8 @@ _xfs_buf_ioapply(
                bio->bi_end_io = xfs_buf_bio_end_io;
                bio->bi_private = bp;
 
+               //flush_dcache_page(bp->b_pages[0]);
+               flush_cache_all();
                bio_add_page(bio, bp->b_pages[0], PAGE_CACHE_SIZE, 0);
                size = 0;
 
@@ -1211,6 +1213,8 @@ next_chunk:
                if (nbytes > size)
                        nbytes = size;
 
+               //flush_dcache_page(bp->b_pages[map_i]);
+               flush_cache_all();
                rbytes = bio_add_page(bio, bp->b_pages[map_i], nbytes, offset);
                if (rbytes < nbytes)
                        break;



> Thank you in advance for any info you can provide,
> 
> Daniel Goller
> 
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs
> 

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