Add UnownedCacheFileDescriptor
Since we switched to raw pointers in a subset of fs verfication
functions, EncodeFEC no longer have a shared ptr, and can no longer use
CacheFileDescriptor. Add a variant of CacheFileDescriptor that works
with raw pointer.
Test: th
Bug: 216391325
Change-Id: Id71880a4f8f97e4549dcc96d53e9af00ae45168c
diff --git a/payload_consumer/verity_writer_android.cc b/payload_consumer/verity_writer_android.cc
index b233b58..b669b4d 100644
--- a/payload_consumer/verity_writer_android.cc
+++ b/payload_consumer/verity_writer_android.cc
@@ -161,6 +161,11 @@
std::unique_ptr<void, decltype(&free_rs_char)> rs_char(
init_rs_char(FEC_PARAMS(fec_roots)), &free_rs_char);
TEST_AND_RETURN_FALSE(rs_char != nullptr);
+ // Cache at most 1MB of fec data, in VABC, we need to re-open fd if we
+ // perform a read() operation after write(). So reduce the number of writes
+ // can save unnecessary re-opens.
+ UnownedCachedFileDescriptor cache_fd(write_fd, 1 * (1 << 20));
+ write_fd = &cache_fd;
for (size_t i = 0; i < rounds; i++) {
// Encodes |block_size| number of rs blocks each round so that we can read