CephFS: strange behavior for arm-gcc when runing under cephfs

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

 



Hi, cephers:
I'm using ceph Luminous. Recently, one of my colleagues put his
gcc-tools , a whole binary folder with corresponding lib-files, into
cephfs. However, when running arm-gcc command to compile files,
arm-gcc always complains about "cc1plus" not found. If the whole
binary folder is located under a local filesystem, everything is ok.

Here is some pieces of log with strace when run arm-gcc under cephfs:

open("/tmp/ccIlAAE5.s", O_RDWR|O_CREAT|O_EXCL, 0600) = 3
close(3)                                = 0
stat64("/mnt/cephfs/CentOS-6.6/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/../libexec/gcc/arm-linux-gnueabihf/4.9.2/cc1plus",
{st_mode=S_IFREG|0755, st_size=16224744, ...}) = 0
stat64("/mnt/cephfs/CentOS-6.6/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/../libexec/gcc/arm-linux-gnueabihf/cc1plus",
0xfffe9014) = -1 ENOENT (No such file or directory)
stat64("/mnt/cephfs/CentOS-6.6/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/../libexec/gcc/cc1plus",
0xfffe9014) = -1 ENOENT (No such file or directory)
stat64("/mnt/cephfs/CentOS-6.6/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.9.2/../../../../arm-linux-gnueabihf/bin/arm-linux-gnueabihf/4.9.2/cc1plus",
0xfffe9014) = -1 ENOENT (No such file or directory)
stat64("/mnt/cephfs/CentOS-6.6/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.9.2/../../../../arm-linux-gnueabihf/bin/arm-linux-gnueabihf/cc1plus",
0xfffe9014) = -1 ENOENT (No such file or directory)
stat64("/mnt/cephfs/CentOS-6.6/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.9.2/../../../../arm-linux-gnueabihf/bin/cc1plus",
0xfffe9014) = -1 ENOENT (No such file or directory)
vfork(arm-linux-gnueabihf-g++: error trying to exec 'cc1plus': execvp:
No such file or directory
)                                 = 8885
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=8885,
si_status=255, si_utime=0, si_stime=0} ---
waitpid(8885, [{WIFEXITED(s) && WEXITSTATUS(s) == 255}], 0) = 8885
stat64("/tmp/ccIlAAE5.s", {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
unlink("/tmp/ccIlAAE5.s")               = 0
exit_group(1)                           = ?

It shows arm-gcc has indeed found cc1plus, but somehow it continues to
search other directories.

Below gives log for running arm-gcc under local filesystem:

open("/tmp/ccU6Mkbg.s", O_RDWR|O_CREAT|O_EXCL, 0600) = 3
close(3)                                = 0
stat64("/mnt/local/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/../libexec/gcc/arm-linux-gnueabihf/4.9.2/cc1plus",
{st_mode=S_IFREG|0755, st_size=16224744, ...}) = 0
access("/mnt/local/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/../libexec/gcc/arm-linux-gnueabihf/4.9.2/cc1plus",
X_OK) = 0
vfork()                                 = 8866
waitpid(8866, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0) = 8866
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=8866,
si_status=0, si_utime=16, si_stime=5} ---

The main difference is that when using a local filesystem, arm-gcc
will not continue to look up in other directories after it has found
cc1plus. I'm really confused by this behavior. MDS's log just showed
it received some lookup requests and responded each request correctly.

The /mnt/local/CentOS-6.6 is copied from /mnt/cephfs/CentOS-6.6 with
`cp -rp` command, so symbol-link or file-mode should keep the same. I
tried gcc in this gcc-tool directory, and it worked well under cephfs.
Probably there is a bug in arm-gcc, but I can't imagine what code will
lead to such strange behavior.

Could anyone give some tips on this? Thanks!



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux