pub struct IndexedChunkMap { /* private fields */ }Expand description
An implementation of ChunkMap to support chunk state tracking by using a bitmap file.
The IndexedChunkMap is an implementation of ChunkMap which uses a bitmap file and atomic
bitmap operations to track readiness state. It creates or opens a file with the name
$blob_id.chunk_map to record whether a chunk has been cached by the blob cache, and atomic
bitmap operations are used to manipulate the state bit. The bitmap file will be persisted to
disk.
This approach can be used to share chunk ready state between multiple nydusd instances. For example: the bitmap file layout is [0b00000000, 0b00000000], when blobcache calls set_ready(3), the layout should be changed to [0b00010000, 0b00000000].
Implementations§
Trait Implementations§
Source§impl ChunkIndexGetter for IndexedChunkMap
impl ChunkIndexGetter for IndexedChunkMap
Source§impl ChunkMap for IndexedChunkMap
impl ChunkMap for IndexedChunkMap
Source§fn is_ready(&self, chunk: &dyn BlobChunkInfo) -> Result<bool>
fn is_ready(&self, chunk: &dyn BlobChunkInfo) -> Result<bool>
Check whether the chunk is ready for use.
Source§fn set_ready_and_clear_pending(&self, chunk: &dyn BlobChunkInfo) -> Result<()>
fn set_ready_and_clear_pending(&self, chunk: &dyn BlobChunkInfo) -> Result<()>
Set the chunk to ready for use and clear the pending state.
Source§fn is_persist(&self) -> bool
fn is_persist(&self) -> bool
Check whether the implementation supports state persistence.
Source§fn as_range_map(&self) -> Option<&dyn RangeMap<I = u32>>
fn as_range_map(&self) -> Option<&dyn RangeMap<I = u32>>
Convert the objet to an RangeMap object.
Source§fn is_pending(&self, _chunk: &dyn BlobChunkInfo) -> Result<bool>
fn is_pending(&self, _chunk: &dyn BlobChunkInfo) -> Result<bool>
Check whether the chunk is pending for downloading.
Source§fn is_ready_or_pending(&self, chunk: &dyn BlobChunkInfo) -> Result<bool>
fn is_ready_or_pending(&self, chunk: &dyn BlobChunkInfo) -> Result<bool>
Check whether a chunk is ready for use or pending for downloading.
Source§fn check_ready_and_mark_pending(
&self,
_chunk: &dyn BlobChunkInfo,
) -> StorageResult<bool>
fn check_ready_and_mark_pending( &self, _chunk: &dyn BlobChunkInfo, ) -> StorageResult<bool>
Check whether the chunk is ready for use, and mark it as pending if not ready yet. Read more
Source§fn clear_pending(&self, _chunk: &dyn BlobChunkInfo)
fn clear_pending(&self, _chunk: &dyn BlobChunkInfo)
Clear the pending state of the chunk.
Source§impl RangeMap for IndexedChunkMap
impl RangeMap for IndexedChunkMap
type I = u32
Source§fn is_range_all_ready(&self) -> bool
fn is_range_all_ready(&self) -> bool
Check whether all chunks or data managed by the
RangeMap object are ready.Source§fn is_range_ready(&self, start_index: u32, count: u32) -> Result<bool>
fn is_range_ready(&self, start_index: u32, count: u32) -> Result<bool>
Check whether all chunks or data in the range are ready for use.
Source§fn check_range_ready_and_mark_pending(
&self,
start_index: u32,
count: u32,
) -> Result<Option<Vec<u32>>>
fn check_range_ready_and_mark_pending( &self, start_index: u32, count: u32, ) -> Result<Option<Vec<u32>>>
Check whether all chunks or data in the range [start, start + count) are ready. Read more
Source§fn set_range_ready_and_clear_pending(
&self,
start_index: u32,
count: u32,
) -> Result<()>
fn set_range_ready_and_clear_pending( &self, start_index: u32, count: u32, ) -> Result<()>
Mark all chunks or data in the range as ready for use.
Source§fn clear_range_pending(&self, _start: Self::I, _count: Self::I)
fn clear_range_pending(&self, _start: Self::I, _count: Self::I)
Clear the pending state for all chunks or data in the range.
Auto Trait Implementations§
impl !Freeze for IndexedChunkMap
impl RefUnwindSafe for IndexedChunkMap
impl Send for IndexedChunkMap
impl Sync for IndexedChunkMap
impl Unpin for IndexedChunkMap
impl UnsafeUnpin for IndexedChunkMap
impl UnwindSafe for IndexedChunkMap
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