pub struct VolumeManagerProxy { /* private fields */ }
Implementations§
Source§impl VolumeManagerProxy
impl VolumeManagerProxy
Sourcepub fn new(channel: AsyncChannel) -> Self
pub fn new(channel: AsyncChannel) -> Self
Create a new Proxy for fuchsia.hardware.block.volume/VolumeManager.
Sourcepub fn take_event_stream(&self) -> VolumeManagerEventStream
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.
Sourcepub fn allocate_partition(
&self,
slice_count: u64,
type_: &Guid,
instance: &Guid,
name: &str,
flags: u32,
) -> QueryResponseFut<i32, DefaultFuchsiaResourceDialect>
pub fn allocate_partition( &self, slice_count: u64, type_: &Guid, instance: &Guid, name: &str, flags: u32, ) -> QueryResponseFut<i32, DefaultFuchsiaResourceDialect>
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.
Sourcepub fn get_info(
&self,
) -> QueryResponseFut<(i32, Option<Box<VolumeManagerInfo>>), DefaultFuchsiaResourceDialect>
pub fn get_info( &self, ) -> QueryResponseFut<(i32, Option<Box<VolumeManagerInfo>>), DefaultFuchsiaResourceDialect>
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.
Sourcepub fn activate(
&self,
old_guid: &Guid,
new_guid: &Guid,
) -> QueryResponseFut<i32, DefaultFuchsiaResourceDialect>
pub fn activate( &self, old_guid: &Guid, new_guid: &Guid, ) -> QueryResponseFut<i32, DefaultFuchsiaResourceDialect>
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.
Sourcepub fn get_partition_limit(
&self,
guid: &Guid,
) -> QueryResponseFut<(i32, u64), DefaultFuchsiaResourceDialect>
pub fn get_partition_limit( &self, guid: &Guid, ) -> QueryResponseFut<(i32, u64), DefaultFuchsiaResourceDialect>
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.
Sourcepub fn set_partition_limit(
&self,
guid: &Guid,
slice_count: u64,
) -> QueryResponseFut<i32, DefaultFuchsiaResourceDialect>
pub fn set_partition_limit( &self, guid: &Guid, slice_count: u64, ) -> QueryResponseFut<i32, DefaultFuchsiaResourceDialect>
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.
Sourcepub fn set_partition_name(
&self,
guid: &Guid,
name: &str,
) -> QueryResponseFut<VolumeManagerSetPartitionNameResult, DefaultFuchsiaResourceDialect>
pub fn set_partition_name( &self, guid: &Guid, name: &str, ) -> QueryResponseFut<VolumeManagerSetPartitionNameResult, DefaultFuchsiaResourceDialect>
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
impl Clone for VolumeManagerProxy
Source§fn clone(&self) -> VolumeManagerProxy
fn clone(&self) -> VolumeManagerProxy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for VolumeManagerProxy
impl Debug for VolumeManagerProxy
Source§impl Proxy for VolumeManagerProxy
impl Proxy for VolumeManagerProxy
Source§type Protocol = VolumeManagerMarker
type Protocol = VolumeManagerMarker
Proxy
controls.Source§fn from_channel(inner: AsyncChannel) -> Self
fn from_channel(inner: AsyncChannel) -> Self
Source§fn into_channel(self) -> Result<AsyncChannel, Self>
fn into_channel(self) -> Result<AsyncChannel, Self>
Source§fn as_channel(&self) -> &AsyncChannel
fn as_channel(&self) -> &AsyncChannel
§fn into_client_end(self) -> Result<ClientEnd<Self::Protocol>, Self>
fn into_client_end(self) -> Result<ClientEnd<Self::Protocol>, Self>
Source§impl VolumeManagerProxyInterface for VolumeManagerProxy
impl VolumeManagerProxyInterface for VolumeManagerProxy
type AllocatePartitionResponseFut = QueryResponseFut<i32>
type GetInfoResponseFut = QueryResponseFut<(i32, Option<Box<VolumeManagerInfo>>)>
type ActivateResponseFut = QueryResponseFut<i32>
type GetPartitionLimitResponseFut = QueryResponseFut<(i32, u64)>
type SetPartitionLimitResponseFut = QueryResponseFut<i32>
type SetPartitionNameResponseFut = QueryResponseFut<Result<(), i32>>
fn allocate_partition( &self, slice_count: u64, type_: &Guid, instance: &Guid, name: &str, flags: u32, ) -> Self::AllocatePartitionResponseFut
fn get_info(&self) -> Self::GetInfoResponseFut
fn activate( &self, old_guid: &Guid, new_guid: &Guid, ) -> Self::ActivateResponseFut
fn get_partition_limit(&self, guid: &Guid) -> Self::GetPartitionLimitResponseFut
fn set_partition_limit( &self, guid: &Guid, slice_count: u64, ) -> Self::SetPartitionLimitResponseFut
fn set_partition_name( &self, guid: &Guid, name: &str, ) -> Self::SetPartitionNameResponseFut
Auto Trait Implementations§
impl Freeze for VolumeManagerProxy
impl !RefUnwindSafe for VolumeManagerProxy
impl Send for VolumeManagerProxy
impl Sync for VolumeManagerProxy
impl Unpin for VolumeManagerProxy
impl !UnwindSafe for VolumeManagerProxy
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)