From 6f2ba5ec4389e75aefc342d544963722b2762ee0 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 18 Mar 2015 11:27:19 -0700 Subject: [PATCH] Progress towards dynamic storage support. Storage devices are no longer hard-coded, and instead bubble up from whatever Disk and VolumeBase that vold uncovered, turning into sibling Java objects in MountService. We now treat vold events as the source-of-truth for state, and synchronize our state by asking vold to "reset" whenever we reconnect. We've now moved to a model where all storage devices are mounted in the root mount namespace (user boundaries protected with GIDs), so we no longer need app-to-vold path translation. This also means that zygote only needs to bind mount the user-specific /mnt/user/n/ path onto /storage/self/ to make legacy paths like /sdcard work. This grealy simplifies a lot of system code. Many parts of the platform depend on a primary storage device always being present, so we hack together a stub StorageVolume when vold doesn't have a volume ready yet. StorageVolume isn't really a volume anymore; it's the user-specific view onto a volume, so MountService now filters and builds them based on the calling user. StorageVolume is now immutable, making it easier to reason about. Environment now builds all of its paths dynamically based on active volumes. Adds utility methods to turn int types and flags into user-readable strings for debugging purposes. Remove UMS sharing support for now, since no current devices support it; MTP is the recommended solution going forward because it offers better multi-user support. Simplify unmount logic, since vold will now gladly trigger EJECTING broadcast and kill stubborn processes. Bug: 19993667 Change-Id: I9842280e61974c91bae15d764e386969aedcd338 --- core/java/android/net/TrafficStats.java | 2 ++ .../com/android/server/NativeDaemonConnector.java | 14 +++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/core/java/android/net/TrafficStats.java b/core/java/android/net/TrafficStats.java index 3f1851901f..ff3de2b6b4 100644 --- a/core/java/android/net/TrafficStats.java +++ b/core/java/android/net/TrafficStats.java @@ -51,6 +51,8 @@ public class TrafficStats { public static final long MB_IN_BYTES = KB_IN_BYTES * 1024; /** @hide */ public static final long GB_IN_BYTES = MB_IN_BYTES * 1024; + /** @hide */ + public static final long TB_IN_BYTES = GB_IN_BYTES * 1024; /** * Special UID value used when collecting {@link NetworkStatsHistory} for diff --git a/services/core/java/com/android/server/NativeDaemonConnector.java b/services/core/java/com/android/server/NativeDaemonConnector.java index d2dfc7bbdc..78c7f385a1 100644 --- a/services/core/java/com/android/server/NativeDaemonConnector.java +++ b/services/core/java/com/android/server/NativeDaemonConnector.java @@ -48,8 +48,6 @@ import java.util.LinkedList; * {@code libsysutils} FrameworkListener protocol. */ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdog.Monitor { - private static final boolean LOGD = false; - private final static boolean VDBG = false; private final String TAG; @@ -58,6 +56,8 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo private OutputStream mOutputStream; private LocalLog mLocalLog; + private volatile boolean mDebug = false; + private final ResponseQueue mResponseQueue; private final PowerManager.WakeLock mWakeLock; @@ -99,6 +99,14 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo mLocalLog = new LocalLog(maxLogSize); } + /** + * Enable Set debugging mode, which causes messages to also be written to both + * {@link Slog} in addition to internal log. + */ + public void setDebug(boolean debug) { + mDebug = debug; + } + @Override public void run() { mCallbackHandler = new Handler(mLooper, this); @@ -513,7 +521,7 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo } private void log(String logstring) { - if (LOGD) Slog.d(TAG, logstring); + if (mDebug) Slog.d(TAG, logstring); mLocalLog.log(logstring); }