Tomasz Janiszewski created MESOS-5263:
-----------------------------------------
Summary: pivot_root is not available on ARM
Key: MESOS-5263
URL: https://issues.apache.org/jira/browse/MESOS-5263
Project: Mesos
Issue Type: Bug
Reporter: Tomasz Janiszewski
Assignee: Chen Zhiwei
Fix For: 0.29.0
When compile on ppc64le, it will through error message: src/linux/fs.cpp:443:2:
error: #error "pivot_root is not available"
The current code logic in src/linux/fs.cpp is:
{code}
#ifdef __NR_pivot_root
int ret = ::syscall(__NR_pivot_root, newRoot.c_str(), putOld.c_str());
#elif __x86_64__
// A workaround for systems that have an old glib but have a new
// kernel. The magic number '155' is the syscall number for
// 'pivot_root' on the x86_64 architecture, see
// arch/x86/syscalls/syscall_64.tbl
int ret = ::syscall(155, newRoot.c_str(), putOld.c_str());
#else
#error "pivot_root is not available"
#endif
{code}
There is no old glib version and the new kernel version, it will never run code
in *#ifdef __NR_pivot_root* condition, and when I build on Ubuntu 16.04(It has
the latest linux kernel and glibc), it still can't step into the *#ifdef
__NR_pivot_root* condition.
For powerpc case, I added another condition:
{code}
#elif __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__
// A workaround for powerpc. The magic number '203' is the syscall
// number for 'pivot_root' on the powerpc architecture, see
// https://w3challs.com/syscalls/?arch=powerpc_64
int ret = ::syscall(203, newRoot.c_str(), putOld.c_str());
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)