diff --git a/src/agent/src/mount.rs b/src/agent/src/mount.rs index ef96728cfa..0175ce8722 100644 --- a/src/agent/src/mount.rs +++ b/src/agent/src/mount.rs @@ -549,8 +549,12 @@ fn parse_mount_flags_and_options(options_vec: Vec<&str>) -> (MsFlags, String) { if !opt.is_empty() { match FLAGS.get(opt) { Some(x) => { - let (_, f) = *x; - flags |= f; + let (clear, f) = *x; + if clear { + flags &= !f; + } else { + flags |= f; + } } None => { if !options.is_empty() { diff --git a/src/agent/src/namespace.rs b/src/agent/src/namespace.rs index 749be2ceb5..8410d144a2 100644 --- a/src/agent/src/namespace.rs +++ b/src/agent/src/namespace.rs @@ -121,8 +121,12 @@ impl Namespace { let mut flags = MsFlags::empty(); if let Some(x) = FLAGS.get("rbind") { - let (_, f) = *x; - flags |= f; + let (clear, f) = *x; + if clear { + flags &= !f; + } else { + flags |= f; + } }; let bare_mount = BareMount::new(source, destination, "none", flags, "", &logger);