mk_payload: create zero-filler as sparse file am: f0f7682fc2
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Virtualization/+/1739253
Change-Id: Ic4de17562b1dfaa0cb05fd2d829d4c2115a687bc
diff --git a/microdroid/payload/mk_payload.cc b/microdroid/payload/mk_payload.cc
index c3db122..c31dcff 100644
--- a/microdroid/payload/mk_payload.cc
+++ b/microdroid/payload/mk_payload.cc
@@ -278,13 +278,12 @@
if (disk_size <= *file_size) {
return false;
}
-
unique_fd fd(TEMP_FAILURE_RETRY(open(filler_path.c_str(), O_CREAT | O_WRONLY | O_TRUNC, 0600)));
if (fd.get() == -1) {
return ErrnoError() << "open(" << filler_path << ") failed.";
}
- if (!android::base::WriteStringToFd(std::string(disk_size - *file_size, '\0'), fd)) {
- return ErrnoError() << "write(" << filler_path << ") failed.";
+ if (ftruncate(fd.get(), disk_size - *file_size) == -1) {
+ return ErrnoError() << "ftruncate(" << filler_path << ") failed.";
}
return true;
}
@@ -297,8 +296,6 @@
return false;
}
-// fill zeros to align |file_path|'s size to BLOCK_SIZE(4096) boundary.
-// return true when the filler is generated.
Result<void> MakePayload(const Config& config, const std::string& metadata_file,
const std::string& output_file) {
std::vector<MultipleImagePartition> partitions;