installd: Account for empty obb contents on migration
We need /data/media/obb on devices with old kernels. Since that folder
is present, we should check if there are contents there before migrating
data.
This also fixes the check for if the kernel supports the unshared_obb
option. If it does, it only does the migration if there is data to
migrate.
Test: Boot with GSI over P, boot normal Q, with and without data at
/data/media/obb. With data, it should migrate. Without data it
shoud skip the migration. On GSI on P it should skip the
migration.
Bug: 136199978
Change-Id: I41b0ec7a8a6b57b2ea6a530630d56c00f758009a
diff --git a/cmds/installd/migrate_legacy_obb_data.sh b/cmds/installd/migrate_legacy_obb_data.sh
index ef9be5c..1075688 100644
--- a/cmds/installd/migrate_legacy_obb_data.sh
+++ b/cmds/installd/migrate_legacy_obb_data.sh
@@ -15,16 +15,21 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-if ! test -d /data/media/obb ; then
- log -p i -t migrate_legacy_obb_data "No legacy obb data to migrate."
- exit 0
-fi
-
-rm -rf /data/media/0/Android/obb/test_probe
+rm -rf /sdcard/Android/obb/test_probe
+mkdir -p /sdcard/Android/obb/
touch /sdcard/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 /data/media/0/Android/obb/test_probe
+ rm -rf /sdcard/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
+rmdir /data/media/obb
+
+if ! test -d /data/media/obb ; then
+ log -p i -t migrate_legacy_obb_data "No legacy obb data to migrate."
exit 0
fi