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

Commit 32add5ab authored by Nikita Ioffe's avatar Nikita Ioffe Committed by Android (Google) Code Review
Browse files

Merge "Add shell commands to start checkpoint/check it is supported"

parents 72a4075c 6d749427
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -103,6 +103,10 @@ public final class Sm {
            runSetVirtualDisk();
        } else if ("set-isolated-storage".equals(op)) {
            runIsolatedStorage();
        } else if ("start-checkpoint".equals(op)) {
            runStartCheckpoint();
        } else if ("supports-checkpoint".equals(op)) {
            runSupportsCheckpoint();
        } else {
            throw new IllegalArgumentException();
        }
@@ -313,6 +317,27 @@ public final class Sm {
        }
    }

    private void runStartCheckpoint() throws RemoteException {
        final String numRetriesString = nextArg();
        if (numRetriesString == null) {
            throw new IllegalArgumentException("Expected <num-retries>");
        }
        int numRetries;
        try {
            numRetries = Integer.parseInt(numRetriesString);
        } catch (NumberFormatException e) {
            throw new IllegalArgumentException("<num-retries> must be a positive integer");
        }
        if (numRetries <= 0) {
            throw new IllegalArgumentException("<num-retries> must be a positive integer");
        }
        mSm.startCheckpoint(numRetries);
    }

    private void runSupportsCheckpoint() throws RemoteException {
        System.out.println(mSm.supportsCheckpoint());
    }

    private String nextArg() {
        if (mNextArg >= mArgs.length) {
            return null;
@@ -344,6 +369,10 @@ public final class Sm {
        System.err.println("");
        System.err.println("       sm set-isolated-storage [on|off|default]");
        System.err.println("");
        System.err.println("       sm start-checkpoint <num-retries>");
        System.err.println("");
        System.err.println("       sm supports-checkpoint");
        System.err.println("");
        return 1;
    }
}
+4 −2
Original line number Diff line number Diff line
@@ -2855,8 +2855,10 @@ class StorageManagerService extends IStorageManager.Stub
     */
    @Override
    public void startCheckpoint(int numTries) throws RemoteException {
        // Only the system process is permitted to start checkpoints
        if (Binder.getCallingUid() != android.os.Process.SYSTEM_UID) {
        // Only the root, system_server and shell processes are permitted to start checkpoints
        final int callingUid = Binder.getCallingUid();
        if (callingUid != Process.SYSTEM_UID && callingUid != Process.ROOT_UID
                && callingUid != Process.SHELL_UID) {
            throw new SecurityException("no permission to start filesystem checkpoint");
        }