Renamed bscratch -> bctx
This commit is contained in:
@@ -5331,11 +5331,11 @@ static int lfsr_btree_parent(lfs_t *lfs, const lfsr_btree_t *btree,
|
|||||||
|
|
||||||
|
|
||||||
// extra state needed for non-terminating lfsr_btree_commit__ calls
|
// extra state needed for non-terminating lfsr_btree_commit__ calls
|
||||||
typedef struct lfsr_bscratch {
|
typedef struct lfsr_bctx {
|
||||||
lfsr_rattr_t rattrs[4];
|
lfsr_rattr_t rattrs[4];
|
||||||
lfsr_data_t split_data;
|
lfsr_data_t split_data;
|
||||||
lfsr_rbyd_t branches[2];
|
lfsr_rbyd_t branches[2];
|
||||||
} lfsr_bscratch_t;
|
} lfsr_bctx_t;
|
||||||
|
|
||||||
// core btree algorithm
|
// core btree algorithm
|
||||||
//
|
//
|
||||||
@@ -5344,7 +5344,7 @@ typedef struct lfsr_bscratch {
|
|||||||
// 2. we have a shrub root
|
// 2. we have a shrub root
|
||||||
//
|
//
|
||||||
static int lfsr_btree_commit__(lfs_t *lfs, lfsr_btree_t *btree,
|
static int lfsr_btree_commit__(lfs_t *lfs, lfsr_btree_t *btree,
|
||||||
lfsr_bscratch_t *bscratch,
|
lfsr_bctx_t *bctx,
|
||||||
lfsr_bid_t *bid, lfsr_rbyd_t *rbyd, lfsr_srid_t rid,
|
lfsr_bid_t *bid, lfsr_rbyd_t *rbyd, lfsr_srid_t rid,
|
||||||
const lfsr_rattr_t **rattrs, lfs_size_t *rattr_count) {
|
const lfsr_rattr_t **rattrs, lfs_size_t *rattr_count) {
|
||||||
lfsr_bid_t bid_ = *bid;
|
lfsr_bid_t bid_ = *bid;
|
||||||
@@ -5711,7 +5711,7 @@ static int lfsr_btree_commit__(lfs_t *lfs, lfsr_btree_t *btree,
|
|||||||
// they introduce a new name!
|
// they introduce a new name!
|
||||||
lfsr_tag_t split_tag;
|
lfsr_tag_t split_tag;
|
||||||
err = lfsr_rbyd_lookupnext(lfs, &sibling, 0, LFSR_TAG_NAME,
|
err = lfsr_rbyd_lookupnext(lfs, &sibling, 0, LFSR_TAG_NAME,
|
||||||
NULL, &split_tag, NULL, &bscratch->split_data);
|
NULL, &split_tag, NULL, &bctx->split_data);
|
||||||
if (err) {
|
if (err) {
|
||||||
LFS_ASSERT(err != LFS_ERR_NOENT);
|
LFS_ASSERT(err != LFS_ERR_NOENT);
|
||||||
return err;
|
return err;
|
||||||
@@ -5723,42 +5723,42 @@ static int lfsr_btree_commit__(lfs_t *lfs, lfsr_btree_t *btree,
|
|||||||
rattr_count_ = 0;
|
rattr_count_ = 0;
|
||||||
// new root?
|
// new root?
|
||||||
if (!lfsr_rbyd_trunk(&parent)) {
|
if (!lfsr_rbyd_trunk(&parent)) {
|
||||||
bscratch->branches[0] = rbyd__;
|
bctx->branches[0] = rbyd__;
|
||||||
bscratch->rattrs[rattr_count_++] = LFSR_RATTR(
|
bctx->rattrs[rattr_count_++] = LFSR_RATTR(
|
||||||
LFSR_TAG_BRANCH, +rbyd__.weight,
|
LFSR_TAG_BRANCH, +rbyd__.weight,
|
||||||
&bscratch->branches[0], LFSR_BRANCH_DSIZE);
|
&bctx->branches[0], LFSR_BRANCH_DSIZE);
|
||||||
bscratch->branches[1] = sibling;
|
bctx->branches[1] = sibling;
|
||||||
bscratch->rattrs[rattr_count_++] = LFSR_RATTR(
|
bctx->rattrs[rattr_count_++] = LFSR_RATTR(
|
||||||
LFSR_TAG_BRANCH, +sibling.weight,
|
LFSR_TAG_BRANCH, +sibling.weight,
|
||||||
&bscratch->branches[1], LFSR_BRANCH_DSIZE);
|
&bctx->branches[1], LFSR_BRANCH_DSIZE);
|
||||||
if (lfsr_tag_suptype(split_tag) == LFSR_TAG_NAME) {
|
if (lfsr_tag_suptype(split_tag) == LFSR_TAG_NAME) {
|
||||||
bscratch->rattrs[rattr_count_++] = LFSR_RATTR_DATA(
|
bctx->rattrs[rattr_count_++] = LFSR_RATTR_DATA(
|
||||||
LFSR_TAG_NAME, 0,
|
LFSR_TAG_NAME, 0,
|
||||||
&bscratch->split_data);
|
&bctx->split_data);
|
||||||
}
|
}
|
||||||
// split root?
|
// split root?
|
||||||
} else {
|
} else {
|
||||||
bid_ -= pid - (rbyd_.weight-1);
|
bid_ -= pid - (rbyd_.weight-1);
|
||||||
bscratch->branches[0] = rbyd__;
|
bctx->branches[0] = rbyd__;
|
||||||
bscratch->rattrs[rattr_count_++] = LFSR_RATTR(
|
bctx->rattrs[rattr_count_++] = LFSR_RATTR(
|
||||||
LFSR_TAG_BRANCH, 0,
|
LFSR_TAG_BRANCH, 0,
|
||||||
&bscratch->branches[0], LFSR_BRANCH_DSIZE);
|
&bctx->branches[0], LFSR_BRANCH_DSIZE);
|
||||||
if (rbyd__.weight != rbyd_.weight) {
|
if (rbyd__.weight != rbyd_.weight) {
|
||||||
bscratch->rattrs[rattr_count_++] = LFSR_RATTR(
|
bctx->rattrs[rattr_count_++] = LFSR_RATTR(
|
||||||
LFSR_TAG_GROW, -rbyd_.weight + rbyd__.weight,
|
LFSR_TAG_GROW, -rbyd_.weight + rbyd__.weight,
|
||||||
NULL, 0);
|
NULL, 0);
|
||||||
}
|
}
|
||||||
bscratch->branches[1] = sibling;
|
bctx->branches[1] = sibling;
|
||||||
bscratch->rattrs[rattr_count_++] = LFSR_RATTR(
|
bctx->rattrs[rattr_count_++] = LFSR_RATTR(
|
||||||
LFSR_TAG_BRANCH, +sibling.weight,
|
LFSR_TAG_BRANCH, +sibling.weight,
|
||||||
&bscratch->branches[1], LFSR_BRANCH_DSIZE);
|
&bctx->branches[1], LFSR_BRANCH_DSIZE);
|
||||||
if (lfsr_tag_suptype(split_tag) == LFSR_TAG_NAME) {
|
if (lfsr_tag_suptype(split_tag) == LFSR_TAG_NAME) {
|
||||||
bscratch->rattrs[rattr_count_++] = LFSR_RATTR_DATA(
|
bctx->rattrs[rattr_count_++] = LFSR_RATTR_DATA(
|
||||||
LFSR_TAG_NAME, 0,
|
LFSR_TAG_NAME, 0,
|
||||||
&bscratch->split_data);
|
&bctx->split_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rattrs_ = bscratch->rattrs;
|
rattrs_ = bctx->rattrs;
|
||||||
|
|
||||||
rbyd_ = parent;
|
rbyd_ = parent;
|
||||||
rid_ = pid;
|
rid_ = pid;
|
||||||
@@ -5830,18 +5830,18 @@ static int lfsr_btree_commit__(lfs_t *lfs, lfsr_btree_t *btree,
|
|||||||
LFS_ASSERT(rbyd__.weight > 0);
|
LFS_ASSERT(rbyd__.weight > 0);
|
||||||
rattr_count_ = 0;
|
rattr_count_ = 0;
|
||||||
bid_ -= pid - (rbyd_.weight-1);
|
bid_ -= pid - (rbyd_.weight-1);
|
||||||
bscratch->rattrs[rattr_count_++] = LFSR_RATTR(
|
bctx->rattrs[rattr_count_++] = LFSR_RATTR(
|
||||||
LFSR_TAG_RM, -sibling.weight, NULL, 0);
|
LFSR_TAG_RM, -sibling.weight, NULL, 0);
|
||||||
bscratch->branches[0] = rbyd__;
|
bctx->branches[0] = rbyd__;
|
||||||
bscratch->rattrs[rattr_count_++] = LFSR_RATTR(
|
bctx->rattrs[rattr_count_++] = LFSR_RATTR(
|
||||||
LFSR_TAG_BRANCH, 0,
|
LFSR_TAG_BRANCH, 0,
|
||||||
&bscratch->branches[0], LFSR_BRANCH_DSIZE);
|
&bctx->branches[0], LFSR_BRANCH_DSIZE);
|
||||||
if (rbyd__.weight != rbyd_.weight) {
|
if (rbyd__.weight != rbyd_.weight) {
|
||||||
bscratch->rattrs[rattr_count_++] = LFSR_RATTR(
|
bctx->rattrs[rattr_count_++] = LFSR_RATTR(
|
||||||
LFSR_TAG_GROW, -rbyd_.weight + rbyd__.weight,
|
LFSR_TAG_GROW, -rbyd_.weight + rbyd__.weight,
|
||||||
NULL, 0);
|
NULL, 0);
|
||||||
}
|
}
|
||||||
rattrs_ = bscratch->rattrs;
|
rattrs_ = bctx->rattrs;
|
||||||
|
|
||||||
rbyd_ = parent;
|
rbyd_ = parent;
|
||||||
rid_ = pid + sibling.weight;
|
rid_ = pid + sibling.weight;
|
||||||
@@ -5870,20 +5870,20 @@ static int lfsr_btree_commit__(lfs_t *lfs, lfsr_btree_t *btree,
|
|||||||
rattr_count_ = 0;
|
rattr_count_ = 0;
|
||||||
bid_ -= pid - (rbyd_.weight-1);
|
bid_ -= pid - (rbyd_.weight-1);
|
||||||
if (rbyd__.weight == 0) {
|
if (rbyd__.weight == 0) {
|
||||||
bscratch->rattrs[rattr_count_++] = LFSR_RATTR(
|
bctx->rattrs[rattr_count_++] = LFSR_RATTR(
|
||||||
LFSR_TAG_RM, -rbyd_.weight, NULL, 0);
|
LFSR_TAG_RM, -rbyd_.weight, NULL, 0);
|
||||||
} else {
|
} else {
|
||||||
bscratch->branches[0] = rbyd__;
|
bctx->branches[0] = rbyd__;
|
||||||
bscratch->rattrs[rattr_count_++] = LFSR_RATTR(
|
bctx->rattrs[rattr_count_++] = LFSR_RATTR(
|
||||||
LFSR_TAG_BRANCH, 0,
|
LFSR_TAG_BRANCH, 0,
|
||||||
&bscratch->branches[0], LFSR_BRANCH_DSIZE);
|
&bctx->branches[0], LFSR_BRANCH_DSIZE);
|
||||||
if (rbyd__.weight != rbyd_.weight) {
|
if (rbyd__.weight != rbyd_.weight) {
|
||||||
bscratch->rattrs[rattr_count_++] = LFSR_RATTR(
|
bctx->rattrs[rattr_count_++] = LFSR_RATTR(
|
||||||
LFSR_TAG_GROW, -rbyd_.weight + rbyd__.weight,
|
LFSR_TAG_GROW, -rbyd_.weight + rbyd__.weight,
|
||||||
NULL, 0);
|
NULL, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rattrs_ = bscratch->rattrs;
|
rattrs_ = bctx->rattrs;
|
||||||
|
|
||||||
rbyd_ = parent;
|
rbyd_ = parent;
|
||||||
rid_ = pid;
|
rid_ = pid;
|
||||||
@@ -5896,8 +5896,8 @@ static int lfsr_btree_commit_(lfs_t *lfs, lfsr_btree_t *btree,
|
|||||||
lfsr_bid_t bid, lfsr_rbyd_t *rbyd, lfsr_srid_t rid,
|
lfsr_bid_t bid, lfsr_rbyd_t *rbyd, lfsr_srid_t rid,
|
||||||
const lfsr_rattr_t *rattrs, lfs_size_t rattr_count) {
|
const lfsr_rattr_t *rattrs, lfs_size_t rattr_count) {
|
||||||
// try to commit to the btree
|
// try to commit to the btree
|
||||||
lfsr_bscratch_t bscratch;
|
lfsr_bctx_t bctx;
|
||||||
int err = lfsr_btree_commit__(lfs, btree, &bscratch,
|
int err = lfsr_btree_commit__(lfs, btree, &bctx,
|
||||||
&bid, rbyd, rid, &rattrs, &rattr_count);
|
&bid, rbyd, rid, &rattrs, &rattr_count);
|
||||||
if (err && err != LFS_ERR_RANGE) {
|
if (err && err != LFS_ERR_RANGE) {
|
||||||
return err;
|
return err;
|
||||||
@@ -6427,8 +6427,8 @@ static int lfsr_bshrub_commit_(lfs_t *lfs, lfsr_bshrub_t *bshrub,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// try to commit to the btree
|
// try to commit to the btree
|
||||||
lfsr_bscratch_t bscratch;
|
lfsr_bctx_t bctx;
|
||||||
int err = lfsr_btree_commit__(lfs, &bshrub->shrub, &bscratch,
|
int err = lfsr_btree_commit__(lfs, &bshrub->shrub, &bctx,
|
||||||
&bid, rbyd, rid, &rattrs, &rattr_count);
|
&bid, rbyd, rid, &rattrs, &rattr_count);
|
||||||
if (err && err != LFS_ERR_RANGE) {
|
if (err && err != LFS_ERR_RANGE) {
|
||||||
return err;
|
return err;
|
||||||
|
|||||||
Reference in New Issue
Block a user