diff --git a/lfs.c b/lfs.c index ac2f301a..3c233d63 100644 --- a/lfs.c +++ b/lfs.c @@ -4297,7 +4297,7 @@ static int lfsr_btree_commit_(lfs_t *lfs, lfsr_btree_t *btree, // erased bytes? note that the btree trunk field prevents this from // interacting with other references to the rbyd lfsr_rbyd_t rbyd_ = rbyd; - int err = lfsr_rbyd_appendattrs(lfs, &rbyd_, rid, -1, -1, + int err = lfsr_rbyd_commit(lfs, &rbyd_, rid, attrs, attr_count); if (err) { if (err == LFS_ERR_RANGE || err == LFS_ERR_CORRUPT) { @@ -4306,14 +4306,6 @@ static int lfsr_btree_commit_(lfs_t *lfs, lfsr_btree_t *btree, return err; } - err = lfsr_rbyd_appendcksum(lfs, &rbyd_); - if (err) { - if (err == LFS_ERR_RANGE || err == LFS_ERR_CORRUPT) { - goto compact; - } - return err; - } - goto recurse; compact:; @@ -4463,7 +4455,7 @@ static int lfsr_btree_commit_(lfs_t *lfs, lfsr_btree_t *btree, // append any pending attrs, it's up to upper // layers to make sure these always fit - err = lfsr_rbyd_appendattrs(lfs, &rbyd_, rid, -1, -1, + err = lfsr_rbyd_commit(lfs, &rbyd_, rid, attrs, attr_count); if (err) { LFS_ASSERT(err != LFS_ERR_RANGE); @@ -4474,17 +4466,6 @@ static int lfsr_btree_commit_(lfs_t *lfs, lfsr_btree_t *btree, return err; } - // finalize commit - err = lfsr_rbyd_appendcksum(lfs, &rbyd_); - if (err) { - LFS_ASSERT(err != LFS_ERR_RANGE); - // bad prog? try another block - if (err == LFS_ERR_CORRUPT) { - goto compact_relocate; - } - return err; - } - goto recurse; split:; @@ -4693,7 +4674,7 @@ static int lfsr_btree_commit_(lfs_t *lfs, lfsr_btree_t *btree, // append any pending attrs, it's up to upper // layers to make sure these always fit - err = lfsr_rbyd_appendattrs(lfs, &rbyd_, rid, -1, -1, + err = lfsr_rbyd_commit(lfs, &rbyd_, rid, attrs, attr_count); if (err) { LFS_ASSERT(err != LFS_ERR_RANGE); @@ -4704,17 +4685,6 @@ static int lfsr_btree_commit_(lfs_t *lfs, lfsr_btree_t *btree, return err; } - // finalize the commit - err = lfsr_rbyd_appendcksum(lfs, &rbyd_); - if (err) { - LFS_ASSERT(err != LFS_ERR_RANGE); - // bad prog? try another block - if (err == LFS_ERR_CORRUPT) { - goto merge_relocate; - } - return err; - } - // we must have a parent at this point, but is our parent the root // and is the root degenerate? LFS_ASSERT(lfsr_rbyd_trunk(&parent)); @@ -10523,7 +10493,7 @@ relocate:; } } - err = lfsr_rbyd_appendattrs(lfs, &rbyd, bid, -1, -1, + err = lfsr_rbyd_commit(lfs, &rbyd, bid, attrs, attr_count); if (err) { LFS_ASSERT(err != LFS_ERR_RANGE); @@ -10534,16 +10504,6 @@ relocate:; return err; } - err = lfsr_rbyd_appendcksum(lfs, &rbyd); - if (err) { - LFS_ASSERT(err != LFS_ERR_RANGE); - // bad prog? try another block - if (err == LFS_ERR_CORRUPT) { - goto relocate; - } - return err; - } - file->bshrub.u.btree = rbyd; return 0; }