With both, first I got the empty /usr/portage directory with 0.25-xxx, then I switrched back to 0.24, same effect several times and now I'm using 0.23 again... I think gentoo's /usr/portage-directory is really good for unionfs-fuse stress-testing. I contains >100k small files so a rsync with the original /usr/portage-tree is from the network point of view normally really fast and the unionfs-fuse has a lot to do. And during such rsyncs /usr/portage becomes inaccessible and a "ls /usr/portage" shows an empty directory...aakef wrote:Are you sure its 0.24 and not 0.25alpha? 0.24 is mostly a bugfix release to 0.23. But 0.25 simplifies path building (unionfs internal) and handles MAX_PATH_LEN better. But this change might have introduced bugs.
However, I'm a Debian user and only found that thread here, as I had been curious what Gentoo is using unionfs-fuse for. So that means I am not familiar with what you are doing.
The busy umount problem has nothing to do with the 0.24/0.25alpha empty /usr/portage directory problem.aakef wrote: There "busy" problem on umount?
works!mv wrote:If umount fails, squash_dir-10.6 will now sleep for 1s and retry (and repeat this procedure). Moreover, it attempts now to check whether the directory is already umounted and skip the umount if this is the case. I guess, in most cases this is the desired behavior although perhaps some strange error situations are not cought now.
fuse is not slotted in gentoo, so the answer will almost surely be "yes". Moreover, libfuse has not been upgraded for a while in gentoo: The latest stable (and simultaneously latest unstable) version of fuse in the portage tree is 2.8.1 which is therefore almost surely what js08 is using.aakef wrote:Are you sure 0.23 vs. 0.24/0.25 are linked against the very same libfuse?
aakef wrote:Are you sure 0.23 vs. 0.24/0.25 are linked against the very same libfuse? I assume the kernel is definitely the same? Are you able to create a test case for me? So I already know the unionfs-fuse command and now I know that ?it is not only the umount issue. But I still do not have the slightest idea, what is actually your problem. Saying that 0.23 works, but that 0.24/0.25 fail is not sufficient, I'm afraid.
1) How does it fail, what are the symptoms?
2) If it fails, can you check using 'ps ax | grep unionfs' if unionfs is still running?
3) Depending on 2)
a) If it is running, does it show in 'top' a high cpu usage?
b) If it is not running anymore, you should get
#define ENOTCONN 107 /* Transport endpoint is not connected */
bernd@bathl Ph.D>errno 108
#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
on accessing the union path
4) What do I need to do to reproduce it?
4.1) If it is not easy to reproduce, are you willing to run debug commands yourself? So recompile it with debug symbols (-g) and -DDebug (using cmake that should be easy). And then runing it either in valgrind or gdb and provide me the output.
Thanks,
Bernd
Code: Select all
>>> Starting rsync with rsync://81.91.242.10/gentoo-portage...
>>> Checking server timestamp ...
----------------------------------------------------------------
| .d88888b. 888 |
| d88P" "Y88b 888 |
| 888 888 888 |
| 888 888 888 888 88888b. .d88b. |
| 888 888 888 888 888 "88b d8P Y8b |
| 888 Y8b 888 888 888 888 888 88888888 |
| Y88b.Y8b88P Y88b 888 888 d88P Y8b. |
| "Y888888" "Y88888 88888P" "Y8888 |
| Y8b |
|==============================================================|
| :: QUBE MANAGED SERVICES LIMITED :: |
|==============================================================|
| http://www.qubenet.net/ |
----------------------------------------------------------------
|ipv4 : 81.91.242.10 |
|ipv6 : [NOT AVAILABLE AT PRESENT - coming soon..] |
|servername : mirror.qubenet.net. |
|bandwidth : 1 Gbit/s |
|server specs : VMWare vSphere, 2GB RAM, Gentoo Linux OS |
|server location : QUBE LN1 :: London, United Kingdom |
|contact : Qube Support :: mirror-admin@qubenet.net |
|phone : +44-207-150-3810 (NOC) |
|--------------------------------------------------------------|
|Please do not abuse this mirror. |
|It is provided as a free service, thank you! |
|--------------------------------------------------------------|
receiving incremental file list
timestamp.chk
32 100% 31.25kB/s 0:00:00 (xfer#1, to-check=0/1)
Number of files: 1
Number of files transferred: 1
Total file size: 32 bytes
Total transferred file size: 32 bytes
Literal data: 32 bytes
Matched data: 0 bytes
File list size: 27
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 113
Total bytes received: 1890
sent 113 bytes received 1890 bytes 1335.33 bytes/sec
total size is 32 speedup is 0.02
----------------------------------------------------------------
| .d88888b. 888 |
| d88P" "Y88b 888 |
| 888 888 888 |
| 888 888 888 888 88888b. .d88b. |
| 888 888 888 888 888 "88b d8P Y8b |
| 888 Y8b 888 888 888 888 888 88888888 |
| Y88b.Y8b88P Y88b 888 888 d88P Y8b. |
| "Y888888" "Y88888 88888P" "Y8888 |
| Y8b |
|==============================================================|
| :: QUBE MANAGED SERVICES LIMITED :: |
|==============================================================|
| http://www.qubenet.net/ |
----------------------------------------------------------------
|ipv4 : 81.91.242.10 |
|ipv6 : [NOT AVAILABLE AT PRESENT - coming soon..] |
|servername : mirror.qubenet.net. |
|bandwidth : 1 Gbit/s |
|server specs : VMWare vSphere, 2GB RAM, Gentoo Linux OS |
|server location : QUBE LN1 :: London, United Kingdom |
|contact : Qube Support :: mirror-admin@qubenet.net |
|phone : +44-207-150-3810 (NOC) |
|--------------------------------------------------------------|
|Please do not abuse this mirror. |
|It is provided as a free service, thank you! |
|--------------------------------------------------------------|
receiving incremental file list
rsync: failed to set times on "/usr/portage/app-accessibility": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/dasher": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/emacspeak": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/espeak": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/festival-freebsoft-utils": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/festival-it": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/gnome-speech": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/gnopernicus": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/mbrola": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/morseall": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/orca": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/perlbox-voice": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/pidgin-festival": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/sound-icons": No such file or directory (2)
rsync: failed to set times on "/usr/portage/app-accessibility/speakup-utils": No such file or directory (2)
...
Code: Select all
2539 pts/5 S+ 0:00 grep --colour=auto unionfs
25419 ? Ssl 0:01 /usr/sbin/unionfs -o cow -o allow_other -o use_ino -o nonempty /usr/portage.changes=RW:/usr/portage.readonly=RO /usr/portage
fuse - 2.8.1,mv wrote:fuse is not slotted in gentoo, so the answer will almost surely be "yes". Moreover, libfuse has not been upgraded for a while in gentoo: The latest stable (and simultaneously latest unstable) version of fuse in the portage tree is 2.8.1 which is therefore almost surely what js08 is using.aakef wrote:Are you sure 0.23 vs. 0.24/0.25 are linked against the very same libfuse?
Code: Select all
#! /bin/sh
T="`mktemp -d /tmp/XXXXXXXX`"
cd -- "$T"
mkdir readonly readonly/a changes union
echo 1 >readonly/a/1
cp -a readonly reference
mksquashfs readonly sqfs >/dev/null
rm -rf readonly/a
mount -t squashfs -o loop,ro -- "$T/sqfs" "$T/readonly"
# The touch is only to force a different time so that rsync wants to set times:
touch -d 10:30 reference/a
unionfs -o cow -o allow_other -o use_ino -o nonempty -o hide_meta_dir \
"$T/changes=RW:$T/readonly=RO" "$T/union"
cd "$T/union"
set -x
/usr/bin/rsync -a -- "$T/reference/" .
set +x
cd /tmp
umount -i -- "$T/union"
sleep 1
umount -d -i -- "$T/readonly"
rm -rf -- "$T"strange.aakef wrote:Hmm, can't reproduce it
I think I need to update libfuse and to check what then happens.
This is knownaakef wrote:the 'official' to hide the .unionfs directory is "-o hide_meta_files".
Code: Select all
squash_portage | * Mounting /usr/portage.sqfs as /usr/portage ...
squash_portage |mount: unknown filesystem type 'aufs'
squash_portage | * Failed mounting /usr/portage.changes with aufs [exit with 32]
Code: Select all
/dev/loop0 on /usr/portage.readonly type squashfs (ro)
unionfs on /usr/portage type fuse.unionfs (rw,nosuid,nodev,allow_other,default_permissions)
Code: Select all
squash_portage |Failed to open //funionfs/: No such file or directory. Aborting!
squash_portage |
squash_portage | * Mounting /usr/portage.sqfs as /usr/portage ...
squash_portage |mount: unknown filesystem type 'aufs'
squash_portage | * Failed mounting /usr/portage.changes with aufs [exit with 32]
This is ok: It is first attempted to mount with aufs (which fails, since apparently you do not have the kernel patched), so it falls back to the second choice in the default order which apparently succeeds (so quash_portage has probably succesfully started).samonli wrote:/etc/init.d/squash_portage start:Code: Select all
squash_portage | * Mounting /usr/portage.sqfs as /usr/portage ... squash_portage |mount: unknown filesystem type 'aufs' squash_portage | * Failed mounting /usr/portage.changes with aufs [exit with 32]
However, this I cannot reproduce. Are you sure that you did not start with ORDER="funionfs aufs ..."? In my test, after successfully mounting with unionfs-fuse, it exits as it should (and if unionfs-fuse fails,l it prints an error message before trying unionfs, then also failing and printing an error, and only then trying unionfs).after set "ORDER=unionfs-fuse unionfs funionfs aufs" in /etc/conf.d/squash_portage
/etc/init.d/squash_portage start:Code: Select all
squash_portage |Failed to open //funionfs/: No such file or directory. Aborting! squash_portage | squash_portage | * Mounting /usr/portage.sqfs as /usr/portage ... squash_portage |mount: unknown filesystem type 'aufs' squash_portage | * Failed mounting /usr/portage.changes with aufs [exit with 32]