mirror of
https://github.com/isar/libmdbx.git
synced 2025-09-07 01:52:21 +08:00
mdbx: rename page2payload() and payload2page().
This commit is contained in:
@@ -517,7 +517,7 @@ __cold int mdbx_env_openW(MDBX_env *env, const wchar_t *pathname, MDBX_env_flags
|
||||
|
||||
DEBUG("opened database version %u, pagesize %u", (uint8_t)unaligned_peek_u64(4, head.ptr_c->magic_and_version),
|
||||
env->ps);
|
||||
DEBUG("using meta page %" PRIaPGNO ", txn %" PRIaTXN, data_page(head.ptr_c)->pgno, head.txnid);
|
||||
DEBUG("using meta page %" PRIaPGNO ", txn %" PRIaTXN, payload2page(head.ptr_c)->pgno, head.txnid);
|
||||
DEBUG("depth: %u", db->height);
|
||||
DEBUG("entries: %" PRIu64, db->items);
|
||||
DEBUG("branch pages: %" PRIaPGNO, db->branch_pages);
|
||||
|
@@ -248,13 +248,13 @@ static inline void get_key_optional(const node_t *node, MDBX_val *keyptr /* __ma
|
||||
*keyptr = get_key(node);
|
||||
}
|
||||
|
||||
MDBX_NOTHROW_PURE_FUNCTION static inline void *page_data(const page_t *mp) { return ptr_disp(mp, PAGEHDRSZ); }
|
||||
MDBX_NOTHROW_PURE_FUNCTION static inline void *page2payload(const page_t *mp) { return ptr_disp(mp, PAGEHDRSZ); }
|
||||
|
||||
MDBX_NOTHROW_PURE_FUNCTION static inline const page_t *data_page(const void *data) {
|
||||
MDBX_NOTHROW_PURE_FUNCTION static inline const page_t *payload2page(const void *data) {
|
||||
return container_of(data, page_t, entries);
|
||||
}
|
||||
|
||||
MDBX_NOTHROW_PURE_FUNCTION static inline meta_t *page_meta(page_t *mp) { return (meta_t *)page_data(mp); }
|
||||
MDBX_NOTHROW_PURE_FUNCTION static inline meta_t *page_meta(page_t *mp) { return (meta_t *)page2payload(mp); }
|
||||
|
||||
MDBX_NOTHROW_PURE_FUNCTION static inline size_t page_numkeys(const page_t *mp) {
|
||||
assert(mp->lower <= mp->upper);
|
||||
|
@@ -1010,9 +1010,9 @@ __hot int cursor_put(MDBX_cursor *mc, const MDBX_val *key, MDBX_val *data, unsig
|
||||
}
|
||||
node_set_ds(node, data->iov_len);
|
||||
if (flags & MDBX_RESERVE)
|
||||
data->iov_base = page_data(lp.page);
|
||||
data->iov_base = page2payload(lp.page);
|
||||
else
|
||||
memcpy(page_data(lp.page), data->iov_base, data->iov_len);
|
||||
memcpy(page2payload(lp.page), data->iov_base, data->iov_len);
|
||||
|
||||
if (AUDIT_ENABLED()) {
|
||||
err = cursor_validate(mc);
|
||||
@@ -1234,7 +1234,7 @@ __hot int cursor_put(MDBX_cursor *mc, const MDBX_val *key, MDBX_val *data, unsig
|
||||
cASSERT(mc, fp->upper + growth < UINT16_MAX);
|
||||
mp->upper = fp->upper + (indx_t)growth;
|
||||
if (unlikely(fp_flags & P_DUPFIX)) {
|
||||
memcpy(page_data(mp), page_data(fp), page_numkeys(fp) * fp->dupfix_ksize);
|
||||
memcpy(page2payload(mp), page2payload(fp), page_numkeys(fp) * fp->dupfix_ksize);
|
||||
cASSERT(mc, (((mp->dupfix_ksize & page_numkeys(mp)) ^ mp->upper) & 1) == 0);
|
||||
} else {
|
||||
cASSERT(mc, (mp->upper & 1) == 0);
|
||||
@@ -2114,7 +2114,7 @@ __hot int cursor_ops(MDBX_cursor *mc, MDBX_val *key, MDBX_val *data, const MDBX_
|
||||
cASSERT(mc, is_filled(mc) && inner_filled(mc));
|
||||
MDBX_cursor *mx = &mc->subcur->cursor;
|
||||
data->iov_len = page_numkeys(mx->pg[mx->top]) * mx->tree->dupfix_size;
|
||||
data->iov_base = page_data(mx->pg[mx->top]);
|
||||
data->iov_base = page2payload(mx->pg[mx->top]);
|
||||
mx->ki[mx->top] = (indx_t)page_numkeys(mx->pg[mx->top]) - 1;
|
||||
return MDBX_SUCCESS;
|
||||
}
|
||||
|
@@ -726,7 +726,7 @@ __cold int dxb_setup(MDBX_env *env, const int lck_rc, const mdbx_mode_t mode_bit
|
||||
meta_t const *const target = METAPAGE(env, env->stuck_meta);
|
||||
err = meta_validate_copy(env, target, &clone);
|
||||
if (unlikely(err != MDBX_SUCCESS)) {
|
||||
ERROR("target meta[%u] is corrupted", bytes2pgno(env, ptr_dist(data_page(target), env->dxb_mmap.base)));
|
||||
ERROR("target meta[%u] is corrupted", bytes2pgno(env, ptr_dist(payload2page(target), env->dxb_mmap.base)));
|
||||
meta_troika_dump(env, &troika);
|
||||
return MDBX_CORRUPTED;
|
||||
}
|
||||
@@ -1161,7 +1161,7 @@ int dxb_sync_locked(MDBX_env *env, unsigned flags, meta_t *const pending, troika
|
||||
target = (meta_t *)head.ptr_c;
|
||||
else {
|
||||
NOTICE("skip update meta%" PRIaPGNO " for txn#%" PRIaTXN ", since it is already steady",
|
||||
data_page(head.ptr_c)->pgno, head.txnid);
|
||||
payload2page(head.ptr_c)->pgno, head.txnid);
|
||||
return MDBX_SUCCESS;
|
||||
}
|
||||
} else {
|
||||
@@ -1173,7 +1173,7 @@ int dxb_sync_locked(MDBX_env *env, unsigned flags, meta_t *const pending, troika
|
||||
/* LY: step#2 - update meta-page. */
|
||||
DEBUG("writing meta%" PRIaPGNO " = root %" PRIaPGNO "/%" PRIaPGNO ", geo %" PRIaPGNO "/%" PRIaPGNO "-%" PRIaPGNO
|
||||
"/%" PRIaPGNO " +%u -%u, txn_id %" PRIaTXN ", %s",
|
||||
data_page(target)->pgno, pending->trees.main.root, pending->trees.gc.root, pending->geometry.lower,
|
||||
payload2page(target)->pgno, pending->trees.main.root, pending->trees.gc.root, pending->geometry.lower,
|
||||
pending->geometry.first_unallocated, pending->geometry.now, pending->geometry.upper,
|
||||
pv2pages(pending->geometry.grow_pv), pv2pages(pending->geometry.shrink_pv), pending->unsafe_txnid,
|
||||
durable_caption(pending));
|
||||
@@ -1249,7 +1249,7 @@ int dxb_sync_locked(MDBX_env *env, unsigned flags, meta_t *const pending, troika
|
||||
#if MDBX_ENABLE_PGOP_STAT
|
||||
env->lck->pgops.wops.weak += 1;
|
||||
#endif /* MDBX_ENABLE_PGOP_STAT */
|
||||
const page_t *page = data_page(target);
|
||||
const page_t *page = payload2page(target);
|
||||
rc = osal_pwrite(env->fd4meta, page, env->ps, ptr_dist(page, env->dxb_mmap.base));
|
||||
if (likely(rc == MDBX_SUCCESS)) {
|
||||
osal_flush_incoherent_mmap(target, sizeof(meta_t), globals.sys_pagesize);
|
||||
|
@@ -179,7 +179,7 @@ retry:;
|
||||
goto bailout;
|
||||
}
|
||||
if (!head.is_steady || ((flags & MDBX_SAFE_NOSYNC) == 0 && unsynced_pages)) {
|
||||
DEBUG("meta-head %" PRIaPGNO ", %s, sync_pending %" PRIu64, data_page(head.ptr_c)->pgno,
|
||||
DEBUG("meta-head %" PRIaPGNO ", %s, sync_pending %" PRIu64, payload2page(head.ptr_c)->pgno,
|
||||
durable_caption(head.ptr_c), unsynced_pages);
|
||||
meta_t meta = *head.ptr_c;
|
||||
rc = dxb_sync_locked(env, flags, &meta, &env->basal_txn->wr.troika);
|
||||
|
@@ -1365,7 +1365,7 @@ __hot pgr_t gc_alloc_single(const MDBX_cursor *const mc) {
|
||||
DEBUG_EXTRA("db %d use loose page %" PRIaPGNO, cursor_dbi_dbg(mc), lp->pgno);
|
||||
tASSERT(txn, lp->pgno < txn->geo.first_unallocated);
|
||||
tASSERT(txn, lp->pgno >= NUM_METAS);
|
||||
VALGRIND_MAKE_MEM_UNDEFINED(page_data(lp), page_space(txn->env));
|
||||
VALGRIND_MAKE_MEM_UNDEFINED(page2payload(lp), page_space(txn->env));
|
||||
lp->txnid = txn->front_txnid;
|
||||
pgr_t ret = {lp, MDBX_SUCCESS};
|
||||
return ret;
|
||||
|
@@ -213,7 +213,7 @@ static int meta_unsteady(MDBX_env *env, const txnid_t inclusive_upto, const pgno
|
||||
osal_flush_incoherent_cpu_writeback();
|
||||
if (!MDBX_AVOID_MSYNC)
|
||||
return MDBX_RESULT_TRUE;
|
||||
ptr = data_page(meta);
|
||||
ptr = payload2page(meta);
|
||||
offset = ptr_dist(ptr, env->dxb_mmap.base);
|
||||
bytes = env->ps;
|
||||
}
|
||||
@@ -275,7 +275,7 @@ int meta_sync(const MDBX_env *env, const meta_ptr_t head) {
|
||||
#if MDBX_ENABLE_PGOP_ST
|
||||
env->lck->pgops.wops.weak += 1;
|
||||
#endif /* MDBX_ENABLE_PGOP_STAT */
|
||||
const page_t *page = data_page(head.ptr_c);
|
||||
const page_t *page = payload2page(head.ptr_c);
|
||||
rc = osal_pwrite(env->fd4meta, page, env->ps, ptr_dist(page, env->dxb_mmap.base));
|
||||
|
||||
if (likely(rc == MDBX_SUCCESS) && env->fd4meta == env->lazy_fd) {
|
||||
@@ -652,5 +652,5 @@ __cold int meta_validate(MDBX_env *env, meta_t *const meta, const page_t *const
|
||||
|
||||
__cold int meta_validate_copy(MDBX_env *env, const meta_t *meta, meta_t *dest) {
|
||||
*dest = *meta;
|
||||
return meta_validate(env, dest, data_page(meta), bytes2pgno(env, ptr_dist(meta, env->dxb_mmap.base)), nullptr);
|
||||
return meta_validate(env, dest, payload2page(meta), bytes2pgno(env, ptr_dist(meta, env->dxb_mmap.base)), nullptr);
|
||||
}
|
||||
|
@@ -162,7 +162,7 @@ __hot int __must_check_result node_add_leaf(MDBX_cursor *mc, size_t indx, const
|
||||
}
|
||||
} else {
|
||||
poke_pgno(nodedata, largepage->pgno);
|
||||
nodedata = page_data(largepage);
|
||||
nodedata = page2payload(largepage);
|
||||
}
|
||||
if (unlikely(flags & MDBX_RESERVE))
|
||||
data->iov_base = nodedata;
|
||||
@@ -233,7 +233,7 @@ __noinline int node_read_bigdata(MDBX_cursor *mc, const node_t *node, MDBX_val *
|
||||
}
|
||||
|
||||
cASSERT(mc, page_type(lp.page) == P_LARGE);
|
||||
data->iov_base = page_data(lp.page);
|
||||
data->iov_base = page2payload(lp.page);
|
||||
if (!MDBX_DISABLE_VALIDATION) {
|
||||
const MDBX_env *env = mc->txn->env;
|
||||
const size_t dsize = data->iov_len;
|
||||
|
@@ -566,7 +566,7 @@ status_done:
|
||||
if (likely(npages == 1 && suitable4loose(txn, pgno)) && (di || !txn->wr.dirtylist)) {
|
||||
DEBUG("loosen dirty page %" PRIaPGNO, pgno);
|
||||
if (MDBX_DEBUG != 0 || unlikely(txn->env->flags & MDBX_PAGEPERTURB))
|
||||
memset(page_data(mp), -1, txn->env->ps - PAGEHDRSZ);
|
||||
memset(page2payload(mp), -1, txn->env->ps - PAGEHDRSZ);
|
||||
mp->txnid = INVALID_TXNID;
|
||||
mp->flags = P_LOOSE;
|
||||
page_next(mp) = txn->wr.loose_pages;
|
||||
@@ -575,8 +575,8 @@ status_done:
|
||||
#if MDBX_ENABLE_REFUND
|
||||
txn->wr.loose_refund_wl = (pgno + 2 > txn->wr.loose_refund_wl) ? pgno + 2 : txn->wr.loose_refund_wl;
|
||||
#endif /* MDBX_ENABLE_REFUND */
|
||||
VALGRIND_MAKE_MEM_NOACCESS(page_data(mp), txn->env->ps - PAGEHDRSZ);
|
||||
MDBX_ASAN_POISON_MEMORY_REGION(page_data(mp), txn->env->ps - PAGEHDRSZ);
|
||||
VALGRIND_MAKE_MEM_NOACCESS(page2payload(mp), txn->env->ps - PAGEHDRSZ);
|
||||
MDBX_ASAN_POISON_MEMORY_REGION(page2payload(mp), txn->env->ps - PAGEHDRSZ);
|
||||
return MDBX_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -600,8 +600,9 @@ status_done:
|
||||
#endif
|
||||
page_kill(txn, mp, pgno, npages);
|
||||
if ((txn->flags & MDBX_WRITEMAP) == 0) {
|
||||
VALGRIND_MAKE_MEM_NOACCESS(page_data(pgno2page(txn->env, pgno)), pgno2bytes(txn->env, npages) - PAGEHDRSZ);
|
||||
MDBX_ASAN_POISON_MEMORY_REGION(page_data(pgno2page(txn->env, pgno)), pgno2bytes(txn->env, npages) - PAGEHDRSZ);
|
||||
VALGRIND_MAKE_MEM_NOACCESS(page2payload(pgno2page(txn->env, pgno)), pgno2bytes(txn->env, npages) - PAGEHDRSZ);
|
||||
MDBX_ASAN_POISON_MEMORY_REGION(page2payload(pgno2page(txn->env, pgno)),
|
||||
pgno2bytes(txn->env, npages) - PAGEHDRSZ);
|
||||
}
|
||||
}
|
||||
skip_invalidate:
|
||||
|
@@ -132,8 +132,8 @@ static inline void page_wash(MDBX_txn *txn, size_t di, page_t *const mp, const s
|
||||
txn->wr.writemap_dirty_npages -= (txn->wr.writemap_dirty_npages > npages) ? npages : txn->wr.writemap_dirty_npages;
|
||||
}
|
||||
VALGRIND_MAKE_MEM_UNDEFINED(mp, PAGEHDRSZ);
|
||||
VALGRIND_MAKE_MEM_NOACCESS(page_data(mp), pgno2bytes(txn->env, npages) - PAGEHDRSZ);
|
||||
MDBX_ASAN_POISON_MEMORY_REGION(page_data(mp), pgno2bytes(txn->env, npages) - PAGEHDRSZ);
|
||||
VALGRIND_MAKE_MEM_NOACCESS(page2payload(mp), pgno2bytes(txn->env, npages) - PAGEHDRSZ);
|
||||
MDBX_ASAN_POISON_MEMORY_REGION(page2payload(mp), pgno2bytes(txn->env, npages) - PAGEHDRSZ);
|
||||
}
|
||||
|
||||
MDBX_INTERNAL size_t page_subleaf2_reserve(const MDBX_env *env, size_t host_page_room, size_t subpage_len,
|
||||
|
@@ -463,7 +463,7 @@ static int page_merge(MDBX_cursor *csrc, MDBX_cursor *cdst) {
|
||||
return rc;
|
||||
|
||||
key.iov_len = csrc->tree->dupfix_size;
|
||||
key.iov_base = page_data(psrc);
|
||||
key.iov_base = page2payload(psrc);
|
||||
size_t i = 0;
|
||||
do {
|
||||
rc = node_add_dupfix(cdst, ii++, &key);
|
||||
|
Reference in New Issue
Block a user