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)

Implementors§