pub enum Block {
Virtio(VirtioBlock),
VhostUser(VhostUserBlock),
}Variants§
Virtio(VirtioBlock)
VhostUser(VhostUserBlock)
Implementations§
Source§impl Block
impl Block
pub fn new(config: BlockDeviceConfig) -> Result<Block, BlockError>
pub fn config(&self) -> BlockDeviceConfig
pub fn update_disk_image( &mut self, disk_image_path: String, ) -> Result<(), BlockError>
pub fn update_rate_limiter( &mut self, bytes: BucketUpdate, ops: BucketUpdate, ) -> Result<(), BlockError>
pub fn update_config(&mut self) -> Result<(), BlockError>
pub fn prepare_save(&mut self)
pub fn process_virtio_queues(&mut self) -> Result<(), InvalidAvailIdx>
pub fn id(&self) -> &str
pub fn root_device(&self) -> bool
pub fn read_only(&self) -> bool
pub fn partuuid(&self) -> &Option<String>
pub fn is_vhost_user(&self) -> bool
Trait Implementations§
Source§impl Persist<'_> for Block
impl Persist<'_> for Block
Source§type State = BlockState
type State = BlockState
The type of the object representing the state of the component.
Source§type ConstructorArgs = BlockConstructorArgs
type ConstructorArgs = BlockConstructorArgs
The type of the object holding the constructor arguments.
Source§type Error = BlockError
type Error = BlockError
The type of the error that can occur while constructing the object.
Source§impl VirtioDevice for Block
impl VirtioDevice for Block
Source§fn const_device_type() -> u32
fn const_device_type() -> u32
The virtio device type (as a constant of the struct).
Source§fn device_type(&self) -> u32
fn device_type(&self) -> u32
The virtio device type. Read more
Source§fn avail_features(&self) -> u64
fn avail_features(&self) -> u64
Get the available features offered by device.
Source§fn acked_features(&self) -> u64
fn acked_features(&self) -> u64
Get acknowledged features of the driver.
Source§fn set_acked_features(&mut self, acked_features: u64)
fn set_acked_features(&mut self, acked_features: u64)
Set acknowledged features of the driver.
This function must maintain the following invariant: Read more
Source§fn queues_mut(&mut self) -> &mut [Queue]
fn queues_mut(&mut self) -> &mut [Queue]
Returns a mutable reference to the device queues.
Source§fn queue_events(&self) -> &[EventFd]
fn queue_events(&self) -> &[EventFd]
Returns the device queues event fds.
fn interrupt_trigger(&self) -> &dyn VirtioInterrupt
Source§fn read_config(&self, offset: u64, data: &mut [u8])
fn read_config(&self, offset: u64, data: &mut [u8])
Reads this device configuration space at
offset.Source§fn write_config(&mut self, offset: u64, data: &[u8])
fn write_config(&mut self, offset: u64, data: &[u8])
Writes to this device configuration space at
offset.Source§fn activate(
&mut self,
mem: GuestMemoryMmap,
interrupt: Arc<dyn VirtioInterrupt>,
) -> Result<(), ActivateError>
fn activate( &mut self, mem: GuestMemoryMmap, interrupt: Arc<dyn VirtioInterrupt>, ) -> Result<(), ActivateError>
Performs the formal activation for a device, which can be verified also with
is_activated.Source§fn is_activated(&self) -> bool
fn is_activated(&self) -> bool
Checks if the resources of this device are activated.
Source§fn has_feature(&self, feature: u64) -> bool
fn has_feature(&self, feature: u64) -> bool
Check if virtio device has negotiated given feature.
Source§fn interrupt_status(&self) -> Arc<AtomicU32>
fn interrupt_status(&self) -> Arc<AtomicU32>
Returns the current device interrupt status.
Source§fn avail_features_by_page(&self, page: u32) -> u32
fn avail_features_by_page(&self, page: u32) -> u32
The set of feature bits shifted by
page * 32.Source§fn ack_features_by_page(&mut self, page: u32, value: u32)
fn ack_features_by_page(&mut self, page: u32, value: u32)
Acknowledges that this set of features should be enabled.
Source§fn reset(&mut self) -> Option<(Arc<dyn VirtioInterrupt>, Vec<EventFd>)>
fn reset(&mut self) -> Option<(Arc<dyn VirtioInterrupt>, Vec<EventFd>)>
Optionally deactivates this device and returns ownership of the guest memory map, interrupt
event, and queue events.
Source§fn mark_queue_memory_dirty(
&mut self,
mem: &GuestMemoryMmap,
) -> Result<(), QueueError>
fn mark_queue_memory_dirty( &mut self, mem: &GuestMemoryMmap, ) -> Result<(), QueueError>
Mark pages used by queues as dirty.
Source§fn as_cow_file_engine(&self) -> Option<&CowFileEngine>
fn as_cow_file_engine(&self) -> Option<&CowFileEngine>
Returns a COW file engine if the device exposes one (NYX extension).
Source§fn nyx_handle_queue_event(&mut self, _queue_index: u16)
fn nyx_handle_queue_event(&mut self, _queue_index: u16)
Handle a queue notification from an MMIO write (NYX extension).
Auto Trait Implementations§
impl Freeze for Block
impl !RefUnwindSafe for Block
impl Send for Block
impl !Sync for Block
impl Unpin for Block
impl !UnwindSafe for Block
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.