From de2826b1e95573cf1cf065f46d661ab27bade00c Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Thu, 12 Mar 2015 18:53:31 -0700 Subject: [PATCH] Properly set up local transport data dirs after an initialize operation We were properly setting up the underlying storage at boot time, but *not* doing so after an "initialize" operation, i.e. after wiping all of the data upon request. The effect was that after an init operation while using the local transport (e.g. if you disabled backup and then reenabled it with the local transport as your active one), full-data backup operations wouldn't work until after the next reboot. (Resubmit, with fixes, of earlier revert.) Change-Id: I745cb49b5155119d63cff6fffad5230687faca71 --- .../android/internal/backup/LocalTransport.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/core/java/com/android/internal/backup/LocalTransport.java b/core/java/com/android/internal/backup/LocalTransport.java index fb0ffb09c215e..e32a3a28bade7 100644 --- a/core/java/com/android/internal/backup/LocalTransport.java +++ b/core/java/com/android/internal/backup/LocalTransport.java @@ -84,7 +84,6 @@ public class LocalTransport extends BackupTransport { private File mRestoreSetDir; private File mRestoreSetIncrementalDir; private File mRestoreSetFullDir; - private long mRestoreToken; // Additional bookkeeping for full backup private String mFullTargetPackage; @@ -93,20 +92,22 @@ public class LocalTransport extends BackupTransport { private BufferedOutputStream mFullBackupOutputStream; private byte[] mFullBackupBuffer; - private File mFullRestoreSetDir; - private HashSet mFullRestorePackages; private FileInputStream mCurFullRestoreStream; private FileOutputStream mFullRestoreSocketStream; private byte[] mFullRestoreBuffer; - public LocalTransport(Context context) { - mContext = context; + private void makeDataDirs() { mCurrentSetDir.mkdirs(); - mCurrentSetFullDir.mkdir(); - mCurrentSetIncrementalDir.mkdir(); if (!SELinux.restorecon(mCurrentSetDir)) { Log.e(TAG, "SELinux restorecon failed for " + mCurrentSetDir); } + mCurrentSetFullDir.mkdir(); + mCurrentSetIncrementalDir.mkdir(); + } + + public LocalTransport(Context context) { + mContext = context; + makeDataDirs(); } @Override @@ -151,6 +152,7 @@ public class LocalTransport extends BackupTransport { public int initializeDevice() { if (DEBUG) Log.v(TAG, "wiping all data"); deleteContents(mCurrentSetDir); + makeDataDirs(); return TRANSPORT_OK; } @@ -425,7 +427,6 @@ public class LocalTransport extends BackupTransport { + " matching packages"); mRestorePackages = packages; mRestorePackage = -1; - mRestoreToken = token; mRestoreSetDir = new File(mDataDir, Long.toString(token)); mRestoreSetIncrementalDir = new File(mRestoreSetDir, INCREMENTAL_DIR); mRestoreSetFullDir = new File(mRestoreSetDir, FULL_DATA_DIR);