[Unionfs] unionfs-2.5_for_2.6.27-rc6 and Kernels 2.6.27 to 2.6.27.4

Daniel Reichelt nl at itamservices.de
Wed Nov 5 23:02:02 EST 2008


Hi list,

I have an unionfs mount setup like this:

# mkdir br1 br2 rwunion
# mount -t nfs -o ro server:/nfsexport /br2
# mount -t unionfs -o dirs=/br1=rw:/br2=ro none /rwunion/

So far so good. When I try to add new files or remove files that pre-existed on
the ro-nfs branch, that works just fine. However appending/chaning files
originating from the ro-nfs branch, I get this:

# ls -la /br1
# ls -la /br2
-rw-r--r-- 1 root root   55 2008-11-06 04:41 test

# ls -la /rwunion
-rw-r--r-- 1 root root   55 2008-11-06 04:41 test

# echo >test
bash: test: Permission denied

# strace -e file /bin/sh -c "echo >test"
execve("/bin/sh", ["/bin/sh", "-c", "echo >test"], [/* 21 vars */]) = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libncurses.so.5", O_RDONLY)  = 3
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libdl.so.2", O_RDONLY)       = 3
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY)        = 3
open("/dev/tty", O_RDWR|O_NONBLOCK)     = 3
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
open("/proc/meminfo", O_RDONLY)         = 3
stat("/rwunion", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat(".", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3
open("test", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EACCES (Permission denied)
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such
file or directory)
/bin/sh: test: Permission denied


Now instead of ERO an EACCES is triggered which probably makes unionfs execute
code that is reserved for "no-permission situations" instead of executing "no
write access, try at next writeable branch left of this".

I'll happily provide you with any additional info you need.

HTH
Daniel


More information about the unionfs mailing list