tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

mtree weirdness


I found a weird thing where /usr/tools/bin/nbmtree fails to work (means sourcesets creates empty sets), whereas /usr/sbin/mtree works
fine yet they are built from the same sources..

Script started on Tue Feb 24 10:17:35 2009
galant: {1} cd src
galant: {2} usr/tools/bin/nbmtree -c
#          user: plunky
#       machine: galant
#          tree: /home/plunky/src
#          date: Tue Feb 24 10:17:45 2009

# .
/set type=file uid=0 gid=0 mode=0 nlink=1 flags=none
.               type=dir uid=1000 gid=20 mode=0775 nlink=55 \
nbmtree: ./BUILDING: No such file or directory
galant: {3} /usr/sbin/mtree -c
#          user: plunky
#       machine: galant
#          tree: /home/plunky/src
#          date: Tue Feb 24 10:17:53 2009

# .
/set type=file uid=1000 gid=20 mode=0775 nlink=1 flags=none
.               type=dir nlink=55 time=1235469934.53943774
    BUILDING    uid=0 gid=0 mode=0644 size=42570 time=1226787033.0
    Makefile    uid=0 gid=0 mode=0644 size=15655 time=1228601254.0 \
                uid=0 gid=0 mode=0644 size=352 time=1018450423.0
    UPDATING    uid=0 gid=0 mode=0644 size=13328 time=1228601358.0    uid=0 gid=0 mode=0755 size=38448 time=1232967348.0

# ./CVS
/set type=file uid=0 gid=0 mode=0644 nlink=1 flags=none
CVS             type=dir uid=1000 gid=20 mode=0775 nlink=2 \

[... proceeds normally ...]

The reason it doesn't work is most likely that the current directory is a
unionfs mount:

<below>:/usr/src on /home/plunky/src type union (nosuid, nodev, mounted by 

and so although it did know about the ./BUILDING file, it does not
actually exist in the upper layer (it works fine on a usual filesystem),
but I was trying to see what difference there is between the tool build
and the release build to find where the specific problem might be.

I can't pin it down alas, the tool build uses

        -DNO_MD5 -DNO_RMD160 -DNO_SHA1 -DNO_SHA2

but if I disable all the hashing and build mtree, it works fine in the
fail directory.  I wrote a program to scan directory entries and use
fstat, lstat or stat but that all works fine too.

I've run out of ideas, any thoughts?


Home | Main Index | Thread Index | Old Index