Remove the cap of max disk resize.
Instead, get the max resize from the available storage
from the host. Give 1GB additional room to the host.
Test: Check if resize option is available on guest based on host available storage.
Bug: 405398527
Test: Resize storage - Increase by 10G, followed by decrease by 5G
Change-Id: I201749302f4f31c4f345c69eb47444d6bdd0b54c
Signed-off-by: Akilesh Kailash <akailash@google.com>
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/SettingsDiskResizeActivity.kt b/android/TerminalApp/java/com/android/virtualization/terminal/SettingsDiskResizeActivity.kt
index da07b19..00baeef 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/SettingsDiskResizeActivity.kt
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/SettingsDiskResizeActivity.kt
@@ -15,13 +15,15 @@
*/
package com.android.virtualization.terminal
+import android.content.Context
import android.content.Intent
import android.icu.text.MeasureFormat
import android.icu.text.NumberFormat
import android.icu.util.Measure
import android.icu.util.MeasureUnit
import android.os.Bundle
-import android.os.Environment
+import android.os.storage.StorageManager
+import android.os.storage.StorageManager.UUID_DEFAULT
import android.text.SpannableString
import android.text.Spanned
import android.text.TextUtils
@@ -39,7 +41,7 @@
class SettingsDiskResizeActivity : AppCompatActivity() {
private val numberPattern: Pattern = Pattern.compile("[\\d]*[\\٫.,]?[\\d]+")
- private val defaultMaxDiskSizeMb: Long = 16 shl 10
+ private val defaultHostReserveSizeMb: Long = 5 shl 10
private var diskSizeStepMb: Long = 0
private var diskSizeMb: Long = 0
@@ -59,10 +61,10 @@
}
private fun getAvailableSizeMb(): Long {
- val usableSpaceMb =
- bytesToMb(Environment.getDataDirectory().getUsableSpace()) and
- (diskSizeStepMb - 1).inv()
- return diskSizeMb + usableSpaceMb
+ var storageManager =
+ applicationContext.getSystemService(Context.STORAGE_SERVICE) as StorageManager
+ val hostAllocatableMb = bytesToMb(storageManager.getAllocatableBytes(UUID_DEFAULT))
+ return diskSizeMb + hostAllocatableMb
}
private fun mbToProgress(bytes: Long): Int {
@@ -82,7 +84,10 @@
val image = InstalledImage.getDefault(this)
diskSizeMb = bytesToMb(image.getApparentSize())
val minDiskSizeMb = bytesToMb(image.getSmallestSizePossible()).coerceAtMost(diskSizeMb)
- val maxDiskSizeMb = defaultMaxDiskSizeMb.coerceAtMost(getAvailableSizeMb())
+ var maxDiskSizeMb = getAvailableSizeMb()
+ if (maxDiskSizeMb > defaultHostReserveSizeMb) {
+ maxDiskSizeMb -= defaultHostReserveSizeMb
+ }
diskSizeText = findViewById<TextView>(R.id.settings_disk_resize_resize_gb_assigned)!!
diskMaxSizeText = findViewById<TextView>(R.id.settings_disk_resize_resize_gb_max)