mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
misc: cleanup &Arc<dyn T> -> &dyn T
Consuming `&Arc<T>` as argument is almost always an antipattern as it hides whether the callee is going to take over (shared) ownership (by .clone()) or not. Instead, it is better to consume `&dyn T` or `Arc<dyn T>` to be more explicit. This commit cleans up the code. The change is very mechanic and was very easy to implement across the code base. Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de> On-behalf-of: SAP philipp.schuster@sap.com
This commit is contained in:
committed by
Rob Bradford
parent
e295719967
commit
7536a95424
@@ -591,7 +591,7 @@ impl VirtioDevice for Balloon {
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
mut queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.common.activate(&queues, &interrupt_cb)?;
|
||||
self.common.activate(&queues, interrupt_cb.clone())?;
|
||||
let (kill_evt, pause_evt) = self.common.dup_eventfds();
|
||||
|
||||
let mut virtqueues = Vec::new();
|
||||
|
||||
@@ -171,7 +171,7 @@ impl BlockEpollHandler {
|
||||
let mut batch_inflight_requests = Vec::new();
|
||||
|
||||
while let Some(mut desc_chain) = queue.pop_descriptor_chain(self.mem.memory()) {
|
||||
let mut request = Request::parse(&mut desc_chain, self.access_platform.as_ref())
|
||||
let mut request = Request::parse(&mut desc_chain, self.access_platform.as_deref())
|
||||
.map_err(Error::RequestParsing)?;
|
||||
|
||||
// For virtio spec compliance
|
||||
@@ -905,7 +905,7 @@ impl VirtioDevice for Block {
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
mut queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.common.activate(&queues, &interrupt_cb)?;
|
||||
self.common.activate(&queues, interrupt_cb.clone())?;
|
||||
|
||||
self.update_writeback();
|
||||
|
||||
|
||||
@@ -217,7 +217,7 @@ impl ConsoleEpollHandler {
|
||||
.write_slice(
|
||||
&source_slice[..],
|
||||
desc.addr()
|
||||
.translate_gva(self.access_platform.as_ref(), desc.len() as usize),
|
||||
.translate_gva(self.access_platform.as_deref(), desc.len() as usize),
|
||||
)
|
||||
.map_err(Error::GuestMemoryWrite)?;
|
||||
|
||||
@@ -253,7 +253,7 @@ impl ConsoleEpollHandler {
|
||||
.memory()
|
||||
.write_volatile_to(
|
||||
desc.addr()
|
||||
.translate_gva(self.access_platform.as_ref(), desc.len() as usize),
|
||||
.translate_gva(self.access_platform.as_deref(), desc.len() as usize),
|
||||
&mut buf,
|
||||
desc.len() as usize,
|
||||
)
|
||||
@@ -707,7 +707,7 @@ impl VirtioDevice for Console {
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
mut queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.common.activate(&queues, &interrupt_cb)?;
|
||||
self.common.activate(&queues, interrupt_cb.clone())?;
|
||||
self.resizer
|
||||
.acked_features
|
||||
.store(self.common.acked_features, Ordering::Relaxed);
|
||||
|
||||
@@ -221,7 +221,7 @@ impl VirtioCommon {
|
||||
pub fn activate(
|
||||
&mut self,
|
||||
queues: &[(usize, Queue, EventFd)],
|
||||
interrupt_cb: &Arc<dyn VirtioInterrupt>,
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
) -> ActivateResult {
|
||||
if queues.len() < self.min_queues.into() {
|
||||
error!(
|
||||
@@ -246,7 +246,7 @@ impl VirtioCommon {
|
||||
|
||||
// Save the interrupt EventFD as we need to return it on reset
|
||||
// but clone it to pass into the thread.
|
||||
self.interrupt_cb = Some(interrupt_cb.clone());
|
||||
self.interrupt_cb = Some(interrupt_cb);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -1079,7 +1079,7 @@ impl VirtioDevice for Iommu {
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
mut queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.common.activate(&queues, &interrupt_cb)?;
|
||||
self.common.activate(&queues, interrupt_cb.clone())?;
|
||||
let (kill_evt, pause_evt) = self.common.dup_eventfds();
|
||||
|
||||
let (_, request_queue, request_queue_evt) = queues.remove(0);
|
||||
|
||||
@@ -912,7 +912,7 @@ impl VirtioDevice for Mem {
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
mut queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.common.activate(&queues, &interrupt_cb)?;
|
||||
self.common.activate(&queues, interrupt_cb.clone())?;
|
||||
let (kill_evt, pause_evt) = self.common.dup_eventfds();
|
||||
|
||||
let (_, queue, queue_evt) = queues.remove(0);
|
||||
|
||||
@@ -100,7 +100,11 @@ impl EpollHelperHandler for NetCtrlEpollHandler {
|
||||
))
|
||||
})?;
|
||||
self.ctrl_q
|
||||
.process(mem.deref(), &mut self.queue, self.access_platform.as_ref())
|
||||
.process(
|
||||
mem.deref(),
|
||||
&mut self.queue,
|
||||
self.access_platform.as_deref(),
|
||||
)
|
||||
.map_err(|e| {
|
||||
EpollHelperError::HandleEvent(anyhow!(
|
||||
"Failed to process control queue: {e:?}"
|
||||
@@ -693,7 +697,7 @@ impl VirtioDevice for Net {
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
mut queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.common.activate(&queues, &interrupt_cb)?;
|
||||
self.common.activate(&queues, interrupt_cb.clone())?;
|
||||
|
||||
let num_queues = queues.len();
|
||||
let event_idx = self.common.feature_acked(VIRTIO_RING_F_EVENT_IDX.into());
|
||||
|
||||
@@ -105,7 +105,7 @@ struct Request {
|
||||
impl Request {
|
||||
fn parse(
|
||||
desc_chain: &mut DescriptorChain<GuestMemoryLoadGuard<GuestMemoryMmap>>,
|
||||
access_platform: Option<&Arc<dyn AccessPlatform>>,
|
||||
access_platform: Option<&dyn AccessPlatform>,
|
||||
) -> result::Result<Request, Error> {
|
||||
let desc = desc_chain.next().ok_or(Error::DescriptorChainTooShort)?;
|
||||
// The descriptor contains the request type which MUST be readable.
|
||||
@@ -165,7 +165,7 @@ impl PmemEpollHandler {
|
||||
fn process_queue(&mut self) -> result::Result<bool, Error> {
|
||||
let mut used_descs = false;
|
||||
while let Some(mut desc_chain) = self.queue.pop_descriptor_chain(self.mem.memory()) {
|
||||
let len = match Request::parse(&mut desc_chain, self.access_platform.as_ref()) {
|
||||
let len = match Request::parse(&mut desc_chain, self.access_platform.as_deref()) {
|
||||
Ok(ref req) if (req.type_ == RequestType::Flush) => {
|
||||
let status_code = match self.disk.sync_all() {
|
||||
Ok(()) => VIRTIO_PMEM_RESP_TYPE_OK,
|
||||
@@ -387,7 +387,7 @@ impl VirtioDevice for Pmem {
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
mut queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.common.activate(&queues, &interrupt_cb)?;
|
||||
self.common.activate(&queues, interrupt_cb.clone())?;
|
||||
let (kill_evt, pause_evt) = self.common.dup_eventfds();
|
||||
if let Some(disk) = self.disk.as_ref() {
|
||||
let disk = disk.try_clone().map_err(|e| {
|
||||
|
||||
@@ -76,7 +76,7 @@ impl RngEpollHandler {
|
||||
.memory()
|
||||
.read_volatile_from(
|
||||
desc.addr()
|
||||
.translate_gva(self.access_platform.as_ref(), desc.len() as usize),
|
||||
.translate_gva(self.access_platform.as_deref(), desc.len() as usize),
|
||||
&mut self.random_file,
|
||||
desc.len() as usize,
|
||||
)
|
||||
@@ -248,7 +248,7 @@ impl VirtioDevice for Rng {
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
mut queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.common.activate(&queues, &interrupt_cb)?;
|
||||
self.common.activate(&queues, interrupt_cb.clone())?;
|
||||
let (kill_evt, pause_evt) = self.common.dup_eventfds();
|
||||
|
||||
if let Some(file) = self.random_file.as_ref() {
|
||||
|
||||
@@ -382,7 +382,7 @@ impl VirtioPciDevice {
|
||||
device: Arc<Mutex<dyn VirtioDevice>>,
|
||||
msix_num: u16,
|
||||
access_platform: Option<Arc<dyn AccessPlatform>>,
|
||||
interrupt_manager: &Arc<dyn InterruptManager<GroupConfig = MsiIrqGroupConfig>>,
|
||||
interrupt_manager: &dyn InterruptManager<GroupConfig = MsiIrqGroupConfig>,
|
||||
pci_device_bdf: u32,
|
||||
activate_evt: EventFd,
|
||||
use_64bit_bar: bool,
|
||||
@@ -815,8 +815,8 @@ impl VirtioPciDevice {
|
||||
!self.device_activated.load(Ordering::SeqCst) && self.is_driver_ready()
|
||||
}
|
||||
|
||||
pub fn dma_handler(&self) -> Option<&Arc<dyn ExternalDmaMapping>> {
|
||||
self.dma_handler.as_ref()
|
||||
pub fn dma_handler(&self) -> Option<&dyn ExternalDmaMapping> {
|
||||
self.dma_handler.as_deref()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -216,7 +216,7 @@ impl Vdpa {
|
||||
fn activate_vdpa(
|
||||
&mut self,
|
||||
mem: &GuestMemoryMmap,
|
||||
virtio_interrupt: &Arc<dyn VirtioInterrupt>,
|
||||
virtio_interrupt: &dyn VirtioInterrupt,
|
||||
queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> Result<()> {
|
||||
assert!(self.vhost.is_some());
|
||||
@@ -245,15 +245,15 @@ impl Vdpa {
|
||||
queue_size,
|
||||
flags: 0u32,
|
||||
desc_table_addr: queue.desc_table().translate_gpa(
|
||||
self.common.access_platform.as_ref(),
|
||||
self.common.access_platform.as_deref(),
|
||||
queue_size as usize * std::mem::size_of::<RawDescriptor>(),
|
||||
),
|
||||
used_ring_addr: queue.used_ring().translate_gpa(
|
||||
self.common.access_platform.as_ref(),
|
||||
self.common.access_platform.as_deref(),
|
||||
4 + queue_size as usize * 8,
|
||||
),
|
||||
avail_ring_addr: queue.avail_ring().translate_gpa(
|
||||
self.common.access_platform.as_ref(),
|
||||
self.common.access_platform.as_deref(),
|
||||
4 + queue_size as usize * 2,
|
||||
),
|
||||
log_addr: None,
|
||||
@@ -421,7 +421,7 @@ impl VirtioDevice for Vdpa {
|
||||
virtio_interrupt: Arc<dyn VirtioInterrupt>,
|
||||
queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.activate_vdpa(&mem.memory(), &virtio_interrupt, queues)
|
||||
self.activate_vdpa(&mem.memory(), virtio_interrupt.as_ref(), queues)
|
||||
.map_err(ActivateError::ActivateVdpa)?;
|
||||
|
||||
// Store the virtio interrupt handler as we need to return it on reset
|
||||
|
||||
@@ -284,7 +284,7 @@ impl VirtioDevice for Blk {
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.common.activate(&queues, &interrupt_cb)?;
|
||||
self.common.activate(&queues, interrupt_cb.clone())?;
|
||||
self.guest_memory = Some(mem.clone());
|
||||
|
||||
let backend_req_handler: Option<FrontendReqHandler<BackendReqHandler>> = None;
|
||||
|
||||
@@ -265,7 +265,7 @@ impl VirtioDevice for Fs {
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.common.activate(&queues, &interrupt_cb)?;
|
||||
self.common.activate(&queues, interrupt_cb.clone())?;
|
||||
self.guest_memory = Some(mem.clone());
|
||||
|
||||
let backend_req_handler: Option<FrontendReqHandler<BackendReqHandler>> = None;
|
||||
|
||||
@@ -228,7 +228,7 @@ impl<S: VhostUserFrontendReqHandler> VhostUserEpollHandler<S> {
|
||||
.iter()
|
||||
.map(|(i, q, e)| (*i, vm_virtio::clone_queue(q), e.try_clone().unwrap()))
|
||||
.collect(),
|
||||
&self.virtio_interrupt,
|
||||
self.virtio_interrupt.as_ref(),
|
||||
self.acked_features,
|
||||
self.acked_protocol_features,
|
||||
&self.backend_req_handler,
|
||||
@@ -332,7 +332,7 @@ impl VhostUserCommon {
|
||||
.iter()
|
||||
.map(|(i, q, e)| (*i, vm_virtio::clone_queue(q), e.try_clone().unwrap()))
|
||||
.collect(),
|
||||
&interrupt_cb,
|
||||
interrupt_cb.as_ref(),
|
||||
acked_features,
|
||||
&backend_req_handler,
|
||||
inflight.as_mut(),
|
||||
|
||||
@@ -295,7 +295,7 @@ impl VirtioDevice for Net {
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
mut queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.common.activate(&queues, &interrupt_cb)?;
|
||||
self.common.activate(&queues, interrupt_cb.clone())?;
|
||||
self.guest_memory = Some(mem.clone());
|
||||
|
||||
let num_queues = queues.len();
|
||||
|
||||
@@ -156,7 +156,7 @@ impl VhostUserHandle {
|
||||
&mut self,
|
||||
mem: &GuestMemoryMmap,
|
||||
queues: Vec<(usize, Queue, EventFd)>,
|
||||
virtio_interrupt: &Arc<dyn VirtioInterrupt>,
|
||||
virtio_interrupt: &dyn VirtioInterrupt,
|
||||
acked_features: u64,
|
||||
backend_req_handler: &Option<FrontendReqHandler<S>>,
|
||||
inflight: Option<&mut Inflight>,
|
||||
@@ -340,7 +340,7 @@ impl VhostUserHandle {
|
||||
&mut self,
|
||||
mem: &GuestMemoryMmap,
|
||||
queues: Vec<(usize, Queue, EventFd)>,
|
||||
virtio_interrupt: &Arc<dyn VirtioInterrupt>,
|
||||
virtio_interrupt: &dyn VirtioInterrupt,
|
||||
acked_features: u64,
|
||||
acked_protocol_features: u64,
|
||||
backend_req_handler: &Option<FrontendReqHandler<S>>,
|
||||
|
||||
@@ -124,7 +124,7 @@ where
|
||||
while let Some(mut desc_chain) = self.queues[0].pop_descriptor_chain(self.mem.memory()) {
|
||||
let used_len = match VsockPacket::from_rx_virtq_head(
|
||||
&mut desc_chain,
|
||||
self.access_platform.as_ref(),
|
||||
self.access_platform.as_deref(),
|
||||
) {
|
||||
Ok(mut pkt) => {
|
||||
if self.backend.write().unwrap().recv_pkt(&mut pkt).is_ok() {
|
||||
@@ -166,7 +166,7 @@ where
|
||||
while let Some(mut desc_chain) = self.queues[1].pop_descriptor_chain(self.mem.memory()) {
|
||||
let pkt = match VsockPacket::from_tx_virtq_head(
|
||||
&mut desc_chain,
|
||||
self.access_platform.as_ref(),
|
||||
self.access_platform.as_deref(),
|
||||
) {
|
||||
Ok(pkt) => pkt,
|
||||
Err(e) => {
|
||||
@@ -430,7 +430,7 @@ where
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.common.activate(&queues, &interrupt_cb)?;
|
||||
self.common.activate(&queues, interrupt_cb.clone())?;
|
||||
let (kill_evt, pause_evt) = self.common.dup_eventfds();
|
||||
|
||||
let mut virtqueues = Vec::new();
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
//! to temporary buffers, before passing it on to the vsock backend.
|
||||
|
||||
use std::ops::Deref;
|
||||
use std::sync::Arc;
|
||||
|
||||
use byteorder::{ByteOrder, LittleEndian};
|
||||
use virtio_queue::DescriptorChain;
|
||||
@@ -111,7 +110,7 @@ impl VsockPacket {
|
||||
///
|
||||
pub fn from_tx_virtq_head<M>(
|
||||
desc_chain: &mut DescriptorChain<M>,
|
||||
access_platform: Option<&Arc<dyn AccessPlatform>>,
|
||||
access_platform: Option<&dyn AccessPlatform>,
|
||||
) -> Result<Self>
|
||||
where
|
||||
M: Clone + Deref,
|
||||
@@ -203,7 +202,7 @@ impl VsockPacket {
|
||||
///
|
||||
pub fn from_rx_virtq_head<M>(
|
||||
desc_chain: &mut DescriptorChain<M>,
|
||||
access_platform: Option<&Arc<dyn AccessPlatform>>,
|
||||
access_platform: Option<&dyn AccessPlatform>,
|
||||
) -> Result<Self>
|
||||
where
|
||||
M: Clone + Deref,
|
||||
|
||||
@@ -330,7 +330,7 @@ impl VirtioDevice for Watchdog {
|
||||
interrupt_cb: Arc<dyn VirtioInterrupt>,
|
||||
mut queues: Vec<(usize, Queue, EventFd)>,
|
||||
) -> ActivateResult {
|
||||
self.common.activate(&queues, &interrupt_cb)?;
|
||||
self.common.activate(&queues, interrupt_cb.clone())?;
|
||||
let (kill_evt, pause_evt) = self.common.dup_eventfds();
|
||||
|
||||
let reset_evt = self.reset_evt.try_clone().map_err(|e| {
|
||||
|
||||
Reference in New Issue
Block a user