DO NOT MERGE - Merge Android 13

Bug: 242648940
Merged-In: I648a1af9e16787dfcfeefa2b2f2e4a72cac2c6a6
Change-Id: I137ddfb8ebd31457540743ad05a794a3526c6bf6
This commit is contained in:
Xin Li 2022-08-15 22:06:36 -07:00
commit 302f60e5f3
4 changed files with 14 additions and 25 deletions

View file

@ -390,28 +390,6 @@ static void runDevGcOnHal(Service service, GcCallbackImpl cb, GetDescription get
} }
static void runDevGc(void) { static void runDevGc(void) {
auto aidl_service_name = AStorage::descriptor + "/default"s;
if (AServiceManager_isDeclared(aidl_service_name.c_str())) {
ndk::SpAIBinder binder(AServiceManager_waitForService(aidl_service_name.c_str()));
if (binder.get() != nullptr) {
std::shared_ptr<AStorage> aidl_service = AStorage::fromBinder(binder);
if (aidl_service != nullptr) {
runDevGcOnHal<IDL::AIDL>(aidl_service, ndk::SharedRefBase::make<AGcCallbackImpl>(),
&ndk::ScopedAStatus::getDescription);
return;
}
}
LOG(WARNING) << "Device declares " << aidl_service_name
<< " but it is not running, skip dev GC on AIDL HAL";
return;
}
auto hidl_service = HStorage::getService();
if (hidl_service != nullptr) {
runDevGcOnHal<IDL::HIDL>(hidl_service, sp<HGcCallbackImpl>(new HGcCallbackImpl()),
&Return<void>::description);
return;
}
// fallback to legacy code path
runDevGcFstab(); runDevGcFstab();
} }

View file

@ -1763,5 +1763,15 @@ std::pair<android::base::unique_fd, std::string> OpenDirInProcfs(std::string_vie
return {std::move(fd), std::move(linkPath)}; return {std::move(fd), std::move(linkPath)};
} }
bool IsFuseBpfEnabled() {
std::string bpf_override = android::base::GetProperty("persist.sys.fuse.bpf.override", "");
if (bpf_override == "true") {
return true;
} else if (bpf_override == "false") {
return false;
}
return base::GetBoolProperty("ro.fuse.bpf.enabled", false);
}
} // namespace vold } // namespace vold
} // namespace android } // namespace android

View file

@ -37,7 +37,6 @@ namespace vold {
static const char* kVoldAppDataIsolationEnabled = "persist.sys.vold_app_data_isolation_enabled"; static const char* kVoldAppDataIsolationEnabled = "persist.sys.vold_app_data_isolation_enabled";
static const char* kExternalStorageSdcardfs = "external_storage.sdcardfs.enabled"; static const char* kExternalStorageSdcardfs = "external_storage.sdcardfs.enabled";
static const char* kFuseBpfEnabled = "persist.sys.fuse.bpf.override";
static constexpr std::chrono::seconds kUntrustedFsckSleepTime(45); static constexpr std::chrono::seconds kUntrustedFsckSleepTime(45);
@ -208,6 +207,8 @@ status_t UnmountUserFuse(userid_t userId, const std::string& absolute_lower_path
status_t PrepareAndroidDirs(const std::string& volumeRoot); status_t PrepareAndroidDirs(const std::string& volumeRoot);
bool IsFuseBpfEnabled();
// Open a given directory as an FD, and return that and the corresponding procfs virtual // Open a given directory as an FD, and return that and the corresponding procfs virtual
// symlink path that can be used in any API that accepts a path string. Path stays valid until // symlink path that can be used in any API that accepts a path string. Path stays valid until
// the directory FD is closed. // the directory FD is closed.

View file

@ -49,7 +49,7 @@ EmulatedVolume::EmulatedVolume(const std::string& rawPath, int userId)
mRawPath = rawPath; mRawPath = rawPath;
mLabel = "emulated"; mLabel = "emulated";
mFuseMounted = false; mFuseMounted = false;
mFuseBpfEnabled = base::GetBoolProperty(kFuseBpfEnabled, false); mFuseBpfEnabled = IsFuseBpfEnabled();
mUseSdcardFs = IsSdcardfsUsed(); mUseSdcardFs = IsSdcardfsUsed();
mAppDataIsolationEnabled = base::GetBoolProperty(kVoldAppDataIsolationEnabled, false); mAppDataIsolationEnabled = base::GetBoolProperty(kVoldAppDataIsolationEnabled, false);
} }
@ -61,7 +61,7 @@ EmulatedVolume::EmulatedVolume(const std::string& rawPath, dev_t device, const s
mRawPath = rawPath; mRawPath = rawPath;
mLabel = fsUuid; mLabel = fsUuid;
mFuseMounted = false; mFuseMounted = false;
mFuseBpfEnabled = base::GetBoolProperty(kFuseBpfEnabled, false); mFuseBpfEnabled = IsFuseBpfEnabled();
mUseSdcardFs = IsSdcardfsUsed(); mUseSdcardFs = IsSdcardfsUsed();
mAppDataIsolationEnabled = base::GetBoolProperty(kVoldAppDataIsolationEnabled, false); mAppDataIsolationEnabled = base::GetBoolProperty(kVoldAppDataIsolationEnabled, false);
} }