Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9e8dbc7 authored by Martijn Coenen's avatar Martijn Coenen
Browse files

Tell vold about users sharing storage with each other.

In some cases (eg clone profiles), users can see each others volumes.
Vold needs to know this information to setup a mount infrastructure that
avoids page cache inconsistencies.

Bug: 228271997
Test: manual
Change-Id: Ie41bd3b52e105e8bb17f6d5985f00ed2a359bc1b
parent 8ff4152a
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -888,7 +888,15 @@ class StorageManagerService extends IStorageManager.Stub
                if (Intent.ACTION_USER_ADDED.equals(action)) {
                    final UserManager um = mContext.getSystemService(UserManager.class);
                    final int userSerialNumber = um.getUserSerialNumber(userId);
                    mVold.onUserAdded(userId, userSerialNumber);
                    final UserInfo userInfo = um.getUserInfo(userId);
                    if (userInfo.isCloneProfile()) {
                        // Only clone profiles share storage with their parent
                        mVold.onUserAdded(userId, userSerialNumber,
                                userInfo.profileGroupId /* sharesStorageWithUserId */);
                    } else {
                        mVold.onUserAdded(userId, userSerialNumber,
                                -1 /* shareStorageWithUserId */);
                    }
                } else if (Intent.ACTION_USER_REMOVED.equals(action)) {
                    synchronized (mVolumes) {
                        final int size = mVolumes.size();
@@ -1137,7 +1145,11 @@ class StorageManagerService extends IStorageManager.Stub

                // Tell vold about all existing and started users
                for (UserInfo user : users) {
                    mVold.onUserAdded(user.id, user.serialNumber);
                    if (user.isCloneProfile()) {
                        mVold.onUserAdded(user.id, user.serialNumber, user.profileGroupId);
                    } else {
                        mVold.onUserAdded(user.id, user.serialNumber, -1);
                    }
                }
                for (int userId : systemUnlockedUsers) {
                    mVold.onUserStarted(userId);