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

Skip to content
Commit 04110a39 authored by Arnab Sen's avatar Arnab Sen
Browse files

SM: Remount emulated volumes on Move Storage

Whenever move storage is executed for moving media to adopted
storage from internal storage and vice-versa, the emulated
volumes that are mounted for non-current users which are
currently running in the system points to the physical storage
for the older storage location rather than the current one. This
would case data to be still stored in the older storage location
rather than the current one. This would cause media content not
to be accessible to the user.

Android maintains separate emulated volumes for each user for internal
storage as well as adopted storage. Adopted Storage has a global
private volumes on which emulated volumes are created. Whenever a
move is triggered the primary storage changes globally for the
StorageManagerService, but the emulated volumes are not mounted
correctly for the non-current users which are running in the system.
To solve this added a new method remountForRunningUsersOnMove()
which would inform vold and storaged that the non-current user has
stopped, which is similar to onCleanupUser(int) which would
remove the current emulated volume for the user and then inform
vold and storgaed that user has started which would correctly
mount the emulated volume for the user which is same as
resetIfBootedAndConnected(). This ensures that the emulated volumes
for the correct primary storage location are mounted for all the
users currently running.

Test: manual
Perform the following steps:
1. Setup the device with at least one secondary user.
2. Switch to the secondary user and switch back to
   current user.
3. Insert a SD Card and setup as Adopted
4. Complete the Move content flow.
5. Check the correct volumes are mounted by executing:
   'adb shell dumpsys mount' and check the internal path
   for the mounted emulated volumes point to adopted storage.
6. Go to Settings > Storage > 'Move Data to internal storage'.
7. Check the correct volumes are mounted by executing:
   'adb shell dumpsys mount' and check the internal path
   for the mounted emulated volumes point to internal storage.

Change-Id: Ibbc4b109ff44f0f68a05da5632a4304e8b4992ac
parent e1ee1aab
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment