This is an automated email from the ASF dual-hosted git repository. gilbert pushed a commit to branch 1.4.x in repository https://gitbox.apache.org/repos/asf/mesos.git
commit f28b0994b96bc7cc15ac8ede35229443ff6fb5b8 Author: Jie Yu <yujie....@gmail.com> 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/ (cherry picked from commit 576a455149cfe5721a3447a100548dae69b6d49a) --- 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 + "': " +