pub struct ErofsFile { /* private fields */ }Expand description
An implementation of an EROFS file backed by a Zircon Pager VMO.
Implementations§
Source§impl ErofsFile
impl ErofsFile
Sourcepub fn new(
volume: Arc<ErofsVolume>,
node: FileNode,
) -> Result<Arc<Self>, Status>
pub fn new( volume: Arc<ErofsVolume>, node: FileNode, ) -> Result<Arc<Self>, Status>
Creates a new pager-backed ErofsFile using Arc::new_cyclic to establish a weak
self-reference within the registered ErofsPacketReceiver. This permits the file to be
kept alive dynamically when being used by clients, and cleaned up when no longer in use.
pub fn fs(&self) -> &ErofsFilesystem
pub fn node(&self) -> &FileNode
pub fn vmo(&self) -> &Vmo
Sourcepub fn watch_for_zero_children(&self) -> Result<bool, Status>
pub fn watch_for_zero_children(&self) -> Result<bool, Status>
Instructs the pager to watch for the VMO_ZERO_CHILDREN signal.
If the VMO is currently held weakly by the packet receiver, this method upgrades it to a
Strong reference to prevent the file from being deallocated while clients have active
mappings, and registers the signal wait on the VMO. Returns Ok(true) if a transition to
Strong occurred.
Trait Implementations§
Source§impl DirectoryEntry for ErofsFile
impl DirectoryEntry for ErofsFile
Source§fn open_entry(self: Arc<Self>, request: OpenRequest<'_>) -> Result<(), Status>
fn open_entry(self: Arc<Self>, request: OpenRequest<'_>) -> Result<(), Status>
Opens this entry.
Source§impl File for ErofsFile
impl File for ErofsFile
fn writable(&self) -> bool
fn executable(&self) -> bool
Source§async fn open_file(&self, _options: &FileOptions) -> Result<(), Status>
async fn open_file(&self, _options: &FileOptions) -> Result<(), Status>
Called when the file is going to be accessed, typically by a new connection.
Flags is the same as the flags passed to
flex_fuchsia_io.Node/Open.
The following flags are handled by the connection and do not need to be handled inside
open(): Read moreSource§async fn truncate(&self, _length: u64) -> Result<(), Status>
async fn truncate(&self, _length: u64) -> Result<(), Status>
Truncate the file to
length.
If there are pending attributes to update (see update_attributes), they should also be
flushed at this time. Otherwise, no attributes should be updated, other than size as needed.Source§async fn get_size(&self) -> Result<u64, Status>
async fn get_size(&self) -> Result<u64, Status>
Get the size of this file.
This is used to calculate seek offset relative to the end.
Source§async fn update_attributes(
&self,
_attributes: MutableNodeAttributes,
) -> Result<(), Status>
async fn update_attributes( &self, _attributes: MutableNodeAttributes, ) -> Result<(), Status>
Set the mutable attributes of this file based on the values in
attributes. If the file
does not support updating all of the specified attributes, implementations should fail
with ZX_ERR_NOT_SUPPORTED.Source§async fn get_backing_memory(&self, flags: VmoFlags) -> Result<Vmo, Status>
async fn get_backing_memory(&self, flags: VmoFlags) -> Result<Vmo, Status>
Get a VMO representing this file.
If not supported by the underlying filesystem, should return Err(NOT_SUPPORTED).
Source§async fn sync(&self, _mode: SyncMode) -> Result<(), Status>
async fn sync(&self, _mode: SyncMode) -> Result<(), Status>
Sync this file’s contents to the storage medium (probably disk).
This does not necessarily guarantee that the file will be completely written to disk once
the call returns. It merely guarantees that any changes to the file have been propagated
to the next layer in the storage stack.
Source§impl FileLike for ErofsFile
impl FileLike for ErofsFile
fn open( self: Arc<Self>, scope: ExecutionScope, options: FileOptions, object_request: ObjectRequestRef<'_>, ) -> Result<(), Status>
Source§impl GetEntryInfo for ErofsFile
impl GetEntryInfo for ErofsFile
Source§fn entry_info(&self) -> EntryInfo
fn entry_info(&self) -> EntryInfo
This method is used to populate ReadDirents() output.
Source§impl Node for ErofsFile
impl Node for ErofsFile
Source§async fn get_attributes(
&self,
requested_attributes: NodeAttributesQuery,
) -> Result<NodeAttributes2, Status>
async fn get_attributes( &self, requested_attributes: NodeAttributesQuery, ) -> Result<NodeAttributes2, Status>
Returns node attributes (io2).
Source§fn will_open_as_node(&self) -> Result<(), Status>
fn will_open_as_node(&self) -> Result<(), Status>
Called when the node is about to be opened as the node protocol. Implementers can use this
to perform any initialization or reference counting. Errors here will result in the open
failing. By default, this forwards to the infallible will_clone.
Source§fn will_clone(&self)
fn will_clone(&self)
Called when the node is about to be cloned (and also by the default implementation of
will_open_as_node). Implementations that perform their own open count can use this. Each
call to
will_clone will be accompanied by an eventual call to close.fn link_into(
self: Arc<Self>,
_destination_dir: Arc<dyn MutableDirectory>,
_name: Name,
) -> impl Future<Output = Result<(), Status>> + Sendwhere
Self: Sized,
Source§fn query_filesystem(&self) -> Result<FilesystemInfo, Status>
fn query_filesystem(&self) -> Result<FilesystemInfo, Status>
Returns information about the filesystem and/or volume.
Source§fn open_as_node(
self: Arc<Self>,
scope: ExecutionScope,
options: NodeOptions,
object_request: &mut ObjectRequest,
) -> Result<(), Status>where
Self: Sized,
fn open_as_node(
self: Arc<Self>,
scope: ExecutionScope,
options: NodeOptions,
object_request: &mut ObjectRequest,
) -> Result<(), Status>where
Self: Sized,
Opens the node using the node protocol.
Source§fn list_extended_attributes(
&self,
) -> impl Future<Output = Result<Vec<Vec<u8>>, Status>> + Sendwhere
Self: Sized,
fn list_extended_attributes(
&self,
) -> impl Future<Output = Result<Vec<Vec<u8>>, Status>> + Sendwhere
Self: Sized,
List extended attributes.
Source§fn get_extended_attribute(
&self,
_name: Vec<u8>,
) -> impl Future<Output = Result<Vec<u8>, Status>> + Sendwhere
Self: Sized,
fn get_extended_attribute(
&self,
_name: Vec<u8>,
) -> impl Future<Output = Result<Vec<u8>, Status>> + Sendwhere
Self: Sized,
Get the value for an extended attribute.
Auto Trait Implementations§
impl Freeze for ErofsFile
impl !RefUnwindSafe for ErofsFile
impl Send for ErofsFile
impl Sync for ErofsFile
impl Unpin for ErofsFile
impl UnsafeUnpin for ErofsFile
impl !UnwindSafe for ErofsFile
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
Source§impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
Source§impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more