diff --git a/VolumeManager.cpp b/VolumeManager.cpp index bbdcd3a..ce7a8b1 100644 --- a/VolumeManager.cpp +++ b/VolumeManager.cpp @@ -1092,9 +1092,14 @@ int VolumeManager::createStubVolume(const std::string& sourcePath, const std::st auto vol = std::shared_ptr( 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( 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 @@ class Disk { 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 @@ class Disk { int getMaxMinors(); - bool isStub() { return mFlags & kStub; } + bool isStub() { return (mFlags & kStubInvisible) || (mFlags & kStubVisible); } DISALLOW_COPY_AND_ASSIGN(Disk); };