Add timeout to OpenCowWriter
Without a timeout, update_engine might observe race conditions where a
device is mapped but it doesn't appear on filesystem yet.
Bug: 168554689
Test: treehugger
Change-Id: I91f7cd82f5a10a8d60bdb157a57bfcbbc5c9f964
diff --git a/aosp/dynamic_partition_control_android.cc b/aosp/dynamic_partition_control_android.cc
index d461807..d296c53 100644
--- a/aosp/dynamic_partition_control_android.cc
+++ b/aosp/dynamic_partition_control_android.cc
@@ -1250,11 +1250,11 @@
.metadata_slot = target_slot_,
.partition_name = partition_name + suffix,
.force_writable = true,
- };
+ .timeout_ms = kMapSnapshotTimeout};
// TODO(zhangkelvin) Open an APPEND mode CowWriter once there's an API to do
// it.
return snapshot_->OpenSnapshotWriter(params, std::move(source_path));
-}
+} // namespace chromeos_update_engine
std::optional<base::FilePath> DynamicPartitionControlAndroid::GetSuperDevice() {
std::string device_dir_str;
@@ -1268,7 +1268,7 @@
}
bool DynamicPartitionControlAndroid::MapAllPartitions() {
- return snapshot_->MapAllSnapshots();
+ return snapshot_->MapAllSnapshots(kMapSnapshotTimeout);
}
} // namespace chromeos_update_engine