Split slave-bind mount into two.
mount(2) does not work with MS_BIND | MS_SLAVE at a time.
Instead, this CL calls mount twice.
Change-Id: I072fd5377e35fff5ed3fa2798eea084d86fe2977
diff --git a/VolumeManager.cpp b/VolumeManager.cpp
index 9304630..012060b 100644
--- a/VolumeManager.cpp
+++ b/VolumeManager.cpp
@@ -578,11 +578,17 @@
_exit(0);
}
if (TEMP_FAILURE_RETRY(mount(storageSource.c_str(), "/storage",
- NULL, MS_BIND | MS_REC | MS_SLAVE, NULL)) == -1) {
+ NULL, MS_BIND | MS_REC, NULL)) == -1) {
PLOG(ERROR) << "Failed to mount " << storageSource << " for "
<< de->d_name;
_exit(1);
}
+ if (TEMP_FAILURE_RETRY(mount(NULL, "/storage", NULL,
+ MS_REC | MS_SLAVE, NULL)) == -1) {
+ PLOG(ERROR) << "Failed to set MS_SLAVE to /storage for "
+ << de->d_name;
+ _exit(1);
+ }
// Mount user-specific symlink helper into place
userid_t user_id = multiuser_get_user_id(uid);