pub struct VolumeManagerProxy { /* private fields */ }

Implementations§

source§

impl VolumeManagerProxy

source

pub fn new(channel: AsyncChannel) -> Self

Create a new Proxy for fuchsia.hardware.block.volume/VolumeManager.

source

pub fn take_event_stream(&self) -> VolumeManagerEventStream

Get a Stream of events from the remote end of the protocol.

§Panics

Panics if the event stream was already taken.

source

pub fn allocate_partition( &self, slice_count: u64, type_: &Guid, instance: &Guid, name: &str, flags: u32 ) -> QueryResponseFut<i32>

Allocates a virtual partition with the requested features.

slice_count is the number of slices initially allocated to the partition, at offset zero. The number of slices allocated to a new partition must be at least one. type and value indicate type and instance GUIDs for the partition, respectively. name indicates the name of the new partition.

source

pub fn get_info( &self ) -> QueryResponseFut<(i32, Option<Box<VolumeManagerInfo>>)>

Gets the VolumeManagerInfo describing this instance of the VolumeManager.

NOTE: GetInfo() is used to synchronize child partition device visibility with devfs. Implementations must only respond once all child partitions of VolumeManager have been added to devfs, to guarantee clients can safely enumerate them.

See https://fxbug.dev/42077585 for more information.

source

pub fn activate( &self, old_guid: &Guid, new_guid: &Guid ) -> QueryResponseFut<i32>

Atomically marks a vpartition (by instance GUID) as inactive, while finding another partition (by instance GUID) and marking it as active.

If the “old” partition does not exist, the GUID is ignored. If the “old” partition is the same as the “new” partition, the “old” GUID is ignored. If the “new” partition does not exist, ZX_ERR_NOT_FOUND is returned.

This function does not destroy the “old” partition, it just marks it as inactive – to reclaim that space, the “old” partition must be explicitly destroyed. This destruction can also occur automatically when the FVM driver is rebound (i.e., on reboot).

This function may be useful for A/B updates within the FVM, since it will allow activating updated partitions.

source

pub fn get_partition_limit(&self, guid: &Guid) -> QueryResponseFut<(i32, u64)>

Retrieves the allocation limit for the partition. A return value of 0 indicates that there is no limit and the partition can be extended as long as there is available space on the device.

The partition may be larger than this limit if a smaller limit was applied after the partition had already grown to the current size.

Currently the partition limit is not persisted across reboots but this may change in the future.

source

pub fn set_partition_limit( &self, guid: &Guid, slice_count: u64 ) -> QueryResponseFut<i32>

Sets the allocation limit for the partition. Partitions can not be extended beyond their allocation limit. The partition limit will never shrink partitions so if this value is less than the current partition size, it will keep the current size but prevent further growth.

The allocation limits are on the VolumeManager API rather than on the partition because they represent a higher capability level. These limits are designed to put guards on users of the block device (and hence the Volume API).

Currently the partition limit is not persisted across reboots but this may change in the future.

source

pub fn set_partition_name( &self, guid: &Guid, name: &str ) -> QueryResponseFut<VolumeManagerSetPartitionNameResult>

Renames the specified partition. Any existing devices that include the name of the partition in their topological path might not reflect the name change until the next time that the device is instantiated.

Trait Implementations§

source§

impl Clone for VolumeManagerProxy

source§

fn clone(&self) -> VolumeManagerProxy

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for VolumeManagerProxy

source§

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

Formats the value using the given formatter. Read more
source§

impl Proxy for VolumeManagerProxy

§

type Protocol = VolumeManagerMarker

The protocol which this Proxy controls.
source§

fn from_channel(inner: AsyncChannel) -> Self

Create a proxy over the given channel.
source§

fn into_channel(self) -> Result<AsyncChannel, Self>

Attempt to convert the proxy back into a channel. Read more
source§

fn as_channel(&self) -> &AsyncChannel

Get a reference to the proxy’s underlying channel. Read more
§

fn into_client_end(self) -> Result<ClientEnd<Self::Protocol>, Self>

Attempt to convert the proxy back into a client end. Read more
§

fn is_closed(&self) -> bool

Returns true if the proxy has received the PEER_CLOSED signal.
§

fn on_closed(&self) -> OnSignals<'_, Unowned<'_, Handle>>

Returns a future that completes when the proxy receives the PEER_CLOSED signal.
source§

impl VolumeManagerProxyInterface for VolumeManagerProxy

§

type AllocatePartitionResponseFut = QueryResponseFut<i32>

source§

fn allocate_partition( &self, slice_count: u64, type_: &Guid, instance: &Guid, name: &str, flags: u32 ) -> Self::AllocatePartitionResponseFut

§

type GetInfoResponseFut = QueryResponseFut<(i32, Option<Box<VolumeManagerInfo>>)>

source§

fn get_info(&self) -> Self::GetInfoResponseFut

§

type ActivateResponseFut = QueryResponseFut<i32>

source§

fn activate( &self, old_guid: &Guid, new_guid: &Guid ) -> Self::ActivateResponseFut

§

type GetPartitionLimitResponseFut = QueryResponseFut<(i32, u64)>

source§

fn get_partition_limit(&self, guid: &Guid) -> Self::GetPartitionLimitResponseFut

§

type SetPartitionLimitResponseFut = QueryResponseFut<i32>

source§

fn set_partition_limit( &self, guid: &Guid, slice_count: u64 ) -> Self::SetPartitionLimitResponseFut

§

type SetPartitionNameResponseFut = QueryResponseFut<Result<(), i32>>

source§

fn set_partition_name( &self, guid: &Guid, name: &str ) -> Self::SetPartitionNameResponseFut

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
§

impl<T> Encode<Ambiguous1> for T

§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
§

impl<T> Encode<Ambiguous2> for T

§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

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>,

§

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