Don't abort fuse connections for virtiofs.

Android should only abort fuse connections for fuse fs. It shouldn't
touch fuse connections for virtiofs.

Bug: 162284193
Test: manual - Restart zygote, no 'Transport endpoint is not connected' error.
Change-Id: Ie3536734531404e98ad1b6594ab3c52e919b22b7
This commit is contained in:
Tao Wu 2020-08-06 19:31:21 -07:00
parent 6845e06ab9
commit 3d98962269

View file

@ -1442,6 +1442,17 @@ status_t AbortFuseConnections() {
namespace fs = std::filesystem; namespace fs = std::filesystem;
for (const auto& itEntry : fs::directory_iterator("/sys/fs/fuse/connections")) { for (const auto& itEntry : fs::directory_iterator("/sys/fs/fuse/connections")) {
std::string fsPath = itEntry.path().string() + "/filesystem";
std::string fs;
// Virtiofs is on top of fuse and there isn't any user space daemon.
// Android user space doesn't manage it.
if (android::base::ReadFileToString(fsPath, &fs, false) &&
android::base::Trim(fs) == "virtiofs") {
LOG(INFO) << "Ignore virtiofs connection entry " << itEntry.path().string();
continue;
}
std::string abortPath = itEntry.path().string() + "/abort"; std::string abortPath = itEntry.path().string() + "/abort";
LOG(DEBUG) << "Aborting fuse connection entry " << abortPath; LOG(DEBUG) << "Aborting fuse connection entry " << abortPath;
bool ret = writeStringToFile("1", abortPath); bool ret = writeStringToFile("1", abortPath);