5048b4b2bc
Mounting a FUSE path needs two steps: 1. Mounting the filesystem 2. Starting the FUSE session in the FUSE daemon The second part requires retriving an fd from (1) and the mount paths and passing it to the FUSE daemon. Previously, we'd return from the Vold mount call and mark the volume as mounted while we scramble to do (2). This means there's a time period where the Volume is marked as MOUNTED but not actually ready and any IO access on the paths will hang forever. This could also be misleading when interpreting bug reports. Now, we block the Vold mount call until the FUSE session is started Test: atest AdoptableHostTest Bug: 144275217 Change-Id: I45238a31df71286f67ef1c65c711d0085d72e97f
272 lines
5.6 KiB
Text
272 lines
5.6 KiB
Text
cc_defaults {
|
|
name: "vold_default_flags",
|
|
|
|
cflags: [
|
|
"-Wall",
|
|
"-Werror",
|
|
"-Wextra",
|
|
"-Wno-missing-field-initializers",
|
|
"-Wno-unused-parameter",
|
|
"-Wno-unused-variable",
|
|
],
|
|
|
|
clang: true,
|
|
|
|
tidy: true,
|
|
tidy_checks: [
|
|
"-*",
|
|
"cert-*",
|
|
"clang-analyzer-security*",
|
|
"android-*",
|
|
],
|
|
tidy_flags: [
|
|
"-warnings-as-errors=clang-analyzer-security*,cert-*",
|
|
],
|
|
}
|
|
|
|
cc_defaults {
|
|
name: "vold_default_libs",
|
|
|
|
static_libs: [
|
|
"libavb",
|
|
"libbootloader_message",
|
|
"libdm",
|
|
"libext2_uuid",
|
|
"libfec",
|
|
"libfec_rs",
|
|
"libfs_avb",
|
|
"libfs_mgr",
|
|
"libscrypt_static",
|
|
"libsquashfs_utils",
|
|
"libvold_binder",
|
|
],
|
|
shared_libs: [
|
|
"android.hardware.keymaster@3.0",
|
|
"android.hardware.keymaster@4.0",
|
|
"android.hardware.boot@1.0",
|
|
"libbase",
|
|
"libbinder",
|
|
"libcrypto",
|
|
"libcrypto_utils",
|
|
"libcutils",
|
|
"libdiskconfig",
|
|
"libext4_utils",
|
|
"libf2fs_sparseblock",
|
|
"libhardware",
|
|
"libhardware_legacy",
|
|
"libhidlbase",
|
|
"libkeymaster4support",
|
|
"libkeyutils",
|
|
"liblog",
|
|
"liblogwrap",
|
|
"libselinux",
|
|
"libsysutils",
|
|
"libutils",
|
|
],
|
|
}
|
|
|
|
cc_library_static {
|
|
name: "libvold_binder",
|
|
defaults: ["vold_default_flags"],
|
|
|
|
srcs: [
|
|
":vold_aidl",
|
|
],
|
|
shared_libs: [
|
|
"libbinder",
|
|
"libutils",
|
|
],
|
|
aidl: {
|
|
local_include_dirs: ["binder"],
|
|
include_dirs: ["frameworks/native/aidl/binder"],
|
|
export_aidl_headers: true,
|
|
},
|
|
}
|
|
|
|
cc_library_headers {
|
|
name: "libvold_headers",
|
|
recovery_available: true,
|
|
export_include_dirs: ["."],
|
|
}
|
|
|
|
// Static library factored out to support testing
|
|
cc_library_static {
|
|
name: "libvold",
|
|
defaults: [
|
|
"vold_default_flags",
|
|
"vold_default_libs",
|
|
],
|
|
|
|
srcs: [
|
|
"AppFuseUtil.cpp",
|
|
"Benchmark.cpp",
|
|
"CheckEncryption.cpp",
|
|
"Checkpoint.cpp",
|
|
"Devmapper.cpp",
|
|
"EncryptInplace.cpp",
|
|
"FileDeviceUtils.cpp",
|
|
"FsCrypt.cpp",
|
|
"IdleMaint.cpp",
|
|
"KeyBuffer.cpp",
|
|
"KeyStorage.cpp",
|
|
"KeyUtil.cpp",
|
|
"Keymaster.cpp",
|
|
"Loop.cpp",
|
|
"MetadataCrypt.cpp",
|
|
"MoveStorage.cpp",
|
|
"NetlinkHandler.cpp",
|
|
"NetlinkManager.cpp",
|
|
"Process.cpp",
|
|
"ScryptParameters.cpp",
|
|
"Utils.cpp",
|
|
"VoldNativeService.cpp",
|
|
"VoldUtil.cpp",
|
|
"VolumeManager.cpp",
|
|
"cryptfs.cpp",
|
|
"fs/Exfat.cpp",
|
|
"fs/Ext4.cpp",
|
|
"fs/F2fs.cpp",
|
|
"fs/Vfat.cpp",
|
|
"model/Disk.cpp",
|
|
"model/EmulatedVolume.cpp",
|
|
"model/ObbVolume.cpp",
|
|
"model/PrivateVolume.cpp",
|
|
"model/PublicVolume.cpp",
|
|
"model/VolumeBase.cpp",
|
|
"model/StubVolume.cpp",
|
|
],
|
|
product_variables: {
|
|
arc: {
|
|
exclude_srcs: [
|
|
"AppFuseUtil.cpp",
|
|
"model/ObbVolume.cpp",
|
|
],
|
|
static_libs: [
|
|
"arc_services_aidl",
|
|
"libarcappfuse",
|
|
"libarcobbvolume",
|
|
],
|
|
},
|
|
debuggable: {
|
|
cppflags: ["-D__ANDROID_DEBUGGABLE__"],
|
|
},
|
|
},
|
|
shared_libs: [
|
|
"android.hardware.health.storage@1.0",
|
|
],
|
|
whole_static_libs: [
|
|
"com.android.sysprop.apex",
|
|
],
|
|
}
|
|
|
|
cc_binary {
|
|
name: "vold",
|
|
defaults: [
|
|
"vold_default_flags",
|
|
"vold_default_libs",
|
|
],
|
|
|
|
srcs: ["main.cpp"],
|
|
static_libs: ["libvold"],
|
|
product_variables: {
|
|
arc: {
|
|
static_libs: [
|
|
"arc_services_aidl",
|
|
"libarcappfuse",
|
|
"libarcobbvolume",
|
|
],
|
|
},
|
|
},
|
|
init_rc: [
|
|
"vold.rc",
|
|
"wait_for_keymaster.rc",
|
|
],
|
|
|
|
required: [
|
|
"mke2fs",
|
|
"vold_prepare_subdirs",
|
|
"wait_for_keymaster",
|
|
],
|
|
|
|
shared_libs: [
|
|
"android.hardware.health.storage@1.0",
|
|
],
|
|
}
|
|
|
|
cc_binary {
|
|
name: "vdc",
|
|
defaults: ["vold_default_flags"],
|
|
|
|
srcs: ["vdc.cpp"],
|
|
shared_libs: [
|
|
"libbase",
|
|
"libbinder",
|
|
"libcutils",
|
|
"libutils",
|
|
],
|
|
static_libs: [
|
|
"libvold_binder",
|
|
],
|
|
init_rc: ["vdc.rc"],
|
|
}
|
|
|
|
cc_binary {
|
|
name: "wait_for_keymaster",
|
|
defaults: ["vold_default_flags"],
|
|
|
|
srcs: [
|
|
"wait_for_keymaster.cpp",
|
|
"Keymaster.cpp",
|
|
],
|
|
shared_libs: [
|
|
"libbase",
|
|
"libbinder",
|
|
|
|
"android.hardware.keymaster@3.0",
|
|
"android.hardware.keymaster@4.0",
|
|
"libhardware",
|
|
"libhardware_legacy",
|
|
"libhidlbase",
|
|
"libkeymaster4support",
|
|
"libutils",
|
|
],
|
|
}
|
|
|
|
cc_binary {
|
|
name: "secdiscard",
|
|
defaults: ["vold_default_flags"],
|
|
|
|
srcs: [
|
|
"FileDeviceUtils.cpp",
|
|
"secdiscard.cpp",
|
|
],
|
|
shared_libs: ["libbase"],
|
|
}
|
|
|
|
cc_binary {
|
|
name: "vold_prepare_subdirs",
|
|
defaults: ["vold_default_flags"],
|
|
|
|
srcs: ["vold_prepare_subdirs.cpp", "Utils.cpp"],
|
|
shared_libs: [
|
|
"libbase",
|
|
"libcutils",
|
|
"liblogwrap",
|
|
"libselinux",
|
|
"libutils",
|
|
],
|
|
static_libs: [
|
|
"libvold_binder",
|
|
],
|
|
}
|
|
|
|
filegroup {
|
|
name: "vold_aidl",
|
|
srcs: [
|
|
"binder/android/os/IVold.aidl",
|
|
"binder/android/os/IVoldListener.aidl",
|
|
"binder/android/os/IVoldMountCallback.aidl",
|
|
"binder/android/os/IVoldTaskListener.aidl",
|
|
],
|
|
path: "binder",
|
|
}
|