Get rid of confusing FUSE variables and comments.
Long before scoped storage, FUSE was used to create several views of the
filesystem; this was later replaced by sdcardfs, yet the code still
references FUSE in variables and log messages. Fix those up to avoid
confusion with the "new FUSE".
Bug: 135341433
Test: atest AdoptableHostTest
Change-Id: I2966c5f95d6f38df36a20cdfdd0b95b3051f3f1e
diff --git a/model/EmulatedVolume.cpp b/model/EmulatedVolume.cpp
index eb6b8a3..705bf79 100644
--- a/model/EmulatedVolume.cpp
+++ b/model/EmulatedVolume.cpp
@@ -40,10 +40,10 @@
namespace android {
namespace vold {
-static const char* kFusePath = "/system/bin/sdcard";
+static const char* kSdcardFsPath = "/system/bin/sdcard";
EmulatedVolume::EmulatedVolume(const std::string& rawPath, int userId)
- : VolumeBase(Type::kEmulated), mFusePid(0) {
+ : VolumeBase(Type::kEmulated) {
setId(StringPrintf("emulated;%u", userId));
mRawPath = rawPath;
mLabel = "emulated";
@@ -51,7 +51,7 @@
EmulatedVolume::EmulatedVolume(const std::string& rawPath, dev_t device, const std::string& fsUuid,
int userId)
- : VolumeBase(Type::kEmulated), mFusePid(0) {
+ : VolumeBase(Type::kEmulated) {
setId(StringPrintf("emulated:%u,%u;%u", major(device), minor(device), userId));
mRawPath = rawPath;
mLabel = fsUuid;
@@ -67,23 +67,23 @@
label = "emulated";
}
- mFuseDefault = StringPrintf("/mnt/runtime/default/%s", label.c_str());
- mFuseRead = StringPrintf("/mnt/runtime/read/%s", label.c_str());
- mFuseWrite = StringPrintf("/mnt/runtime/write/%s", label.c_str());
- mFuseFull = StringPrintf("/mnt/runtime/full/%s", label.c_str());
+ mSdcardFsDefault = StringPrintf("/mnt/runtime/default/%s", label.c_str());
+ mSdcardFsRead = StringPrintf("/mnt/runtime/read/%s", label.c_str());
+ mSdcardFsWrite = StringPrintf("/mnt/runtime/write/%s", label.c_str());
+ mSdcardFsFull = StringPrintf("/mnt/runtime/full/%s", label.c_str());
setInternalPath(mRawPath);
setPath(StringPrintf("/storage/%s", label.c_str()));
- if (fs_prepare_dir(mFuseDefault.c_str(), 0700, AID_ROOT, AID_ROOT) ||
- fs_prepare_dir(mFuseRead.c_str(), 0700, AID_ROOT, AID_ROOT) ||
- fs_prepare_dir(mFuseWrite.c_str(), 0700, AID_ROOT, AID_ROOT) ||
- fs_prepare_dir(mFuseFull.c_str(), 0700, AID_ROOT, AID_ROOT)) {
+ if (fs_prepare_dir(mSdcardFsDefault.c_str(), 0700, AID_ROOT, AID_ROOT) ||
+ fs_prepare_dir(mSdcardFsRead.c_str(), 0700, AID_ROOT, AID_ROOT) ||
+ fs_prepare_dir(mSdcardFsWrite.c_str(), 0700, AID_ROOT, AID_ROOT) ||
+ fs_prepare_dir(mSdcardFsFull.c_str(), 0700, AID_ROOT, AID_ROOT)) {
PLOG(ERROR) << getId() << " failed to create mount points";
return -errno;
}
- dev_t before = GetDevice(mFuseFull);
+ dev_t before = GetDevice(mSdcardFsFull);
bool isFuse = base::GetBoolProperty(kPropFuseSnapshot, false);
@@ -116,9 +116,10 @@
}
LOG(INFO) << "Executing sdcardfs";
- if (!(mFusePid = fork())) {
+ int sdcardFsPid;
+ if (!(sdcardFsPid = fork())) {
// clang-format off
- if (execl(kFusePath, kFusePath,
+ if (execl(kSdcardFsPath, kSdcardFsPath,
"-u", "1023", // AID_MEDIA_RW
"-g", "1023", // AID_MEDIA_RW
"-m",
@@ -133,29 +134,28 @@
PLOG(ERROR) << "Failed to exec";
}
- LOG(ERROR) << "FUSE exiting";
+ LOG(ERROR) << "sdcardfs exiting";
_exit(1);
}
- if (mFusePid == -1) {
+ if (sdcardFsPid == -1) {
PLOG(ERROR) << getId() << " failed to fork";
return -errno;
}
nsecs_t start = systemTime(SYSTEM_TIME_BOOTTIME);
- while (before == GetDevice(mFuseFull)) {
- LOG(DEBUG) << "Waiting for FUSE to spin up...";
+ while (before == GetDevice(mSdcardFsFull)) {
+ LOG(DEBUG) << "Waiting for sdcardfs to spin up...";
usleep(50000); // 50ms
nsecs_t now = systemTime(SYSTEM_TIME_BOOTTIME);
if (nanoseconds_to_milliseconds(now - start) > 5000) {
- LOG(WARNING) << "Timed out while waiting for FUSE to spin up";
+ LOG(WARNING) << "Timed out while waiting for sdcardfs to spin up";
return -ETIMEDOUT;
}
}
- /* sdcardfs will have exited already. FUSE will still be running */
- TEMP_FAILURE_RETRY(waitpid(mFusePid, nullptr, 0));
- mFusePid = 0;
+ /* sdcardfs will have exited already. The filesystem will still be running */
+ TEMP_FAILURE_RETRY(waitpid(sdcardFsPid, nullptr, 0));
return OK;
}
@@ -193,20 +193,20 @@
return OK;
}
- ForceUnmount(mFuseDefault);
- ForceUnmount(mFuseRead);
- ForceUnmount(mFuseWrite);
- ForceUnmount(mFuseFull);
+ ForceUnmount(mSdcardFsDefault);
+ ForceUnmount(mSdcardFsRead);
+ ForceUnmount(mSdcardFsWrite);
+ ForceUnmount(mSdcardFsFull);
- rmdir(mFuseDefault.c_str());
- rmdir(mFuseRead.c_str());
- rmdir(mFuseWrite.c_str());
- rmdir(mFuseFull.c_str());
+ rmdir(mSdcardFsDefault.c_str());
+ rmdir(mSdcardFsRead.c_str());
+ rmdir(mSdcardFsWrite.c_str());
+ rmdir(mSdcardFsFull.c_str());
- mFuseDefault.clear();
- mFuseRead.clear();
- mFuseWrite.clear();
- mFuseFull.clear();
+ mSdcardFsDefault.clear();
+ mSdcardFsRead.clear();
+ mSdcardFsWrite.clear();
+ mSdcardFsFull.clear();
return OK;
}
diff --git a/model/EmulatedVolume.h b/model/EmulatedVolume.h
index 8d4c490..6692b23 100644
--- a/model/EmulatedVolume.h
+++ b/model/EmulatedVolume.h
@@ -27,7 +27,7 @@
/*
* Shared storage emulated on top of private storage.
*
- * Knows how to spawn a FUSE daemon to synthesize permissions. ObbVolume
+ * Knows how to spawn a sdcardfs daemon to synthesize permissions. ObbVolume
* can be stacked above it.
*
* This volume is always multi-user aware, but is only binds itself to
@@ -49,13 +49,10 @@
std::string mRawPath;
std::string mLabel;
- std::string mFuseDefault;
- std::string mFuseRead;
- std::string mFuseWrite;
- std::string mFuseFull;
-
- /* PID of FUSE wrapper */
- pid_t mFusePid;
+ std::string mSdcardFsDefault;
+ std::string mSdcardFsRead;
+ std::string mSdcardFsWrite;
+ std::string mSdcardFsFull;
DISALLOW_COPY_AND_ASSIGN(EmulatedVolume);
};
diff --git a/model/PublicVolume.cpp b/model/PublicVolume.cpp
index d1b63a3..007fd60 100644
--- a/model/PublicVolume.cpp
+++ b/model/PublicVolume.cpp
@@ -43,11 +43,11 @@
namespace android {
namespace vold {
-static const char* kFusePath = "/system/bin/sdcard";
+static const char* kSdcardFsPath = "/system/bin/sdcard";
static const char* kAsecPath = "/mnt/secure/asec";
-PublicVolume::PublicVolume(dev_t device) : VolumeBase(Type::kPublic), mDevice(device), mFusePid(0) {
+PublicVolume::PublicVolume(dev_t device) : VolumeBase(Type::kPublic), mDevice(device) {
setId(StringPrintf("public:%u,%u", major(device), minor(device)));
mDevPath = StringPrintf("/dev/block/vold/%s", getId().c_str());
}
@@ -120,10 +120,10 @@
mRawPath = StringPrintf("/mnt/media_rw/%s", stableName.c_str());
- mFuseDefault = StringPrintf("/mnt/runtime/default/%s", stableName.c_str());
- mFuseRead = StringPrintf("/mnt/runtime/read/%s", stableName.c_str());
- mFuseWrite = StringPrintf("/mnt/runtime/write/%s", stableName.c_str());
- mFuseFull = StringPrintf("/mnt/runtime/full/%s", stableName.c_str());
+ mSdcardFsDefault = StringPrintf("/mnt/runtime/default/%s", stableName.c_str());
+ mSdcardFsRead = StringPrintf("/mnt/runtime/read/%s", stableName.c_str());
+ mSdcardFsWrite = StringPrintf("/mnt/runtime/write/%s", stableName.c_str());
+ mSdcardFsFull = StringPrintf("/mnt/runtime/full/%s", stableName.c_str());
setInternalPath(mRawPath);
if (getMountFlags() & MountFlags::kVisible) {
@@ -155,19 +155,19 @@
}
if (!(getMountFlags() & MountFlags::kVisible)) {
- // Not visible to apps, so no need to spin up FUSE
+ // Not visible to apps, so no need to spin up sdcardfs or FUSE
return OK;
}
- if (fs_prepare_dir(mFuseDefault.c_str(), 0700, AID_ROOT, AID_ROOT) ||
- fs_prepare_dir(mFuseRead.c_str(), 0700, AID_ROOT, AID_ROOT) ||
- fs_prepare_dir(mFuseWrite.c_str(), 0700, AID_ROOT, AID_ROOT) ||
- fs_prepare_dir(mFuseFull.c_str(), 0700, AID_ROOT, AID_ROOT)) {
- PLOG(ERROR) << getId() << " failed to create FUSE mount points";
+ if (fs_prepare_dir(mSdcardFsDefault.c_str(), 0700, AID_ROOT, AID_ROOT) ||
+ fs_prepare_dir(mSdcardFsRead.c_str(), 0700, AID_ROOT, AID_ROOT) ||
+ fs_prepare_dir(mSdcardFsWrite.c_str(), 0700, AID_ROOT, AID_ROOT) ||
+ fs_prepare_dir(mSdcardFsFull.c_str(), 0700, AID_ROOT, AID_ROOT)) {
+ PLOG(ERROR) << getId() << " failed to create sdcardfs mount points";
return -errno;
}
- dev_t before = GetDevice(mFuseFull);
+ dev_t before = GetDevice(mSdcardFsFull);
bool isFuse = base::GetBoolProperty(kPropFuseSnapshot, false);
if (isFuse) {
@@ -193,10 +193,11 @@
return OK;
}
- if (!(mFusePid = fork())) {
+ int sdcardFsPid;
+ if (!(sdcardFsPid = fork())) {
if (getMountFlags() & MountFlags::kPrimary) {
// clang-format off
- if (execl(kFusePath, kFusePath,
+ if (execl(kSdcardFsPath, kSdcardFsPath,
"-u", "1023", // AID_MEDIA_RW
"-g", "1023", // AID_MEDIA_RW
"-U", std::to_string(getMountUserId()).c_str(),
@@ -209,7 +210,7 @@
}
} else {
// clang-format off
- if (execl(kFusePath, kFusePath,
+ if (execl(kSdcardFsPath, kSdcardFsPath,
"-u", "1023", // AID_MEDIA_RW
"-g", "1023", // AID_MEDIA_RW
"-U", std::to_string(getMountUserId()).c_str(),
@@ -221,29 +222,28 @@
}
}
- LOG(ERROR) << "FUSE exiting";
+ LOG(ERROR) << "sdcardfs exiting";
_exit(1);
}
- if (mFusePid == -1) {
+ if (sdcardFsPid == -1) {
PLOG(ERROR) << getId() << " failed to fork";
return -errno;
}
nsecs_t start = systemTime(SYSTEM_TIME_BOOTTIME);
- while (before == GetDevice(mFuseFull)) {
- LOG(DEBUG) << "Waiting for FUSE to spin up...";
+ while (before == GetDevice(mSdcardFsFull)) {
+ LOG(DEBUG) << "Waiting for sdcardfs to spin up...";
usleep(50000); // 50ms
nsecs_t now = systemTime(SYSTEM_TIME_BOOTTIME);
if (nanoseconds_to_milliseconds(now - start) > 5000) {
- LOG(WARNING) << "Timed out while waiting for FUSE to spin up";
+ LOG(WARNING) << "Timed out while waiting for sdcardfs to spin up";
return -ETIMEDOUT;
}
}
- /* sdcardfs will have exited already. FUSE will still be running */
- TEMP_FAILURE_RETRY(waitpid(mFusePid, nullptr, 0));
- mFusePid = 0;
+ /* sdcardfs will have exited already. The filesystem will still be running */
+ TEMP_FAILURE_RETRY(waitpid(sdcardFsPid, nullptr, 0));
return OK;
}
@@ -283,22 +283,22 @@
ForceUnmount(kAsecPath);
- ForceUnmount(mFuseDefault);
- ForceUnmount(mFuseRead);
- ForceUnmount(mFuseWrite);
- ForceUnmount(mFuseFull);
+ ForceUnmount(mSdcardFsDefault);
+ ForceUnmount(mSdcardFsRead);
+ ForceUnmount(mSdcardFsWrite);
+ ForceUnmount(mSdcardFsFull);
ForceUnmount(mRawPath);
- rmdir(mFuseDefault.c_str());
- rmdir(mFuseRead.c_str());
- rmdir(mFuseWrite.c_str());
- rmdir(mFuseFull.c_str());
+ rmdir(mSdcardFsDefault.c_str());
+ rmdir(mSdcardFsRead.c_str());
+ rmdir(mSdcardFsWrite.c_str());
+ rmdir(mSdcardFsFull.c_str());
rmdir(mRawPath.c_str());
- mFuseDefault.clear();
- mFuseRead.clear();
- mFuseWrite.clear();
- mFuseFull.clear();
+ mSdcardFsDefault.clear();
+ mSdcardFsRead.clear();
+ mSdcardFsWrite.clear();
+ mSdcardFsFull.clear();
mRawPath.clear();
return OK;
diff --git a/model/PublicVolume.h b/model/PublicVolume.h
index 2feccca..a9bc1ab 100644
--- a/model/PublicVolume.h
+++ b/model/PublicVolume.h
@@ -27,7 +27,7 @@
/*
* Shared storage provided by public (vfat) partition.
*
- * Knows how to mount itself and then spawn a FUSE daemon to synthesize
+ * Knows how to mount itself and then spawn a sdcardfs daemon to synthesize
* permissions. AsecVolume and ObbVolume can be stacked above it.
*
* This volume is not inherently multi-user aware, so it has two possible
@@ -60,13 +60,10 @@
/* Mount point of raw partition */
std::string mRawPath;
- std::string mFuseDefault;
- std::string mFuseRead;
- std::string mFuseWrite;
- std::string mFuseFull;
-
- /* PID of FUSE wrapper */
- pid_t mFusePid;
+ std::string mSdcardFsDefault;
+ std::string mSdcardFsRead;
+ std::string mSdcardFsWrite;
+ std::string mSdcardFsFull;
/* Filesystem type */
std::string mFsType;