@ -426,28 +426,38 @@ int VolumeManager::linkPrimary(userid_t userId) {
return 0 ;
return 0 ;
}
}
int VolumeManager : : startUser ( userid_t userId ) {
int VolumeManager : : onUserAdded ( userid_t userId , int userSerialNumber ) {
mAddedUsers [ userId ] = userSerialNumber ;
return 0 ;
}
int VolumeManager : : onUserRemoved ( userid_t userId ) {
mAddedUsers . erase ( userId ) ;
return 0 ;
}
int VolumeManager : : onUserStarted ( userid_t userId ) {
// Note that sometimes the system will spin up processes from Zygote
// Note that sometimes the system will spin up processes from Zygote
// before actually starting the user, so we're okay if Zygote
// before actually starting the user, so we're okay if Zygote
// already created this directory.
// already created this directory.
std : : string path ( StringPrintf ( " %s/%d " , kUserMountPath , userId ) ) ;
std : : string path ( StringPrintf ( " %s/%d " , kUserMountPath , userId ) ) ;
fs_prepare_dir ( path . c_str ( ) , 0755 , AID_ROOT , AID_ROOT ) ;
fs_prepare_dir ( path . c_str ( ) , 0755 , AID_ROOT , AID_ROOT ) ;
mUsers . push_back ( userId ) ;
m StartedUsers. insert ( userId ) ;
if ( mPrimary ) {
if ( mPrimary ) {
linkPrimary ( userId ) ;
linkPrimary ( userId ) ;
}
}
return 0 ;
return 0 ;
}
}
int VolumeManager : : cleanupUser ( userid_t userId ) {
int VolumeManager : : onUserStopped ( userid_t userId ) {
m Users. remov e( userId ) ;
m StartedUsers. eras e( userId ) ;
return 0 ;
return 0 ;
}
}
int VolumeManager : : setPrimary ( const std : : shared_ptr < android : : vold : : VolumeBase > & vol ) {
int VolumeManager : : setPrimary ( const std : : shared_ptr < android : : vold : : VolumeBase > & vol ) {
mPrimary = vol ;
mPrimary = vol ;
for ( userid_t userId : m Users) {
for ( userid_t userId : m Started Users) {
linkPrimary ( userId ) ;
linkPrimary ( userId ) ;
}
}
return 0 ;
return 0 ;
@ -462,7 +472,8 @@ int VolumeManager::reset() {
disk - > destroy ( ) ;
disk - > destroy ( ) ;
disk - > create ( ) ;
disk - > create ( ) ;
}
}
mUsers . clear ( ) ;
mAddedUsers . clear ( ) ;
mStartedUsers . clear ( ) ;
return 0 ;
return 0 ;
}
}