libfoedus-core
FOEDUS Core Library
|
Just a synonym of XctId to be used as a page lock mechanism. More...
Just a synonym of XctId to be used as a page lock mechanism.
Each page has this in the header. Unlike [YANDONG12], this is just an McsWwLock. We maintain key count and permutation differently from [YANDONG12].
"is_deleted" flag is called "is_retired" to clarify what deletion means for a page. Also, epoch/ordinal has not much meaning for page. So, we only increment the ordinal part for each change. Epoch part is unused.
This object is a POD. All methods are inlined except stream.
#include <page.hpp>
Public Member Functions | |
PageVersion () __attribute__((always_inline)) | |
void | reset () __attribute__((always_inline)) |
used only while page initialization More... | |
bool | is_locked () const __attribute__((always_inline)) |
bool | is_moved () const __attribute__((always_inline)) |
bool | is_retired () const __attribute__((always_inline)) |
bool | has_next_page () const __attribute__((always_inline)) |
bool | operator== (const PageVersion &other) const __attribute__((always_inline)) |
bool | operator!= (const PageVersion &other) const __attribute__((always_inline)) |
void | set_moved () __attribute__((always_inline)) |
void | set_retired () __attribute__((always_inline)) |
void | set_has_next_page () __attribute__((always_inline)) |
uint32_t | get_version_counter () const __attribute__((always_inline)) |
void | increment_version_counter () __attribute__((always_inline)) |
Public Attributes | |
xct::McsWwLock | lock_ |
PageVersionStatus | status_ |
uint32_t | unused_ |
Friends | |
std::ostream & | operator<< (std::ostream &o, const PageVersion &v) |
|
inline |
Definition at line 160 of file page.hpp.
References foedus::storage::PageVersionStatus::get_version_counter(), and status_.
|
inline |
Definition at line 141 of file page.hpp.
References foedus::storage::PageVersionStatus::has_next_page(), and status_.
|
inline |
Definition at line 164 of file page.hpp.
References ASSERT_ND, foedus::storage::PageVersionStatus::increment_version_counter(), is_locked(), and status_.
|
inline |
Definition at line 138 of file page.hpp.
References foedus::xct::McsWwLock::is_locked(), and lock_.
Referenced by increment_version_counter(), foedus::storage::masstree::MasstreePage::is_locked(), foedus::storage::hash::HashDataPage::is_locked(), foedus::storage::operator<<(), foedus::storage::hash::HashDataPage::reserve_record(), foedus::storage::hash::ReserveRecords::search_within_page(), set_has_next_page(), set_moved(), set_retired(), and foedus::storage::hash::HashStoragePimpl::verify_single_thread_intermediate().
|
inline |
Definition at line 139 of file page.hpp.
References foedus::storage::PageVersionStatus::is_moved(), and status_.
Referenced by foedus::storage::masstree::MasstreePage::has_foster_child(), foedus::storage::masstree::MasstreePage::is_moved(), foedus::storage::operator<<(), foedus::storage::masstree::MasstreeIntermediatePage::release_pages_recursive(), foedus::storage::masstree::MasstreeBorderPage::release_pages_recursive(), foedus::storage::masstree::MasstreeIntermediatePage::release_pages_recursive_parallel(), and foedus::storage::hash::HashStoragePimpl::verify_single_thread_intermediate().
|
inline |
Definition at line 140 of file page.hpp.
References foedus::storage::PageVersionStatus::is_retired(), and status_.
Referenced by foedus::storage::masstree::MasstreePage::is_retired(), foedus::thread::ThreadPimpl::is_volatile_page_retired(), foedus::storage::operator<<(), and foedus::storage::hash::HashStoragePimpl::verify_single_thread_intermediate().
|
inline |
Definition at line 144 of file page.hpp.
References foedus::storage::PageVersionStatus::status_, and status_.
|
inline |
Definition at line 143 of file page.hpp.
References foedus::storage::PageVersionStatus::status_, and status_.
|
inline |
used only while page initialization
Definition at line 133 of file page.hpp.
References lock_, foedus::storage::PageVersionStatus::reset(), foedus::xct::McsWwLock::reset(), and status_.
Referenced by foedus::storage::PageHeader::init_snapshot(), and foedus::storage::PageHeader::init_volatile().
|
inline |
Definition at line 154 of file page.hpp.
References ASSERT_ND, is_locked(), foedus::storage::PageVersionStatus::set_has_next_page(), and status_.
Referenced by foedus::storage::hash::ReserveRecords::create_new_record_in_tail_page(), and foedus::storage::hash::ReserveRecords::find_and_lock_spacious_tail().
|
inline |
Definition at line 146 of file page.hpp.
References ASSERT_ND, is_locked(), foedus::storage::PageVersionStatus::set_moved(), and status_.
Referenced by foedus::storage::masstree::SplitBorder::run(), and foedus::storage::masstree::MasstreePage::set_moved().
|
inline |
Definition at line 150 of file page.hpp.
References ASSERT_ND, is_locked(), foedus::storage::PageVersionStatus::set_retired(), and status_.
Referenced by foedus::storage::masstree::MasstreePage::set_retired().
|
friend |
xct::McsWwLock foedus::storage::PageVersion::lock_ |
Definition at line 171 of file page.hpp.
Referenced by foedus::storage::masstree::MasstreePage::get_lock_address(), is_locked(), foedus::xct::SysxctLockList::release_all_locks(), and reset().
PageVersionStatus foedus::storage::PageVersion::status_ |
Definition at line 172 of file page.hpp.
Referenced by foedus::storage::masstree::Adopt::adopt_case_a(), foedus::storage::sequential::SequentialPage::append_record_nosync(), get_version_counter(), foedus::storage::masstree::grow_case_a_common(), has_next_page(), increment_version_counter(), is_moved(), is_retired(), foedus::storage::masstree::MasstreeStoragePimpl::locate_record(), foedus::storage::hash::HashStoragePimpl::locate_record(), foedus::storage::masstree::MasstreeStoragePimpl::locate_record_normalized(), operator!=(), foedus::storage::operator<<(), operator==(), foedus::xct::XctManagerPimpl::precommit_xct_verify_page_version_set(), reset(), set_has_next_page(), set_moved(), and set_retired().