t: Dropped const from btree/bshrub/mtree traverse functions

This could go either way, it's a case of the classic C strchr type
conundrum.

But unlike iteration, we're more likely to mutate things when doing a
full traversal, so requiring everything to be mutable makes a bit more
sense.

Note that even readonly operations, fetchck for example, need access to
a mutable rbyd struct.

No code changes:

           code          stack
  before: 35256           2680
  after:  35256 (+0.0%)   2680 (+0.0%)
This commit is contained in:
Christopher Haster
2024-07-04 02:23:36 -05:00
parent 3c7b462659
commit f783e6f519
2 changed files with 10 additions and 10 deletions
+9 -9
View File
@@ -4992,14 +4992,14 @@ typedef struct lfsr_btinfo {
union {
// ignore the mdir here, things get a bit simpler if we can
// alias mtinfo=btinfo
const lfsr_mdir_t *mdir;
const lfsr_rbyd_t *rbyd;
lfsr_mdir_t *mdir;
lfsr_rbyd_t *rbyd;
lfsr_data_t data;
lfsr_bptr_t bptr;
} u;
} lfsr_btinfo_t;
static int lfsr_btree_traverse_(lfs_t *lfs, const lfsr_btree_t *btree,
static int lfsr_btree_traverse_(lfs_t *lfs, lfsr_btree_t *btree,
lfsr_btraversal_t *bt,
lfsr_bid_t *bid_, lfsr_btinfo_t *btinfo) {
// explicitly traverse the root even if weight=0
@@ -5094,7 +5094,7 @@ static int lfsr_btree_traverse_(lfs_t *lfs, const lfsr_btree_t *btree,
}
}
static int lfsr_btree_traverse(lfs_t *lfs, const lfsr_btree_t *btree,
static int lfsr_btree_traverse(lfs_t *lfs, lfsr_btree_t *btree,
lfsr_btraversal_t *bt,
lfsr_bid_t *bid_, lfsr_btinfo_t *btinfo) {
return lfsr_btree_traverse_(lfs, btree, bt, bid_, btinfo);
@@ -5588,7 +5588,7 @@ static int lfsr_bshrub_lookupnext(lfs_t *lfs,
}
static int lfsr_bshrub_traverse(lfs_t *lfs,
const lfsr_mdir_t *mdir, const lfsr_bshrub_t *bshrub,
const lfsr_mdir_t *mdir, lfsr_bshrub_t *bshrub,
lfsr_btraversal_t *bt,
lfsr_bid_t *bid_, lfsr_btinfo_t *btinfo) {
// bnull/bsprout do nothing
@@ -8569,7 +8569,7 @@ static int lfsr_mtree_traverse(lfs_t *lfs, lfsr_mtraversal_t *mt,
// we also need to fetch to know if we need to compact
|| lfsr_t_iscompact(mt->o.o.flags))
&& mtinfo->tag == LFSR_TAG_BRANCH) {
err = lfsr_rbyd_fetchck(lfs, (lfsr_rbyd_t*)mtinfo->u.rbyd,
err = lfsr_rbyd_fetchck(lfs, mtinfo->u.rbyd,
mtinfo->u.rbyd->blocks[0], mtinfo->u.rbyd->trunk,
mtinfo->u.rbyd->cksum);
if (err) {
@@ -8638,7 +8638,7 @@ static int lfsr_mtree_gc(lfs_t *lfs, lfsr_mtraversal_t *mt,
? lfs->cfg->gc_compact_thresh
: lfs->cfg->block_size - lfs->cfg->block_size/8);
int err = lfsr_mdir_compact(lfs, (lfsr_mdir_t*)mtinfo->u.mdir);
int err = lfsr_mdir_compact(lfs, mtinfo->u.mdir);
if (err) {
return err;
}
@@ -8667,14 +8667,14 @@ static int lfsr_mtree_gc(lfs_t *lfs, lfsr_mtraversal_t *mt,
if (mt->o.o.state == LFSR_MTRAVERSAL_MTREE) {
int err = lfsr_btree_compact_(lfs, &mt->o.bshrub.u.btree,
// note we may be referencing the btree root here
mt->u.bt.bid, (lfsr_rbyd_t*)mtinfo->u.rbyd);
mt->u.bt.bid, mtinfo->u.rbyd);
if (err) {
return err;
}
} else {
int err = lfsr_bshrub_compact_(lfs, &mt->o.o.mdir, &mt->o.bshrub,
// note we may be referencing the btree root here
mt->u.bt.bid, (lfsr_rbyd_t*)mtinfo->u.rbyd);
mt->u.bt.bid, mtinfo->u.rbyd);
if (err) {
return err;
}
+1 -1
View File
@@ -615,7 +615,7 @@ typedef struct lfsr_dir {
typedef struct lfsr_btraversal {
lfsr_bid_t bid;
const lfsr_rbyd_t *branch;
lfsr_rbyd_t *branch;
lfsr_srid_t rid;
lfsr_rbyd_t rbyd;
} lfsr_btraversal_t;