Merge "Add a method in vold to unmount app data and obb dir for testing"
diff --git a/Android.bp b/Android.bp
index 1c0ed17..e8344da 100644
--- a/Android.bp
+++ b/Android.bp
@@ -149,6 +149,14 @@
"model/VolumeEncryption.cpp",
],
product_variables: {
+ arc: {
+ exclude_srcs: [
+ "model/StubVolume.cpp",
+ ],
+ static_libs: [
+ "libarcvolume",
+ ],
+ },
debuggable: {
cppflags: ["-D__ANDROID_DEBUGGABLE__"],
},
@@ -185,6 +193,17 @@
shared_libs: [
"android.hardware.health.storage@1.0",
],
+
+ product_variables: {
+ arc: {
+ exclude_srcs: [
+ "model/StubVolume.cpp",
+ ],
+ static_libs: [
+ "libarcvolume",
+ ],
+ },
+ },
}
cc_binary {
diff --git a/VolumeManager.cpp b/VolumeManager.cpp
index 5b249cb..ac7356c 100644
--- a/VolumeManager.cpp
+++ b/VolumeManager.cpp
@@ -1138,9 +1138,14 @@
auto vol = std::shared_ptr<android::vold::StubVolume>(
new android::vold::StubVolume(stubId, sourcePath, mountPath, fsType, fsUuid, fsLabel));
- int32_t passedFlags = android::vold::Disk::Flags::kStub;
+ int32_t passedFlags = 0;
passedFlags |= (flags & android::vold::Disk::Flags::kUsb);
passedFlags |= (flags & android::vold::Disk::Flags::kSd);
+ if (flags & android::vold::Disk::Flags::kStubVisible) {
+ passedFlags |= (flags & android::vold::Disk::Flags::kStubVisible);
+ } else {
+ passedFlags |= (flags & android::vold::Disk::Flags::kStubInvisible);
+ }
// StubDisk doesn't have device node corresponds to it. So, a fake device
// number is used.
auto disk = std::shared_ptr<android::vold::Disk>(
diff --git a/model/Disk.h b/model/Disk.h
index 99c98fc..16476dc 100644
--- a/model/Disk.h
+++ b/model/Disk.h
@@ -53,9 +53,12 @@
kUsb = 1 << 3,
/* Flag that disk is EMMC internal */
kEmmc = 1 << 4,
- /* Flag that disk is Stub disk, i.e., disk that is managed from outside
- * Android (e.g., ARC++). */
- kStub = 1 << 5,
+ /* Flag that disk is an invisible Stub disk, i.e., disk that is managed from outside
+ * Android (e.g., ARC++) and invisible to apps. */
+ kStubInvisible = 1 << 5,
+ /* Flag that disk is a visible Stub disk, i.e., disk that is managed from outside
+ * Android (e.g., ARC++) and visible to apps. */
+ kStubVisible = 1 << 6,
};
const std::string& getId() const { return mId; }
@@ -120,7 +123,7 @@
int getMaxMinors();
- bool isStub() { return mFlags & kStub; }
+ bool isStub() { return (mFlags & kStubInvisible) || (mFlags & kStubVisible); }
DISALLOW_COPY_AND_ASSIGN(Disk);
};