Port of FUSE-NTFS to FreeBSD (sort of)
csaba-ml at creo.hu
Mon Jul 17 05:45:25 UTC 2006
On 2006-07-15, Ulrich Spoerlein <uspoerlein at gmail.com> wrote:
> the FUSE NTFS team has release a new version of its NTFS driver which
> promises to deliver write support for NTFS to FreeBSD.
> I made a port of the driver and fixed some build errors, but the port is
> still not working (for me), as it is running into an infinite loop.
> If some people would like to take it from here, I'd be glad to hand the
> port over, as I don't have that much time. At least all the boring stuff
> (pkg-descr, pkg-plist) has been taken care of.
> Here's further debugging info:
> Mounting the fuse device will result in an infinite loop in
> ntfs_attr_pread calling ntfs_pread unsuccessfully over and over again:
> (gdb) bt
> #0 ntfs_attr_pread (na=3D0x805e100, pos=3D476846, count=3D3354, b=3D0x8083=
> 000) at attrib.c:887
> #1 0x080497f3 in ntfs_fuse_get_nr_free_clusters (vol=3D0x8054100) at ntfs-=
> #2 0x080498f1 in ntfs_fuse_statfs (path=3D0x480b62db "/", sfs=3D0xbfbfe600=
> ) at ntfs-3g.c:254
> #3 0x480b1cb1 in fuse_statfs () from /usr/local/lib/libfuse.so.2
My bet is that it's not a FUSE issue (neither kernel, nor lib). The bug
is apparently triggered below the fuselib level. I think it's either
some platform-related subtlety or a plain bug in the ntfs-3g code.
I also made a try with ntfs-3g, but, as I don't have real ntfs
partitions, I only tried with a quickly "mkntfs -fF"-d file. With that,
it works fine.
So, the misbehaviour is not easy to reproduce by our current knowledge,
that is, no other interested party can continue the work from where you
I suggest you to go over one (or more) of the following possibilities:
- Make a try with several ntfs volumes. If it works with most of them,
send a pr for adding the port, and user feedback can help in tracking
down the bug. (Btw, I'd suggest fusefs-ntfs3g or
fusefs-ntfs-3g or fusefs-ntfs_3g as the port name -- I think
including "3g" is necessary to make it unambigous what's we are
- Try to mount the same ntfs volume from Linux (if you don't have Linux
on your box, you can still do it with a livecd). If the same thing
happens, it's a bug in ntfs-3g, and you can report upstream (although
the author is on a vacation ATM, as you probably know).
- If gdb fails to uncover the reasons, fail back to plain old printf
debug. Use the "-odebug,no_detach" mount options. Then the fs daemon
won't go background and won't swallow output, so if you insert printfs
you can make use of them. Moreover, the daemon will produce a lot of
debug output without needing to touch the code.
More information about the freebsd-ports