Skip to main content

ClustersToFreeList

Struct ClustersToFreeList 

Source
pub(super) struct ClustersToFreeList {
    list: Mutex<Vec<ClustersToFreeEntry>>,
}
Expand description

List of clusters that are no longer in use, and should be freed.

Shared between Qcow2 and its Allocator.

Fields§

§list: Mutex<Vec<ClustersToFreeEntry>>

The list itself.

Synchronous mutex because it is never to be held across .await points.

Implementations§

Source§

impl ClustersToFreeList

Source

pub fn push(&self, entry: ClustersToFreeEntry)

Mark entry as a cluster to be freed.

Source

pub fn is_empty(&self) -> bool

Check whether the list is empty.

Source

pub fn take(&self) -> Vec<ClustersToFreeEntry>

Remove all entries from the list and return them.

Source

pub fn pending_guard( self: &Arc<Self>, entry: ClustersToFreeEntry, ) -> PendingClusters

Create a guard that enters entry into the list when dropped, unless disarmed.

This is for use in allocation paths, where a cluster is allocated, not yet hooked up, and anything might cause the hooking-up not to happen, in which case entry should be dropped. Once it is hooked up, the guard will be disarmed, thus making the cluster permanent.

Trait Implementations§

Source§

impl Default for ClustersToFreeList

Source§

fn default() -> ClustersToFreeList

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more