Limited bptr decoding to lfs_file_* functions

Bptrs really are a file concept, despite the name (bptr =>
block-pointer). Other bshrubs/btrees do not have bptrs.

Returning decoded bptrs from lfsr_bshrub_lookupnext and friends was a
bit of a hack to make bsprouts (single bptrs) work, but now that we
don't support bsprouts, we don't need this hack anymore.

To avoid code duplication, this does reroute mtree traversal through
lfsr_file_traverse_. Which is a bit weird, but not the worst thing this
codebase has ever done.

Code changes:

           code          stack          ctx
  before: 36492           2608          640
  after:  36460 (-0.1%)   2608 (+0.0%)  640 (+0.0%)
This commit is contained in:
Christopher Haster
2025-02-04 15:30:01 -06:00
parent 1259c170c4
commit b115ebbac0
2 changed files with 86 additions and 81 deletions
+4 -4
View File
@@ -189,7 +189,7 @@ code = '''
lfsr_bid_t bid;
lfsr_tag_t tag;
lfsr_bptr_t bptr;
int err = lfsr_bshrub_traverse(&lfs, &file.b, &bt,
int err = lfsr_file_traverse(&lfs, &file, &bt,
&bid, &tag, &bptr);
assert(!err || err == LFS_ERR_NOENT);
if (err == LFS_ERR_NOENT) {
@@ -329,7 +329,7 @@ code = '''
lfsr_bid_t bid;
lfsr_tag_t tag;
lfsr_bptr_t bptr;
int err = lfsr_bshrub_traverse(&lfs, &file.b, &bt,
int err = lfsr_file_traverse(&lfs, &file, &bt,
&bid, &tag, &bptr);
assert(!err || err == LFS_ERR_NOENT);
if (err == LFS_ERR_NOENT) {
@@ -587,7 +587,7 @@ code = '''
lfsr_bid_t bid;
lfsr_tag_t tag;
lfsr_bptr_t bptr;
int err = lfsr_bshrub_traverse(&lfs, &file.b, &bt,
int err = lfsr_file_traverse(&lfs, &file, &bt,
&bid, &tag, &bptr);
assert(!err || err == LFS_ERR_NOENT);
if (err == LFS_ERR_NOENT) {
@@ -742,7 +742,7 @@ code = '''
lfsr_bid_t bid;
lfsr_tag_t tag;
lfsr_bptr_t bptr;
int err = lfsr_bshrub_traverse(&lfs, &file.b, &bt,
int err = lfsr_file_traverse(&lfs, &file, &bt,
&bid, &tag, &bptr);
assert(!err || err == LFS_ERR_NOENT);
if (err == LFS_ERR_NOENT) {