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

Commit 5a276985 authored by Howard Chen's avatar Howard Chen
Browse files

Support cuttlefish with an emulated 2GB SD

Currently we have an assumption that SD card's size is bigger
than the internal /data so the DSU would  always choose SD as the
destination when possible. This assumption is not valid for
cuttlefish which only have an emulated 2G SD

Bug: 179980369
Bug: 171861574

Test: A physical device with a SD card inserted and
      CF local instance with an emulated SD

Change-Id: I15c5d38ab316b8d65546d876fe235d0c9c6ed6aa
parent 9a90bb9e
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.os.ServiceManager;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.image.IDynamicSystemService;
import android.os.storage.DiskInfo;
import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo;
import android.util.Slog;
@@ -40,6 +41,7 @@ import java.io.File;
 */
public class DynamicSystemService extends IDynamicSystemService.Stub {
    private static final String TAG = "DynamicSystemService";
    private static final long MINIMUM_SD_MB = (30L << 10);
    private static final int GSID_ROUGH_TIMEOUT_MS = 8192;
    private static final String PATH_DEFAULT = "/data/gsi/";
    private Context mContext;
@@ -95,6 +97,13 @@ public class DynamicSystemService extends IDynamicSystemService.Stub {
                if (!volume.isMountedWritable()) {
                    continue;
                }
                DiskInfo disk = volume.getDisk();
                long mega = disk.size >> 20;
                Slog.i(TAG, volume.getPath() + ": " + mega + " MB");
                if (mega < MINIMUM_SD_MB) {
                    Slog.i(TAG, volume.getPath() + ": insufficient storage");
                    continue;
                }
                File sd_internal = volume.getInternalPathForUser(userId);
                if (sd_internal != null) {
                    path = new File(sd_internal, dsuSlot).getPath();