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
This commit is contained in:
Hidehiko Abe 2016-03-09 16:42:10 +09:00
parent 972c545f7e
commit 674bed18bd

View file

@ -578,11 +578,17 @@ int VolumeManager::remountUid(uid_t uid, const std::string& mode) {
_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);