Use /data/media path when migrating legacy OBB data
The MediaProvider process is running as the FUSE daemon and is handling
IO requests from the kernel on /sdcard. Accessing a path on /sdcard
can hang forever if the daemon is not responding.
At user 0 startup (boot), the system_server waits for migration of OBB
data and it can deadlock if the FUSE daemon is not running.
To break this cyclic dependency between the FUSE daemon and the
system_server, we now migrate OBB using /data/media instead of
/sdcard, thereby bypassing the FUSE daemon.
Test: adb shell sm set-virtual-disk true
&& adb shell sm partition disk:7,112 private && adb reboot
&& adb shell ls /sdcard
Bug: 135341433
Change-Id: Ib64f7eb7608704e1b53a1b923cc068172fe05e1c
diff --git a/cmds/installd/migrate_legacy_obb_data.sh b/cmds/installd/migrate_legacy_obb_data.sh
index 1075688..0e6d7b9 100644
--- a/cmds/installd/migrate_legacy_obb_data.sh
+++ b/cmds/installd/migrate_legacy_obb_data.sh
@@ -15,17 +15,17 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-rm -rf /sdcard/Android/obb/test_probe
-mkdir -p /sdcard/Android/obb/
-touch /sdcard/Android/obb/test_probe
+rm -rf /data/media/Android/obb/test_probe
+mkdir -p /data/media/Android/obb/
+touch /data/media/Android/obb/test_probe
if ! test -f /data/media/0/Android/obb/test_probe ; then
log -p i -t migrate_legacy_obb_data "No support for 'unshared_obb'. Not migrating"
- rm -rf /sdcard/Android/obb/test_probe
+ rm -rf /data/media/Android/obb/test_probe
exit 0
fi
# Delete the test file, and remove the obb folder if it is empty
-rm -rf /sdcard/Android/obb/test_probe
+rm -rf /data/media/Android/obb/test_probe
rmdir /data/media/obb
if ! test -d /data/media/obb ; then