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§
Sourcefn write_page(
&self,
page_id: PageId,
data: &[u8],
) -> KernelResult<LogSequenceNumber>
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
Sourcefn allocate_page(&self) -> KernelResult<PageId>
fn allocate_page(&self) -> KernelResult<PageId>
Allocate a new page
Sourcefn free_page(&self, page_id: PageId) -> KernelResult<()>
fn free_page(&self, page_id: PageId) -> KernelResult<()>
Free a page
Sourcefn sync(&self) -> KernelResult<()>
fn sync(&self) -> KernelResult<()>
Sync all pending writes to durable storage
Sourcefn durable_lsn(&self) -> LogSequenceNumber
fn durable_lsn(&self) -> LogSequenceNumber
Get the current durable LSN (all writes up to this LSN are on disk)