go-journal

module
v0.4.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 14, 2021 License: MIT

README

GoJournal: a verified, concurrent, crash-safe journaling system

CI

GoJournal is a journaling system that makes disk operations atomic. It supports concurrent operations with good performance. The implementation is verified in Perennial, and the proof can be found alongside the Perennial framework.

The biggest application of GoJournal is GoNFS, an unverified NFS server that gets good performance thanks to the journaling system.

Publications

GoJournal: a verified, concurrent, crash-safe journaling system at OSDI 2021

Directories

Path Synopsis
buf manages sub-block disk objects, to be packed into disk blocks
buf manages sub-block disk objects, to be packed into disk blocks
Package jrnl is the top-level journal API.
Package jrnl is the top-level journal API.
lockmap is a sharded lock map.
lockmap is a sharded lock map.
Package obj atomically installs objects from modified buffers in their corresponding disk blocks and writes the blocks to the write-ahead log.
Package obj atomically installs objects from modified buffers in their corresponding disk blocks and writes the blocks to the write-ahead log.
Package txn implements a full transaction interface on top of GoJournal.
Package txn implements a full transaction interface on top of GoJournal.
wal implements write-ahead logging The layout of log: [ installed writes | logged writes | in-memory/logged | unstable in-memory ] ^ ^ ^ ^ 0 memStart diskEnd nextDiskEnd Blocks in the range [diskEnd, nextDiskEnd) are in the process of being logged.
wal implements write-ahead logging The layout of log: [ installed writes | logged writes | in-memory/logged | unstable in-memory ] ^ ^ ^ ^ 0 memStart diskEnd nextDiskEnd Blocks in the range [diskEnd, nextDiskEnd) are in the process of being logged.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL