Merge changes I350c8c88,I1e462fad am: 6c31ab7a13

Original change: https://android-review.googlesource.com/c/platform/system/core/+/1911212

Change-Id: I1d306a83f479a32c6b9fa781abf2f7be6a6ec26a
diff --git a/fs_mgr/libsnapshot/snapshot.cpp b/fs_mgr/libsnapshot/snapshot.cpp
index f4584d2..e6e17bd 100644
--- a/fs_mgr/libsnapshot/snapshot.cpp
+++ b/fs_mgr/libsnapshot/snapshot.cpp
@@ -668,9 +668,15 @@
 bool SnapshotManager::UnmapSnapshot(LockedFile* lock, const std::string& name) {
     CHECK(lock);
 
-    if (!DeleteDeviceIfExists(name)) {
-        LOG(ERROR) << "Could not delete snapshot device: " << name;
-        return false;
+    if (UpdateUsesUserSnapshots(lock)) {
+        if (!UnmapUserspaceSnapshotDevice(lock, name)) {
+            return false;
+        }
+    } else {
+        if (!DeleteDeviceIfExists(name)) {
+            LOG(ERROR) << "Could not delete snapshot device: " << name;
+            return false;
+        }
     }
     return true;
 }
@@ -2429,10 +2435,8 @@
                                                  const std::string& target_partition_name) {
     CHECK(lock);
 
-    if (!UpdateUsesUserSnapshots(lock)) {
-        if (!UnmapSnapshot(lock, target_partition_name)) {
-            return false;
-        }
+    if (!UnmapSnapshot(lock, target_partition_name)) {
+        return false;
     }
 
     if (!UnmapCowDevices(lock, target_partition_name)) {
@@ -2530,16 +2534,10 @@
     CHECK(lock);
     if (!EnsureImageManager()) return false;
 
-    if (UpdateUsesCompression(lock)) {
-        if (UpdateUsesUserSnapshots(lock)) {
-            if (!UnmapUserspaceSnapshotDevice(lock, name)) {
-                return false;
-            }
-        } else {
-            auto dm_user_name = GetDmUserCowName(name, GetSnapshotDriver(lock));
-            if (!UnmapDmUserDevice(dm_user_name)) {
-                return false;
-            }
+    if (UpdateUsesCompression(lock) && !UpdateUsesUserSnapshots(lock)) {
+        auto dm_user_name = GetDmUserCowName(name, GetSnapshotDriver(lock));
+        if (!UnmapDmUserDevice(dm_user_name)) {
+            return false;
         }
     }
 
diff --git a/fs_mgr/libsnapshot/snapshot_test.cpp b/fs_mgr/libsnapshot/snapshot_test.cpp
index c3b2f78..7001b9a 100644
--- a/fs_mgr/libsnapshot/snapshot_test.cpp
+++ b/fs_mgr/libsnapshot/snapshot_test.cpp
@@ -897,9 +897,9 @@
         ASSERT_NE(nullptr, metadata);
         ASSERT_TRUE(UpdatePartitionTable(*opener_, "super", *metadata.get(), 0));
 
-        // Map source partitions. Additionally, map sys_b to simulate system_other after flashing.
+        // Map source partitions.
         std::string path;
-        for (const auto& name : {"sys_a", "vnd_a", "prd_a", "sys_b"}) {
+        for (const auto& name : {"sys_a", "vnd_a", "prd_a"}) {
             ASSERT_TRUE(CreateLogicalPartition(
                     CreateLogicalPartitionParams{
                             .block_device = fake_super,