Module fxfs::object_store
source · Re-exports
pub use caching_object_handle::CachingObjectHandle;
pub use directory::Directory;
pub use allocator::AllocatorInfo;
pub use allocator::AllocatorKey;
pub use allocator::AllocatorValue;
pub use journal::JournalRecord;
pub use journal::JournalRecordV20;
pub use journal::SuperBlockHeader;
pub use journal::SuperBlockRecord;
pub use journal::SuperBlockRecordV5;
pub use transaction::Mutation;
Modules
- The journal is implemented as an ever extending file which contains variable length records that describe mutations to be applied to various objects. The journal file consists of blocks, with a checksum at the end of each block, but otherwise it can be considered a continuous stream.
Structs
- Like object_handle::Writer, but allows custom transaction options to be set, and makes every write go directly to the handle in a transaction.
- ExtentKey is a child of ObjectKey for Object attributes that have attached extents (at time of writing this was only the used for file contents).
- Object-level attributes. Note that these are not the same as “attributes” in the ObjectValue::Attribute sense, which refers to an arbitrary data payload associated with an object. This naming collision is unfortunate.
- ObjectKey is a key in the object store.
- An object store supports a file like interface for objects. Objects are keyed by a 64 bit identifier. And object store has to be backed by a parent object store (which stores metadata for the object store). The top-level object store (a.k.a. the root parent object store) is in-memory only.
- UNIX epoch based timestamp in the UTC timezone.
Enums
- ExtentValue is the payload for an extent in the object store, which describes where the extent is physically located.
- ObjectDescriptor is the set of possible records in the object store.
- ObjectValue is the value of an item in the object store. Note that the tree stores deltas on objects, so these values describe deltas. Unless specified otherwise, a value indicates an insert/replace mutation.
- For specifying what property of the project is being addressed.
- Argument to the trim_some method.
- Result of the trim_some method.
Constants
- For Blobs in Fxfs, we store the merkle tree at a well-known attribute. TODO(fxbug.dev/122125): Is this the best place to store the merkle tree? What about inline with data?
- The common case for extents which cover the data payload of some object.
Traits
- StoreObjectHandle stores an owner that must implement this trait, which allows the handle to get back to an ObjectStore and provides a callback for creating a data buffer for the handle.
Functions
- Loads store info.