authfs: Remove Arc<Mutex<>> now that Strong is Sync
Bug: 191763370
Test: atest AuthFsHostTest
Change-Id: If090b1f29583691cec7135f711724f308a8abd02
diff --git a/authfs/src/file/remote_file.rs b/authfs/src/file/remote_file.rs
index 0b6c007..037b8ec 100644
--- a/authfs/src/file/remote_file.rs
+++ b/authfs/src/file/remote_file.rs
@@ -17,13 +17,12 @@
use std::cmp::min;
use std::convert::TryFrom;
use std::io;
-use std::sync::{Arc, Mutex};
use super::{ChunkBuffer, RandomWrite, ReadByChunk, VirtFdService};
use crate::common::CHUNK_SIZE;
fn remote_read_chunk(
- service: &Arc<Mutex<VirtFdService>>,
+ service: &VirtFdService,
remote_fd: i32,
chunk_index: u64,
buf: &mut ChunkBuffer,
@@ -32,8 +31,6 @@
.map_err(|_| io::Error::from_raw_os_error(libc::EOVERFLOW))?;
let chunk = service
- .lock()
- .unwrap()
.readFile(remote_fd, offset, buf.len() as i32)
.map_err(|e| io::Error::new(io::ErrorKind::Other, e.get_description()))?;
let size = min(buf.len(), chunk.len());
@@ -43,12 +40,12 @@
pub struct RemoteFileReader {
// This needs to have Sync trait to be used in fuse::worker::start_message_loop.
- service: Arc<Mutex<VirtFdService>>,
+ service: VirtFdService,
file_fd: i32,
}
impl RemoteFileReader {
- pub fn new(service: Arc<Mutex<VirtFdService>>, file_fd: i32) -> Self {
+ pub fn new(service: VirtFdService, file_fd: i32) -> Self {
RemoteFileReader { service, file_fd }
}
}
@@ -61,13 +58,12 @@
pub struct RemoteMerkleTreeReader {
// This needs to be a Sync to be used in fuse::worker::start_message_loop.
- // TODO(victorhsieh): change to Strong<> once binder supports it.
- service: Arc<Mutex<VirtFdService>>,
+ service: VirtFdService,
file_fd: i32,
}
impl RemoteMerkleTreeReader {
- pub fn new(service: Arc<Mutex<VirtFdService>>, file_fd: i32) -> Self {
+ pub fn new(service: VirtFdService, file_fd: i32) -> Self {
RemoteMerkleTreeReader { service, file_fd }
}
}
@@ -79,8 +75,6 @@
let chunk = self
.service
- .lock()
- .unwrap()
.readFsverityMerkleTree(self.file_fd, offset, buf.len() as i32)
.map_err(|e| io::Error::new(io::ErrorKind::Other, e.get_description()))?;
let size = min(buf.len(), chunk.len());
@@ -91,12 +85,12 @@
pub struct RemoteFileEditor {
// This needs to have Sync trait to be used in fuse::worker::start_message_loop.
- service: Arc<Mutex<VirtFdService>>,
+ service: VirtFdService,
file_fd: i32,
}
impl RemoteFileEditor {
- pub fn new(service: Arc<Mutex<VirtFdService>>, file_fd: i32) -> Self {
+ pub fn new(service: VirtFdService, file_fd: i32) -> Self {
RemoteFileEditor { service, file_fd }
}
}
@@ -107,8 +101,6 @@
i64::try_from(offset).map_err(|_| io::Error::from_raw_os_error(libc::EOVERFLOW))?;
let size = self
.service
- .lock()
- .unwrap()
.writeFile(self.file_fd, &buf, offset)
.map_err(|e| io::Error::new(io::ErrorKind::Other, e.get_description()))?;
Ok(size as usize) // within range because size is supposed to <= buf.len(), which is a usize
@@ -118,8 +110,6 @@
let size =
i64::try_from(size).map_err(|_| io::Error::from_raw_os_error(libc::EOVERFLOW))?;
self.service
- .lock()
- .unwrap()
.resize(self.file_fd, size)
.map_err(|e| io::Error::new(io::ErrorKind::Other, e.get_description()))?;
Ok(())
diff --git a/authfs/src/main.rs b/authfs/src/main.rs
index d03e3ca..9d36c3f 100644
--- a/authfs/src/main.rs
+++ b/authfs/src/main.rs
@@ -32,7 +32,6 @@
use std::fs::File;
use std::io::Read;
use std::path::{Path, PathBuf};
-use std::sync::{Arc, Mutex};
use structopt::StructOpt;
mod auth;
@@ -224,15 +223,14 @@
) -> Result<FileConfig> {
let signature = service.readFsveritySignature(remote_id).context("Failed to read signature")?;
- let service = Arc::new(Mutex::new(service));
let authenticator = FakeAuthenticator::always_succeed();
Ok(FileConfig::RemoteVerifiedReadonlyFile {
reader: VerifiedFileReader::new(
&authenticator,
- RemoteFileReader::new(Arc::clone(&service), remote_id),
+ RemoteFileReader::new(service.clone(), remote_id),
file_size,
signature,
- RemoteMerkleTreeReader::new(Arc::clone(&service), remote_id),
+ RemoteMerkleTreeReader::new(service.clone(), remote_id),
)?,
file_size,
})
@@ -243,7 +241,7 @@
remote_id: i32,
file_size: u64,
) -> Result<FileConfig> {
- let reader = RemoteFileReader::new(Arc::new(Mutex::new(service)), remote_id);
+ let reader = RemoteFileReader::new(service, remote_id);
Ok(FileConfig::RemoteUnverifiedReadonlyFile { reader, file_size })
}
@@ -274,7 +272,7 @@
service: file::VirtFdService,
remote_id: i32,
) -> Result<FileConfig> {
- let remote_file = RemoteFileEditor::new(Arc::new(Mutex::new(service)), remote_id);
+ let remote_file = RemoteFileEditor::new(service, remote_id);
Ok(FileConfig::RemoteVerifiedNewFile { editor: VerifiedFileEditor::new(remote_file) })
}