pub struct BlobPagerAndVerifier { /* private fields */ }Expand description
Coordinates between FxBlob, the block driver, and the kernel to manage pager-backed blobs such that page requests can be handled at the driver instead of the filesystem layer.
BlobPagerAndVerifier uses a dedicated Pager to create pager-backed VMOs for blobs. Kernel page
faults on these VMOs are routed directly to the block driver, which reads and decompresses the
raw data. The driver then passes this data back to BlobPagerAndVerifier for cryptographic
verification and page fault resolution.
Implementations§
Source§impl BlobPagerAndVerifier
impl BlobPagerAndVerifier
Sourcepub fn delivery_vmo(&self) -> &Vmo
pub fn delivery_vmo(&self) -> &Vmo
Returns a reference to the shared delivery queue VMO.
Sourcepub async fn new(
mapping_provider: &MappingProviderProxy,
mapper: &MapperProxy,
) -> Result<Self, Error>
pub async fn new( mapping_provider: &MappingProviderProxy, mapper: &MapperProxy, ) -> Result<Self, Error>
Creates a new BlobPagerAndVerifier.
Establishes a mapping_provider session with FxBlob to receive a shared VMO that will be used to communicate opened blob extent mappings as well as any closed blobs. Then, opens a mapper session with the block driver, forwarding the mapping VMO alongside a Zircon port (for the driver to receive page faults) and a delivery queue VMO (for the driver to emit unverified data for verification).
Auto Trait Implementations§
impl !RefUnwindSafe for BlobPagerAndVerifier
impl !UnwindSafe for BlobPagerAndVerifier
impl Freeze for BlobPagerAndVerifier
impl Send for BlobPagerAndVerifier
impl Sync for BlobPagerAndVerifier
impl Unpin for BlobPagerAndVerifier
impl UnsafeUnpin for BlobPagerAndVerifier
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, 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> ⓘ
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> ⓘ
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