diff options
Diffstat (limited to 'mnt.cc')
-rw-r--r-- | mnt.cc | 61 |
1 files changed, 34 insertions, 27 deletions
@@ -57,36 +57,42 @@ static const std::string flagsToStr(uintptr_t flags) { std::string res; struct { - const uintptr_t flag; + const uint64_t flag; const char* const name; } static const mountFlags[] = { - NS_VALSTR_STRUCT(MS_RDONLY), - NS_VALSTR_STRUCT(MS_NOSUID), - NS_VALSTR_STRUCT(MS_NODEV), - NS_VALSTR_STRUCT(MS_NOEXEC), - NS_VALSTR_STRUCT(MS_SYNCHRONOUS), - NS_VALSTR_STRUCT(MS_REMOUNT), - NS_VALSTR_STRUCT(MS_MANDLOCK), - NS_VALSTR_STRUCT(MS_DIRSYNC), - NS_VALSTR_STRUCT(MS_NOATIME), - NS_VALSTR_STRUCT(MS_NODIRATIME), - NS_VALSTR_STRUCT(MS_BIND), - NS_VALSTR_STRUCT(MS_MOVE), - NS_VALSTR_STRUCT(MS_REC), - NS_VALSTR_STRUCT(MS_SILENT), - NS_VALSTR_STRUCT(MS_POSIXACL), - NS_VALSTR_STRUCT(MS_UNBINDABLE), - NS_VALSTR_STRUCT(MS_PRIVATE), - NS_VALSTR_STRUCT(MS_SLAVE), - NS_VALSTR_STRUCT(MS_SHARED), - NS_VALSTR_STRUCT(MS_RELATIME), - NS_VALSTR_STRUCT(MS_KERNMOUNT), - NS_VALSTR_STRUCT(MS_I_VERSION), - NS_VALSTR_STRUCT(MS_STRICTATIME), - NS_VALSTR_STRUCT(MS_LAZYTIME), + NS_VALSTR_STRUCT(MS_RDONLY), + NS_VALSTR_STRUCT(MS_NOSUID), + NS_VALSTR_STRUCT(MS_NODEV), + NS_VALSTR_STRUCT(MS_NOEXEC), + NS_VALSTR_STRUCT(MS_SYNCHRONOUS), + NS_VALSTR_STRUCT(MS_REMOUNT), + NS_VALSTR_STRUCT(MS_MANDLOCK), + NS_VALSTR_STRUCT(MS_DIRSYNC), + NS_VALSTR_STRUCT(MS_NOATIME), + NS_VALSTR_STRUCT(MS_NODIRATIME), + NS_VALSTR_STRUCT(MS_BIND), + NS_VALSTR_STRUCT(MS_MOVE), + NS_VALSTR_STRUCT(MS_REC), + NS_VALSTR_STRUCT(MS_SILENT), + NS_VALSTR_STRUCT(MS_POSIXACL), + NS_VALSTR_STRUCT(MS_UNBINDABLE), + NS_VALSTR_STRUCT(MS_PRIVATE), + NS_VALSTR_STRUCT(MS_SLAVE), + NS_VALSTR_STRUCT(MS_SHARED), + NS_VALSTR_STRUCT(MS_RELATIME), + NS_VALSTR_STRUCT(MS_KERNMOUNT), + NS_VALSTR_STRUCT(MS_I_VERSION), + NS_VALSTR_STRUCT(MS_STRICTATIME), + NS_VALSTR_STRUCT(MS_LAZYTIME), +#if defined(MS_ACTIVE) + NS_VALSTR_STRUCT(MS_ACTIVE), +#endif /* defined(MS_ACTIVE) */ +#if defined(MS_NOUSER) + NS_VALSTR_STRUCT(MS_NOUSER), +#endif /* defined(MS_NOUSER) */ }; - uintptr_t knownFlagMask = 0U; + uint64_t knownFlagMask = 0U; for (const auto& i : mountFlags) { if (flags & i.flag) { if (!res.empty()) { @@ -144,7 +150,7 @@ static bool mountPt(mount_t* mpt, const char* newroot, const char* tmpdir) { LOG_D("symlink('%s', '%s')", srcpath, dstpath); if (symlink(srcpath, dstpath) == -1) { if (mpt->is_mandatory) { - PLOG_W("symlink('%s', '%s')", srcpath, dstpath); + PLOG_E("symlink('%s', '%s')", srcpath, dstpath); return false; } else { PLOG_W("symlink('%s', '%s'), but it's not mandatory, continuing", @@ -390,6 +396,7 @@ static bool initCloneNs(nsjconf_t* nsjconf) { for (auto& p : nsjconf->mountpts) { if (!mountPt(&p, destdir->c_str(), tmpdir->c_str()) && p.is_mandatory) { + LOG_E("Couldn't mount '%s'", p.dst.c_str()); return false; } } |