Skip to main content

KernelStorage

Trait KernelStorage 

Source
pub trait KernelStorage: Send + Sync {
    // Required methods
    fn read_page(&self, page_id: PageId) -> KernelResult<Vec<u8>>;
    fn write_page(
        &self,
        page_id: PageId,
        data: &[u8],
    ) -> KernelResult<LogSequenceNumber>;
    fn allocate_page(&self) -> KernelResult<PageId>;
    fn free_page(&self, page_id: PageId) -> KernelResult<()>;
    fn sync(&self) -> KernelResult<()>;
    fn durable_lsn(&self) -> LogSequenceNumber;
}
Expand description

Core storage operations

This trait provides the minimal storage interface that all storage backends must implement.

Required Methods§

Source

fn read_page(&self, page_id: PageId) -> KernelResult<Vec<u8>>

Read a page from storage

Source

fn write_page( &self, page_id: PageId, data: &[u8], ) -> KernelResult<LogSequenceNumber>

Write a page to storage

Returns the LSN of the write operation for WAL tracking

Source

fn allocate_page(&self) -> KernelResult<PageId>

Allocate a new page

Source

fn free_page(&self, page_id: PageId) -> KernelResult<()>

Free a page

Source

fn sync(&self) -> KernelResult<()>

Sync all pending writes to durable storage

Source

fn durable_lsn(&self) -> LogSequenceNumber

Get the current durable LSN (all writes up to this LSN are on disk)

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§