Merge "Populate the dm table of the early userdata device." am: 3937b479bd
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/2336136
Change-Id: Iabe97790ca7753d4de9c8c612e900b4e5b64238f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/MetadataCrypt.cpp b/MetadataCrypt.cpp
index 4152e25..df24901 100644
--- a/MetadataCrypt.cpp
+++ b/MetadataCrypt.cpp
@@ -89,9 +89,18 @@
LOG(INFO) << "Not pre-creating userdata encryption device; device already exists";
return;
}
+
+ // On newer Linux kernels (5.15+), there is no uevent until DM_TABLE_LOAD,
+ // so we make sure the device is fully ready.
if (!dm.CreateEmptyDevice(kDmNameUserdata)) {
LOG(ERROR) << "Failed to pre-create userdata metadata encryption device";
}
+
+ DmTable table;
+ table.Emplace<DmTargetError>(0, 1);
+ if (!dm.LoadTable(kDmNameUserdata, table)) {
+ LOG(ERROR) << "Failed to pre-create userdata metadata encryption device";
+ }
}
static bool mount_via_fs_mgr(const char* mount_point, const char* blk_device) {