Mock fails when /var/cache/mock is bind-mounted.

Björn Persson bjorn at xn--rombobjrn-67a.se
Sun Feb 13 18:36:44 UTC 2011


Chris Adams wrote:
> Once upon a time, Björn Persson <bjorn at xn--rombobjrn-67a.se> said:
> > I can imagine that the file permissions might be wrong, although they
> > seem OK to me, but the error is that the directory doesn't exist. Why
> > are the directories removed and not re-created?
> 
> You mention the probable cause, but you don't show the perms.  The best
> way to get the perms correct is to:
> 
> - umount /var/cache/mock
> - chown --reference=/var/cache/mock /disk/data/mock
> - chmod --reference=/var/cache/mock /disk/data/mock
> - chcon --reference=/var/cache/mock /disk/data/mock
> - mount -t bind /disk/data/mock /var/cache/mock

I moved the whole tree with cp -a and replaced the original /var/cache/mock 
with a symbolic link. When that didn't work I tried a bind mount instead. Thus 
I can't use /var/cache/mock as a reference, but the permissions should be 
right since I used cp -a. What I have now is:

[root at hactar ~]# ls -la /var/cache/mock/
totalt 16
drwxr-sr-x   3 root mock 4096 13 feb 17.17 .
drwxr-xr-x. 18 root root 4096 13 feb 16.58 ..
drwxr-sr-x   5 root mock 4096 13 feb 17.17 fedora-rawhide-x86_64
[root at hactar ~]# mount /disk/data/mock/
[root at hactar ~]# ls -la /var/cache/mock/
totalt 32
drwxrwsr-x   7 root mock 4096 13 feb 18.10 .
drwxr-xr-x. 18 root root 4096 13 feb 16.58 ..
drwxr-sr-x   5 root mock 4096  8 mar  2010 fedora-11-x86_64
drwxr-sr-x   5 root mock 4096  6 feb 02.35 fedora-13-x86_64
drwxr-sr-x   5 root mock 4096 29 aug 17.03 fedora-14-i386
drwxr-sr-x   5 root mock 4096 28 aug 00.26 fedora-14-x86_64
drwxr-sr-x   5 root mock 4096  2 aug  2010 fedora-rawhide-i386

The former works and the latter does not. I see one difference, the group write 
permission. Let's try removing that.

[root at hactar ~]# chmod g-w /disk/data/mock/
[root at hactar ~]# ls -la /var/cache/mock/
totalt 32
drwxr-sr-x   7 root mock 4096 13 feb 18.23 .
drwxr-xr-x. 18 root root 4096 13 feb 16.58 ..
drwxr-sr-x   5 root mock 4096  8 mar  2010 fedora-11-x86_64
drwxr-sr-x   5 root mock 4096  6 feb 02.35 fedora-13-x86_64
drwxr-sr-x   5 root mock 4096 29 aug 17.03 fedora-14-i386
drwxr-sr-x   5 root mock 4096 28 aug 00.26 fedora-14-x86_64
drwxr-sr-x   5 root mock 4096  2 aug  2010 fedora-rawhide-i386

Nope. It still fails in the same way.

> Alternately, rather than using bind mounts, you could edit
> /etc/mock/site-defaults.cfg to move from /var/{lib,cache}/mock to
> /disk/data/mock.  You still need to get the permissions correct though.

Even that doesn't help. Maybe it isn't caused by the bind mount after all.

I see this note in site-defaults.cfg:
#  Note: the path pointed to by basedir and cache_topdir must be owned
#        by group 'mock' and must have mode: g+rws
so I put that write permission back. It still fails.

So it's not caused by the permissions that ls -l shows, and SElinux is 
disabled. The only difference in mount options is that / is mounted with 
relatime and /disk/data with noatime. Is it conceivable that Mock doesn't work 
with noatime? What else is there to check?

Björn Persson
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
Url : http://lists.fedoraproject.org/pipermail/devel/attachments/20110213/9d07bf7b/attachment.bin 


More information about the devel mailing list