Struct L2TableWriteGuard

Source
pub(super) struct L2TableWriteGuard<'a> {
    table: &'a L2Table,
    _lock: MutexGuard<'a, ()>,
}
Expand description

Write guard for an L2 table.

Fields§

§table: &'a L2Table

Referenced L2 table.

§_lock: MutexGuard<'a, ()>

Held guard mutex on that L2 table.

Implementations§

Source§

impl L2TableWriteGuard<'_>

Source

pub fn get_mapping(&self, lookup_cluster: GuestCluster) -> Result<L2Mapping>

Look up a cluster mapping.

Source

pub fn map_cluster( &mut self, index: usize, host_cluster: HostCluster, ) -> Option<(HostCluster, ClusterCount)>

Enter the given raw data cluster mapping into the L2 table.

If the previous entry pointed to an allocated cluster, return the old allocation so its refcount can be decreased (offset of the first cluster and number of clusters – compressed clusters can span across host cluster boundaries).

If the allocation is reused, None is returned, so this function only returns Some(_) if some cluster is indeed leaked.

Source

pub fn zero_cluster( &mut self, index: usize, keep_allocation: bool, ) -> Result<Option<(HostCluster, ClusterCount)>>

Make the given index a zero mapping.

If keep_allocation is true, keep the zero cluster pre-allocated if there is a pre-existing single-cluster allocation (i.e. data cluster or pre-allocated zero cluster). Otherwise, the existing mapping is discarded.

If a previous mapping is discarded, return the old allocation so its refcount can be decreased (offset of the first cluster and number of clusters – compressed clusters can span across host cluster boundaries).

Source

pub fn discard_cluster( &mut self, index: usize, ) -> Option<(HostCluster, ClusterCount)>

Remove the given mapping, leaving it empty.

If a previous mapping is discarded, return the old allocation so its refcount can be decreased (offset of the first cluster and number of clusters – compressed clusters can span across host cluster boundaries).

Trait Implementations§

Source§

impl<'a> Debug for L2TableWriteGuard<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for L2TableWriteGuard<'a>

§

impl<'a> !RefUnwindSafe for L2TableWriteGuard<'a>

§

impl<'a> Send for L2TableWriteGuard<'a>

§

impl<'a> Sync for L2TableWriteGuard<'a>

§

impl<'a> Unpin for L2TableWriteGuard<'a>

§

impl<'a> !UnwindSafe for L2TableWriteGuard<'a>

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