* commit 'e87dc6dba58e55c60f387a86468a57a5109a97ac': More info to support CTS, fix reconcile bug.
This commit is contained in:
@@ -81,6 +81,8 @@ public final class Sm {
|
||||
runUnmount();
|
||||
} else if ("format".equals(op)) {
|
||||
runFormat();
|
||||
} else if ("benchmark".equals(op)) {
|
||||
runBenchmark();
|
||||
} else if ("forget".equals(op)) {
|
||||
runForget();
|
||||
} else {
|
||||
@@ -89,9 +91,12 @@ public final class Sm {
|
||||
}
|
||||
|
||||
public void runListDisks() throws RemoteException {
|
||||
final boolean onlyAdoptable = "adoptable".equals(nextArg());
|
||||
final DiskInfo[] disks = mSm.getDisks();
|
||||
for (DiskInfo disk : disks) {
|
||||
System.out.println(disk.getId());
|
||||
if (!onlyAdoptable || disk.isAdoptable()) {
|
||||
System.out.println(disk.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,6 +166,11 @@ public final class Sm {
|
||||
mSm.format(volId);
|
||||
}
|
||||
|
||||
public void runBenchmark() throws RemoteException {
|
||||
final String volId = nextArg();
|
||||
mSm.benchmark(volId);
|
||||
}
|
||||
|
||||
public void runForget() throws RemoteException{
|
||||
final String fsUuid = nextArg();
|
||||
if ("all".equals(fsUuid)) {
|
||||
@@ -180,7 +190,7 @@ public final class Sm {
|
||||
}
|
||||
|
||||
private static int showUsage() {
|
||||
System.err.println("usage: sm list-disks");
|
||||
System.err.println("usage: sm list-disks [adoptable]");
|
||||
System.err.println(" sm list-volumes [public|private|emulated|all]");
|
||||
System.err.println(" sm has-adoptable");
|
||||
System.err.println(" sm get-primary-storage-uuid");
|
||||
@@ -190,6 +200,7 @@ public final class Sm {
|
||||
System.err.println(" sm mount VOLUME");
|
||||
System.err.println(" sm unmount VOLUME");
|
||||
System.err.println(" sm format VOLUME");
|
||||
System.err.println(" sm benchmark VOLUME");
|
||||
System.err.println("");
|
||||
System.err.println(" sm forget [UUID|all]");
|
||||
System.err.println("");
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package android.os;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.provider.DocumentsContract.Document;
|
||||
import android.system.ErrnoException;
|
||||
import android.system.Os;
|
||||
@@ -69,6 +70,8 @@ public class FileUtils {
|
||||
/** Regular expression for safe filenames: no spaces or metacharacters */
|
||||
private static final Pattern SAFE_FILENAME_PATTERN = Pattern.compile("[\\w%+,./=_-]+");
|
||||
|
||||
private static final File[] EMPTY = new File[0];
|
||||
|
||||
/**
|
||||
* Set owner and mode of of given {@link File}.
|
||||
*
|
||||
@@ -634,4 +637,13 @@ public class FileUtils {
|
||||
return new File(parent, name + "." + ext);
|
||||
}
|
||||
}
|
||||
|
||||
public static @NonNull File[] listFilesOrEmpty(File dir) {
|
||||
File[] res = dir.listFiles();
|
||||
if (res != null) {
|
||||
return res;
|
||||
} else {
|
||||
return EMPTY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15605,12 +15605,8 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
* recycled.
|
||||
*/
|
||||
private void reconcileUsers(String volumeUuid) {
|
||||
final File[] files = Environment.getDataUserDirectory(volumeUuid).listFiles();
|
||||
if (ArrayUtils.isEmpty(files)) {
|
||||
Slog.d(TAG, "No users found on " + volumeUuid);
|
||||
return;
|
||||
}
|
||||
|
||||
final File[] files = FileUtils
|
||||
.listFilesOrEmpty(Environment.getDataUserDirectory(volumeUuid));
|
||||
for (File file : files) {
|
||||
if (!file.isDirectory()) continue;
|
||||
|
||||
@@ -15666,12 +15662,8 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
* another volume.
|
||||
*/
|
||||
private void reconcileApps(String volumeUuid) {
|
||||
final File[] files = Environment.getDataAppDirectory(volumeUuid).listFiles();
|
||||
if (ArrayUtils.isEmpty(files)) {
|
||||
Slog.d(TAG, "No apps found on " + volumeUuid);
|
||||
return;
|
||||
}
|
||||
|
||||
final File[] files = FileUtils
|
||||
.listFilesOrEmpty(Environment.getDataAppDirectory(volumeUuid));
|
||||
for (File file : files) {
|
||||
final boolean isPackage = (isApkFile(file) || file.isDirectory())
|
||||
&& !PackageInstallerService.isStageName(file.getName());
|
||||
@@ -15802,7 +15794,12 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
}
|
||||
|
||||
// Now that we're guarded by frozen state, kill app during move
|
||||
killApplication(packageName, appId, "move pkg");
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
killApplication(packageName, appId, "move pkg");
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
|
||||
final Bundle extras = new Bundle();
|
||||
extras.putString(Intent.EXTRA_PACKAGE_NAME, packageName);
|
||||
|
||||
Reference in New Issue
Block a user