This is an automated email from the ASF dual-hosted git repository. gilbert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 576a455149cfe5721a3447a100548dae69b6d49a Author: Jie Yu <[email protected]> AuthorDate: Fri Aug 31 22:29:45 2018 -0700 Made bind backend destroy more robust. Use MNT_DETACH for `unmount` so that if there are still processes holding files or directories in the rootfs (e.g., regular filesystem indexing), the unmount will still be successful. The kernel will cleanup the mount when the number of references reach zero. See more details in MESOS-9196. Review: https://reviews.apache.org/r/68596/ --- src/slave/containerizer/mesos/provisioner/backends/bind.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/slave/containerizer/mesos/provisioner/backends/bind.cpp b/src/slave/containerizer/mesos/provisioner/backends/bind.cpp index 6ad97f9..7d564dc 100644 --- a/src/slave/containerizer/mesos/provisioner/backends/bind.cpp +++ b/src/slave/containerizer/mesos/provisioner/backends/bind.cpp @@ -195,8 +195,11 @@ Future<bool> BindBackendProcess::destroy(const string& rootfs) // to check `strings::startsWith(entry.target, rootfs)` here to // unmount all nested mounts. if (entry.target == rootfs) { - // NOTE: This would fail if the rootfs is still in use. - Try<Nothing> unmount = fs::unmount(entry.target); + // NOTE: Use MNT_DETACH here so that if there are still + // processes holding files or directories in the rootfs, the + // unmount will still be successful. The kernel will cleanup the + // mount when the number of references reach zero. + Try<Nothing> unmount = fs::unmount(entry.target, MNT_DETACH); if (unmount.isError()) { return Failure( "Failed to destroy bind-mounted rootfs '" + rootfs + "': " +
