From 727dc4d3007c216031c8e351b739e8353e20b02a Mon Sep 17 00:00:00 2001 From: JW Wang Date: Mon, 1 Jun 2020 15:17:51 +0800 Subject: [PATCH] Fix ApexManager#snapshotCeData (3/n) Now it returns a boolean to indicate if the snapshot was successful or not since we no longer use inode to delete snapshots. Bug: 154897348 Test: atest RollbackUnitTest RollbackStoreTest AppDataRollbackHelperTest Merged-In: I10ed0e3adef88a27ee239c183d99a836b623d0d1 Change-Id: I10ed0e3adef88a27ee239c183d99a836b623d0d1 (cherry picked from commit 6d8e4e5a409fcff89b68e635cd87baf8b7974cf9) --- .../java/com/android/server/pm/ApexManager.java | 15 ++++++++------- .../server/rollback/AppDataRollbackHelper.java | 7 +------ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/services/core/java/com/android/server/pm/ApexManager.java b/services/core/java/com/android/server/pm/ApexManager.java index f116a24a76e16..c6a55b43d3fd4 100644 --- a/services/core/java/com/android/server/pm/ApexManager.java +++ b/services/core/java/com/android/server/pm/ApexManager.java @@ -323,9 +323,9 @@ public abstract class ApexManager { * Copies the CE apex data directory for the given {@code userId} to a backup location, for use * in case of rollback. * - * @return long inode for the snapshot directory if the snapshot was successful, or -1 if not + * @return boolean true if the snapshot was successful */ - public abstract long snapshotCeData(int userId, int rollbackId, String apexPackageName); + public abstract boolean snapshotCeData(int userId, int rollbackId, String apexPackageName); /** * Restores the snapshot of the CE apex data directory for the given {@code userId}. @@ -826,7 +826,7 @@ public abstract class ApexManager { } @Override - public long snapshotCeData(int userId, int rollbackId, String apexPackageName) { + public boolean snapshotCeData(int userId, int rollbackId, String apexPackageName) { String apexModuleName; synchronized (mLock) { Preconditions.checkState(mPackageNameToApexModuleName != null, @@ -835,13 +835,14 @@ public abstract class ApexManager { } if (apexModuleName == null) { Slog.e(TAG, "Invalid apex package name: " + apexPackageName); - return -1; + return false; } try { - return waitForApexService().snapshotCeData(userId, rollbackId, apexModuleName); + waitForApexService().snapshotCeData(userId, rollbackId, apexModuleName); + return true; } catch (Exception e) { Slog.e(TAG, e.getMessage(), e); - return -1; + return false; } } @@ -1124,7 +1125,7 @@ public abstract class ApexManager { } @Override - public long snapshotCeData(int userId, int rollbackId, String apexPackageName) { + public boolean snapshotCeData(int userId, int rollbackId, String apexPackageName) { throw new UnsupportedOperationException(); } diff --git a/services/core/java/com/android/server/rollback/AppDataRollbackHelper.java b/services/core/java/com/android/server/rollback/AppDataRollbackHelper.java index 524ae54972e57..0213cc6788c53 100644 --- a/services/core/java/com/android/server/rollback/AppDataRollbackHelper.java +++ b/services/core/java/com/android/server/rollback/AppDataRollbackHelper.java @@ -129,13 +129,8 @@ public class AppDataRollbackHelper { if (packageRollbackInfo.isApex()) { // For APEX, only snapshot CE here if ((flags & Installer.FLAG_STORAGE_CE) != 0) { - long ceSnapshotInode = mApexManager.snapshotCeData( + return mApexManager.snapshotCeData( userId, rollbackId, packageRollbackInfo.getPackageName()); - if (ceSnapshotInode > 0) { - packageRollbackInfo.putCeSnapshotInode(userId, ceSnapshotInode); - } else { - return false; - } } } else { // APK