Re: Tux3 report: New news for the new year

From: Tero Roponen
Date: Wed Jan 02 2013 - 04:45:23 EST

On Tue, 1 Jan 2013, Martin Steigerwald wrote:

> martin@merkaba:~[â]> sudo ./tux3fuse tux3.img /mnt/zeit
> [sudo] password for martin:
> martin@merkaba:~[â]> mount | grep fuse
> fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
> tux3.img on /mnt/zeit type fuse.tux3.img (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
> But I am stuck with accessing it:
> martin@merkaba:~[â]> LANG=C ls -l /mnt/zeit
> ls: cannot access /mnt/zeit: Permission denied
> martin@merkaba:~[â]> LANG=C sudo chown martin:martin /mnt/zeit
> chown: cannot access '/mnt/zeit': Transport endpoint is not connected
> martin@merkaba:~[â]> LANG=C sudo ls -l /mnt/zeit
> ls: cannot access /mnt/zeit: Transport endpoint is not connected
> martin@merkaba:~[â]>


I have not looked at Tux3 for a long time, but there seems to be
a simple fix for at least this problem, and two workarounds:

1) Run the program in foreground (-f):

sudo ./tux3fuse tux3.img /mnt/zeit -f

2) Use absolute path for image file:

sudo ./tux3fuse $(pwd)/tux3.img /mnt/zeit

The following patch should hopefully fix this for good.

commit efc0cf49f6dd00dfbb84e88336d2c5d147a09ed0
Author: Tero Roponen <tero.roponen@xxxxxxxxx>
Date: Wed Jan 2 11:20:46 2013 +0200

Use absolute path for volume name

If fuse_daemonize() puts us into background it also switches our
working directory to '/', breaking the use of relative paths.

This patch fixes the problem by converting the relative path to
an absolute one.

Signed-off-by: Tero Roponen <tero.roponen@xxxxxxxxx>

diff --git a/user/tux3fuse.c b/user/tux3fuse.c
index 6401204..5047cab 100644
--- a/user/tux3fuse.c
+++ b/user/tux3fuse.c
@@ -993,7 +993,7 @@ int main(int argc, char *argv[])
goto error;

struct tux3fuse tux3fuse = {
- .volname = argv[1],
+ .volname = canonicalize_file_name(argv[1]),
fs = fuse_lowlevel_new(&args, &tux3_ops, sizeof(tux3_ops), &tux3fuse);
if (fs) {