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)
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".