Use logical path to handle different dm target per boot

When using multiple partitions, f2fs stores all the device paths, but we cannot
guarantee the dm targets are all the same across boot cycles.

Bug: 287247093
Change-Id: Ie4308a27548d4e814924afb656478cfa55fcf8b6
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
diff --git a/MetadataCrypt.cpp b/MetadataCrypt.cpp
index 395cc02..0e2cad1 100644
--- a/MetadataCrypt.cpp
+++ b/MetadataCrypt.cpp
@@ -200,6 +200,13 @@
         LOG(ERROR) << "Could not create default-key device " << dm_name;
         return false;
     }
+
+    // If there are multiple partitions used for a single mount, F2FS stores
+    // their partition paths in superblock. If the paths are dm targets, we
+    // cannot guarantee them across device boots. Let's use the logical paths.
+    if (dm_name == kDmNameUserdata || dm_name == kDmNameUserdataZoned) {
+        *crypto_blkdev = "/dev/block/mapper/" + dm_name;
+    }
     return true;
 }