From 40c45ba78707282017f716abd045062f7be4fa00 Mon Sep 17 00:00:00 2001 From: Alex Buynytskyy Date: Thu, 18 Nov 2021 15:16:27 -0800 Subject: Migrate mount/umount operations to a dedicated mMountsLock. mount/umount do not change underlying data, only mount points Bug: 201090222 Test: presubmit Change-Id: I9b08cd3c80c3d47e339366ae6f33d8f915b2cac1 --- cmds/installd/InstalldNativeService.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'cmds/installd/InstalldNativeService.cpp') diff --git a/cmds/installd/InstalldNativeService.cpp b/cmds/installd/InstalldNativeService.cpp index f35abda7e3..9ee1cc134c 100644 --- a/cmds/installd/InstalldNativeService.cpp +++ b/cmds/installd/InstalldNativeService.cpp @@ -3011,8 +3011,9 @@ binder::Status InstalldNativeService::tryMountDataMirror( const char* uuid_ = uuid->c_str(); + std::lock_guard lock(mMountsLock); + std::string mirrorVolCePath(StringPrintf("%s/%s", kDataMirrorCePath, uuid_)); - std::lock_guard lock(mLock); if (fs_prepare_dir(mirrorVolCePath.c_str(), 0711, AID_SYSTEM, AID_SYSTEM) != 0) { return error("Failed to create CE mirror"); } @@ -3081,8 +3082,9 @@ binder::Status InstalldNativeService::onPrivateVolumeRemoved( std::string mirrorCeVolPath(StringPrintf("%s/%s", kDataMirrorCePath, uuid_)); std::string mirrorDeVolPath(StringPrintf("%s/%s", kDataMirrorDePath, uuid_)); + std::lock_guard lock(mMountsLock); + // Unmount CE storage - std::lock_guard lock(mLock); if (TEMP_FAILURE_RETRY(umount(mirrorCeVolPath.c_str())) != 0) { if (errno != ENOENT) { res = error(StringPrintf("Failed to umount %s %s", mirrorCeVolPath.c_str(), -- cgit v1.2.3-59-g8ed1b