Read Merkle tree once per file
EagerChunkReader is added to read the wrapper Merkle tree reader. Also
add a function to calculate the tree size, in order to know how much
bytes to read.
Separately, add a check in fd_server to prevent crash when the read size
is 0.
Bug: 182827266
Test: atest AuthFsHostTest authfs_device_test_src_lib
Change-Id: Ibff8c9ac091f1449aec8f4a52cd148e6f41d7b33
diff --git a/authfs/src/fusefs.rs b/authfs/src/fusefs.rs
index cbd24a9..03f832d 100644
--- a/authfs/src/fusefs.rs
+++ b/authfs/src/fusefs.rs
@@ -37,8 +37,8 @@
use crate::common::{divide_roundup, ChunkedSizeIter, CHUNK_SIZE};
use crate::file::{
- validate_basename, Attr, InMemoryDir, RandomWrite, ReadByChunk, RemoteDirEditor,
- RemoteFileEditor, RemoteFileReader, RemoteMerkleTreeReader,
+ validate_basename, Attr, EagerChunkReader, InMemoryDir, RandomWrite, ReadByChunk,
+ RemoteDirEditor, RemoteFileEditor, RemoteFileReader,
};
use crate::fsstat::RemoteFsStatsReader;
use crate::fsverity::{VerifiedFileEditor, VerifiedFileReader};
@@ -59,7 +59,7 @@
/// A file type that is verified against fs-verity signature (thus read-only). The file is
/// served from a remote server.
VerifiedReadonly {
- reader: VerifiedFileReader<RemoteFileReader, RemoteMerkleTreeReader>,
+ reader: VerifiedFileReader<RemoteFileReader, EagerChunkReader>,
file_size: u64,
},
/// A file type that is a read-only passthrough from a file on a remote server.