From 9f2352681c53449e4121483a4110c43c82fc95a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Thu, 4 Sep 2025 01:16:54 +0300 Subject: [PATCH] mdbx: rename page2payload() and payload2page(). --- src/api-env.c | 2 +- src/cogs.h | 6 +++--- src/cursor.c | 8 ++++---- src/dxb.c | 8 ++++---- src/env.c | 2 +- src/gc-get.c | 2 +- src/meta.c | 6 +++--- src/node.c | 4 ++-- src/page-ops.c | 11 ++++++----- src/page-ops.h | 4 ++-- src/tree-ops.c | 2 +- 11 files changed, 28 insertions(+), 27 deletions(-) diff --git a/src/api-env.c b/src/api-env.c index 6c50589d..34f86c17 100644 --- a/src/api-env.c +++ b/src/api-env.c @@ -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); diff --git a/src/cogs.h b/src/cogs.h index a3f5b2e1..2629bae6 100644 --- a/src/cogs.h +++ b/src/cogs.h @@ -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); diff --git a/src/cursor.c b/src/cursor.c index 9365eb4b..571be7e1 100644 --- a/src/cursor.c +++ b/src/cursor.c @@ -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; } diff --git a/src/dxb.c b/src/dxb.c index 85a9bf75..d61290d8 100644 --- a/src/dxb.c +++ b/src/dxb.c @@ -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); diff --git a/src/env.c b/src/env.c index f437311c..6fc5493f 100644 --- a/src/env.c +++ b/src/env.c @@ -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); diff --git a/src/gc-get.c b/src/gc-get.c index 4fd14c8e..ad2854d0 100644 --- a/src/gc-get.c +++ b/src/gc-get.c @@ -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; diff --git a/src/meta.c b/src/meta.c index ec4e961a..381a886f 100644 --- a/src/meta.c +++ b/src/meta.c @@ -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); } diff --git a/src/node.c b/src/node.c index 6528fb3e..b4eda15a 100644 --- a/src/node.c +++ b/src/node.c @@ -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; diff --git a/src/page-ops.c b/src/page-ops.c index 81cba636..53e103d0 100644 --- a/src/page-ops.c +++ b/src/page-ops.c @@ -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: diff --git a/src/page-ops.h b/src/page-ops.h index 3d370dfe..29efa045 100644 --- a/src/page-ops.h +++ b/src/page-ops.h @@ -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, diff --git a/src/tree-ops.c b/src/tree-ops.c index 61429d82..998defe1 100644 --- a/src/tree-ops.c +++ b/src/tree-ops.c @@ -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);