libfoedus-core
FOEDUS Core Library
|
Shared data of this storage type. More...
Shared data of this storage type.
Definition at line 50 of file masstree_storage_pimpl.hpp.
#include <masstree_storage_pimpl.hpp>
Public Member Functions | |
MasstreeStorageControlBlock ()=delete | |
~MasstreeStorageControlBlock ()=delete | |
bool | exists () const |
Public Attributes | |
soc::SharedMutex | status_mutex_ |
StorageStatus | status_ |
Status of the storage. More... | |
DualPagePointer | root_page_pointer_ |
Points to the root page (or something equivalent). More... | |
MasstreeMetadata | meta_ |
metadata of this storage. More... | |
bool | first_root_locked_ |
Used to synchronize updates to root_page_pointer_. More... | |
|
delete |
|
delete |
|
inline |
Definition at line 55 of file masstree_storage_pimpl.hpp.
References foedus::storage::kExists, foedus::storage::kMarkedForDeath, and status_.
bool foedus::storage::masstree::MasstreeStorageControlBlock::first_root_locked_ |
Used to synchronize updates to root_page_pointer_.
The only usecase is to grow the root of the first layer. This lock must be one that can be used outside of volatile page, i.e., a dumb spinlock or MCS Lock because we put it in the control block. Locks that require UniversalLockId conversion can't be used here, e.g., the Extended RW Lock. We thus use a very different lock here separate from our main lock/commit protocol.
Definition at line 88 of file masstree_storage_pimpl.hpp.
MasstreeMetadata foedus::storage::masstree::MasstreeStorageControlBlock::meta_ |
metadata of this storage.
Definition at line 74 of file masstree_storage_pimpl.hpp.
DualPagePointer foedus::storage::masstree::MasstreeStorageControlBlock::root_page_pointer_ |
Points to the root page (or something equivalent).
Masstree-specific: Volatile pointer is always active. This is always MasstreeIntermediatePage (a contract only for first layer's root page). When the first layer B-tree grows, this points to a new page. So, this is one of the few page pointers that might be swapped. Transactions thus have to add this to a pointer set even thought they are following a volatile pointer.
Instead, this always points to a root. We don't need "is_root" check in [YANDONG12] and thus doesn't need a parent pointer.
Definition at line 72 of file masstree_storage_pimpl.hpp.
Referenced by foedus::storage::masstree::MasstreePartitioner::design_partition().
StorageStatus foedus::storage::masstree::MasstreeStorageControlBlock::status_ |
Status of the storage.
Definition at line 59 of file masstree_storage_pimpl.hpp.
Referenced by exists().
soc::SharedMutex foedus::storage::masstree::MasstreeStorageControlBlock::status_mutex_ |
Definition at line 57 of file masstree_storage_pimpl.hpp.