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

Commit 85c7a9a1 authored by Farid Zare Seisan's avatar Farid Zare Seisan Committed by Android (Google) Code Review
Browse files

Merge "UserDataPrepare: CE storage property set too early." into pi-dev

parents f7d3e028 7f6b8120
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -2541,11 +2541,6 @@ class StorageManagerService extends IStorageManager.Stub
        synchronized (mLock) {
            mLocalUnlockedUsers = ArrayUtils.appendInt(mLocalUnlockedUsers, userId);
        }
        if (userId == UserHandle.USER_SYSTEM) {
            String propertyName = "sys.user." + userId + ".ce_available";
            Slog.d(TAG, "Setting property: " + propertyName + "=true");
            SystemProperties.set(propertyName, "true");
        }
    }

    @Override
@@ -2685,7 +2680,8 @@ class StorageManagerService extends IStorageManager.Stub
        }

        // Ignore requests to create directories if CE storage is not available
        if (!SystemProperties.getBoolean(propertyName, false)) {
        if ((userId == UserHandle.USER_SYSTEM)
                && !SystemProperties.getBoolean(propertyName, false)) {
            throw new IllegalStateException("Failed to prepare " + appPath);
        }

+12 −1
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ import android.os.Environment;
import android.os.FileUtils;
import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.system.ErrnoException;
import android.system.Os;
import android.system.OsConstants;
@@ -96,6 +98,14 @@ class UserDataPreparer {
            }

            mInstaller.createUserData(volumeUuid, userId, userSerial, flags);

            // CE storage is available after they are prepared.
            if ((flags & StorageManager.FLAG_STORAGE_CE) != 0 &&
                    (userId == UserHandle.USER_SYSTEM)) {
                String propertyName = "sys.user." + userId + ".ce_available";
                Slog.d(TAG, "Setting property: " + propertyName + "=true");
                SystemProperties.set(propertyName, "true");
            }
        } catch (Exception e) {
            logCriticalInfo(Log.WARN, "Destroying user " + userId + " on volume " + volumeUuid
                    + " because we failed to prepare: " + e);
@@ -103,7 +113,8 @@ class UserDataPreparer {

            if (allowRecover) {
                // Try one last time; if we fail again we're really in trouble
                prepareUserDataLI(volumeUuid, userId, userSerial, flags, false);
                prepareUserDataLI(volumeUuid, userId, userSerial,
                    flags | StorageManager.FLAG_STORAGE_DE, false);
            }
        }
    }