This is an automated email from the ASF dual-hosted git repository. gilbert pushed a commit to branch 1.5.x in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 448f67adaf1198438013886a2bc1d689ca6e0f55 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 d6cdc93..9c312c1 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 + "': " +
