Dropped attr-list from lfsr_mdir/rbyd_compact
Since we don't need this for bshrub/bsprout negotiation, we might as
well drop it to keep concerns separate.
code stack
before: 32980 3008
after: 32964 (+0.0%) 2984 (-0.5%)
This commit is contained in:
@@ -3393,11 +3393,11 @@ done:;
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int lfsr_rbyd_compact(lfs_t *lfs, lfsr_rbyd_t *rbyd_,
|
static int lfsr_rbyd_compact(lfs_t *lfs, lfsr_rbyd_t *rbyd_,
|
||||||
const lfsr_rbyd_t *rbyd,
|
lfsr_srid_t start_rid, lfsr_srid_t end_rid,
|
||||||
const lfsr_attr_t *attrs, lfs_size_t attr_count) {
|
const lfsr_rbyd_t *rbyd) {
|
||||||
// append rbyd
|
// append rbyd
|
||||||
int err = lfsr_rbyd_appendcompactrbyd(lfs, rbyd_, false,
|
int err = lfsr_rbyd_appendcompactrbyd(lfs, rbyd_, false,
|
||||||
-1, -1, rbyd);
|
start_rid, end_rid, rbyd);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -3408,19 +3408,6 @@ static int lfsr_rbyd_compact(lfs_t *lfs, lfsr_rbyd_t *rbyd_,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
// append a commit
|
|
||||||
err = lfsr_rbyd_appendattrs(lfs, rbyd_, -1, -1,
|
|
||||||
attrs, attr_count);
|
|
||||||
if (err) {
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
// append a cksum, finalizing the commit
|
|
||||||
err = lfsr_rbyd_appendcksum(lfs, rbyd_);
|
|
||||||
if (err) {
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4229,14 +4216,8 @@ static lfs_ssize_t lfsr_btree_commit_(lfs_t *lfs,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// try to compact
|
// try to compact
|
||||||
err = lfsr_rbyd_appendcompactrbyd(lfs, &rbyd_, false,
|
err = lfsr_rbyd_compact(lfs, &rbyd_, -1, -1,
|
||||||
-1, -1, &rbyd);
|
&rbyd);
|
||||||
if (err) {
|
|
||||||
LFS_ASSERT(err != LFS_ERR_RANGE);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = lfsr_rbyd_appendcompaction(lfs, &rbyd_, false, 0);
|
|
||||||
if (err) {
|
if (err) {
|
||||||
LFS_ASSERT(err != LFS_ERR_RANGE);
|
LFS_ASSERT(err != LFS_ERR_RANGE);
|
||||||
return err;
|
return err;
|
||||||
@@ -4277,14 +4258,8 @@ static lfs_ssize_t lfsr_btree_commit_(lfs_t *lfs,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// copy over tags < split_rid
|
// copy over tags < split_rid
|
||||||
err = lfsr_rbyd_appendcompactrbyd(lfs, &rbyd_, false,
|
err = lfsr_rbyd_compact(lfs, &rbyd_, -1, split_rid,
|
||||||
-1, split_rid, &rbyd);
|
&rbyd);
|
||||||
if (err) {
|
|
||||||
LFS_ASSERT(err != LFS_ERR_RANGE);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = lfsr_rbyd_appendcompaction(lfs, &rbyd_, false, 0);
|
|
||||||
if (err) {
|
if (err) {
|
||||||
LFS_ASSERT(err != LFS_ERR_RANGE);
|
LFS_ASSERT(err != LFS_ERR_RANGE);
|
||||||
return err;
|
return err;
|
||||||
@@ -4309,14 +4284,8 @@ static lfs_ssize_t lfsr_btree_commit_(lfs_t *lfs,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// copy over tags >= split_rid
|
// copy over tags >= split_rid
|
||||||
err = lfsr_rbyd_appendcompactrbyd(lfs, &sibling, false,
|
err = lfsr_rbyd_compact(lfs, &sibling, split_rid, -1,
|
||||||
split_rid, -1, &rbyd);
|
&rbyd);
|
||||||
if (err) {
|
|
||||||
LFS_ASSERT(err != LFS_ERR_RANGE);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = lfsr_rbyd_appendcompaction(lfs, &sibling, false, 0);
|
|
||||||
if (err) {
|
if (err) {
|
||||||
LFS_ASSERT(err != LFS_ERR_RANGE);
|
LFS_ASSERT(err != LFS_ERR_RANGE);
|
||||||
return err;
|
return err;
|
||||||
@@ -4923,13 +4892,24 @@ evict:;
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = lfsr_rbyd_compact(lfs, &bshrub->rbyd_,
|
err = lfsr_rbyd_compact(lfs, &bshrub->rbyd_, -1, -1,
|
||||||
&bshrub->rbyd, attrs, attr_count);
|
&bshrub->rbyd);
|
||||||
if (err) {
|
if (err) {
|
||||||
LFS_ASSERT(err != LFS_ERR_RANGE);
|
LFS_ASSERT(err != LFS_ERR_RANGE);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = lfsr_rbyd_appendattrs(lfs, &bshrub->rbyd_, -1, -1,
|
||||||
|
attrs, attr_count);
|
||||||
|
if (err) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
err = lfsr_rbyd_appendcksum(lfs, &bshrub->rbyd_);
|
||||||
|
if (err) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
bshrub->rbyd = bshrub->rbyd_;
|
bshrub->rbyd = bshrub->rbyd_;
|
||||||
LFS_ASSERT(bshrub->rbyd.trunk != 0);
|
LFS_ASSERT(bshrub->rbyd.trunk != 0);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -5846,11 +5826,9 @@ static int lfsr_mdir_commit__(lfs_t *lfs, lfsr_mdir_t *mdir,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO should lfsr_mdir_compact__ also commit the attrs?
|
|
||||||
static int lfsr_mdir_compact__(lfs_t *lfs, lfsr_mdir_t *mdir_,
|
static int lfsr_mdir_compact__(lfs_t *lfs, lfsr_mdir_t *mdir_,
|
||||||
lfsr_srid_t start_rid, lfsr_srid_t end_rid,
|
lfsr_srid_t start_rid, lfsr_srid_t end_rid,
|
||||||
const lfsr_mdir_t *mdir,
|
const lfsr_mdir_t *mdir) {
|
||||||
const lfsr_attr_t *attrs, lfs_size_t attr_count) {
|
|
||||||
// this is basically the same as lfsr_rbyd_compact, but with special
|
// this is basically the same as lfsr_rbyd_compact, but with special
|
||||||
// handling for inlined trees.
|
// handling for inlined trees.
|
||||||
//
|
//
|
||||||
@@ -6073,17 +6051,6 @@ static int lfsr_mdir_compact__(lfs_t *lfs, lfsr_mdir_t *mdir_,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// once we've compacted, finish our commit
|
|
||||||
//
|
|
||||||
// upper layers should make sure this can't fail by limiting the
|
|
||||||
// maximum commit size
|
|
||||||
err = lfsr_mdir_commit__(lfs, mdir_, start_rid, end_rid,
|
|
||||||
attrs, attr_count);
|
|
||||||
if (err) {
|
|
||||||
LFS_ASSERT(err != LFS_ERR_RANGE);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6128,7 +6095,18 @@ compact:;
|
|||||||
|
|
||||||
// compact our mdir
|
// compact our mdir
|
||||||
err = lfsr_mdir_compact__(lfs, &mdir_, start_rid, end_rid,
|
err = lfsr_mdir_compact__(lfs, &mdir_, start_rid, end_rid,
|
||||||
mdir, attrs, attr_count);
|
mdir);
|
||||||
|
if (err) {
|
||||||
|
LFS_ASSERT(err != LFS_ERR_RANGE);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
// now try to commit again
|
||||||
|
//
|
||||||
|
// upper layers should make sure this can't fail by limiting the
|
||||||
|
// maximum commit size
|
||||||
|
err = lfsr_mdir_commit__(lfs, &mdir_, start_rid, end_rid,
|
||||||
|
attrs, attr_count);
|
||||||
if (err) {
|
if (err) {
|
||||||
LFS_ASSERT(err != LFS_ERR_RANGE);
|
LFS_ASSERT(err != LFS_ERR_RANGE);
|
||||||
return err;
|
return err;
|
||||||
@@ -6599,7 +6577,14 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = lfsr_mdir_compact__(lfs, &mdir_, 0, split_rid,
|
err = lfsr_mdir_compact__(lfs, &mdir_, 0, split_rid,
|
||||||
mdir, attrs, attr_count);
|
mdir);
|
||||||
|
if (err) {
|
||||||
|
LFS_ASSERT(err != LFS_ERR_RANGE);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
err = lfsr_mdir_commit__(lfs, &mdir_, 0, split_rid,
|
||||||
|
attrs, attr_count);
|
||||||
if (err) {
|
if (err) {
|
||||||
LFS_ASSERT(err != LFS_ERR_RANGE);
|
LFS_ASSERT(err != LFS_ERR_RANGE);
|
||||||
return err;
|
return err;
|
||||||
@@ -6612,7 +6597,14 @@ static int lfsr_mdir_commit(lfs_t *lfs, lfsr_mdir_t *mdir,
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = lfsr_mdir_compact__(lfs, &msibling_, split_rid, -1,
|
err = lfsr_mdir_compact__(lfs, &msibling_, split_rid, -1,
|
||||||
mdir, attrs, attr_count);
|
mdir);
|
||||||
|
if (err) {
|
||||||
|
LFS_ASSERT(err != LFS_ERR_RANGE);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
err = lfsr_mdir_commit__(lfs, &msibling_, split_rid, -1,
|
||||||
|
attrs, attr_count);
|
||||||
if (err) {
|
if (err) {
|
||||||
LFS_ASSERT(err != LFS_ERR_RANGE);
|
LFS_ASSERT(err != LFS_ERR_RANGE);
|
||||||
return err;
|
return err;
|
||||||
|
|||||||
Reference in New Issue
Block a user