[Mono-dev] [Mono-list] Announce: Mono.Fuse 0.2.0 (+ Required mcs & mono patches)

Jonathan Pryor jonpryor at vt.edu
Tue Sep 12 22:24:41 EDT 2006

Can you elaborate on the tests you've used?

On Tue, 2006-09-12 at 00:08 -0700, Valient Gough wrote:
> There is a program "fsx-linux" which you might find useful.  I've
> found bugs in FUSE itself with this program in the past while trying
> to debug my own filesystems.

I managed to find this; it fails nearly instantly with RedirectFS-FH.exe
when run as "fsx-linux mount-point/filename":

        jon at balthasar:RedirectFS$ ./redirectfs-fh t ~/tmp > f.txt &
        jon at balthasar:RedirectFS$ ./fsx-linux t/fsx2
        truncating to largest ever: 0x13e76
        domapwrite: mmap: No such device
        LOG DUMP (4 total operations):
        1(1 mod 256): TRUNCATE UP       from 0x0 to 0x13e76
        2(2 mod 256): WRITE     0x17098 thru 0x26857    (0xf7c0 bytes)
        3(3 mod 256): READ      0xc73e thru 0x1b801     (0xf0c4 bytes)
        4(4 mod 256): MAPWRITE 0x32e00 thru 0x331fc     (0x3fd bytes)
        Correct content saved for comparison
        (maybe hexdump "t/fsx2" vs "t/fsx2.fsxgood")

However, "fsx2" and "fsx2.fsxgood" differ only in the last 0x1fd bytes,
and this appears to be because it never writes those bytes to t/fsx2,
but only to t/fsx2.fsxgood.  Note that t/fsx2 never writes at 0x331fd,
while t/fsx2.fsxgood *does*:

        OnOpenHandle (/fsx2, 9)=9
        OnWriteHandle (/fsx2, 9, 858, 26000)=858
        OnReadHandle (/fsx2, 9, b000, c000)=b000
        OnReadHandle (/fsx2, 9, 1000, 17000)=1000
        OnTruncateFile (/fsx2, 9, 331fd)=0


        OnOpenHandle (/fsx2.fsxgood, 10)=10
        OnWriteHandle (/fsx2.fsxgood, 10, 1000, 0)=1000
        OnWriteHandle (/fsx2.fsxgood, 10, 1fd, 33000)=1fd

Plus, given the output of fsx-linux, the difference appears to be due to
mmap (or lack thereof).  If I run `fsx-linux -W t/fsx2` (to disable mmap
writing), things seem to run nicely:

        jon at balthasar:RedirectFS$ ./a.out -W t/fsx2
        mapped writes DISABLED
        truncating to largest ever: 0x32740
        truncating to largest ever: 0x39212
        truncating to largest ever: 0x3bae9

Is there a known issue with FUSE, fsx-linux & mmap testing, or am I
wrong about this?

Do you have any other fsx-linux tests to suggest?

> Did you try rsync and Evolution?  They really do create lots of
> rename-while-open events that are useful for testing assumptions
> related to the primary key (path in your case).

I did rsync earlier today.  Found a bug in OnReadDirectory() (it would
skip files on large directories), but rsync currently works.  The
OnReadDirectory fix is in GIT.  rsyncing to and from
RedirectFS-FH.exe-hosted mount point work as expected.

I haven't tried Evolution yet.

Do you have any other easily runnable tests?  Or is hand-crafting test
cases and throwing programs at a filesystem the only way to go?

 - Jon

More information about the Mono-devel-list mailing list