From 90ba24787fba76aa5fb1b9546adb8bf7741126ff Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Mon, 1 Dec 2025 15:17:09 -0600 Subject: [PATCH] rattrs: Attempted to merge mtree split commits The idea here was to merge mtree split commits to try to minimize redundant logic that only differs in whether or not we need to create the initial mtree weight. Surprisingly, this backfired, adding more code than it saved. I guess I underestimated how effective the compiler is at deduplicating these two paths of logic: code stack ctx before: 35316 2176 660 after: 35324 (+0.0%) 2176 (+0.0%) 660 (+0.0%) code stack ctx gbmap before: 38168 2192 772 gbmap after: 38172 (+0.0%) 2192 (+0.0%) 772 (+0.0%) --- lfs3.c | 83 +++++++++++++++++++++++++--------------------------------- 1 file changed, 35 insertions(+), 48 deletions(-) diff --git a/lfs3.c b/lfs3.c index 63111ee8..b5b39d11 100644 --- a/lfs3.c +++ b/lfs3.c @@ -9143,37 +9143,28 @@ static int lfs3_mdir_commit_(lfs3_t *lfs3, lfs3_mdir_t *mdir, // new mtree? if (lfs3->mtree.r.weight == 0) { lfs3_btree_init(&mtree_); - - err = lfs3_mtree_commit(lfs3, &mtree_, - 0, LFS3_RATTRS( - LFS3_RATTR(3, LFS3_TAG_MDIR, -2, LFS3_FROM_MPTR), - LFS3_RATTR_WEIGHT(+(1 << lfs3->mbits)), - LFS3_RATTR_ARG(mdir_[0].r.blocks), - LFS3_RATTR(3, LFS3_TAG_MNAME, -2, LFS3_FROM_CAT, 1), - LFS3_RATTR_WEIGHT(+(1 << lfs3->mbits)), - LFS3_RATTR_ARG(&split_name), - LFS3_RATTR(2, LFS3_TAG_MDIR, 0, LFS3_FROM_MPTR), - LFS3_RATTR_ARG(mdir_[1].r.blocks), - LFS3_RATTR_NULL)); - if (err) { - goto failed; - } + } // update our mtree - } else { - err = lfs3_mtree_commit(lfs3, &mtree_, - lfs3_mbid(lfs3, mdir->mid), LFS3_RATTRS( - LFS3_RATTR(2, LFS3_TAG_MDIR, 0, LFS3_FROM_MPTR), - LFS3_RATTR_ARG(mdir_[0].r.blocks), - LFS3_RATTR(3, LFS3_TAG_MNAME, -2, LFS3_FROM_CAT, 1), - LFS3_RATTR_WEIGHT(+(1 << lfs3->mbits)), - LFS3_RATTR_ARG(&split_name), - LFS3_RATTR(2, LFS3_TAG_MDIR, 0, LFS3_FROM_MPTR), - LFS3_RATTR_ARG(mdir_[1].r.blocks), - LFS3_RATTR_NULL)); - if (err) { - goto failed; - } + err = lfs3_mtree_commit(lfs3, &mtree_, + (lfs3->mtree.r.weight == 0) + ? 0 + : lfs3_mbid(lfs3, mdir->mid), + LFS3_RATTRS( + LFS3_RATTR(3, LFS3_TAG_MDIR, -2, LFS3_FROM_MPTR), + LFS3_RATTR_WEIGHT( + (lfs3->mtree.r.weight == 0) + ? +(1 << lfs3->mbits) + : 0), + LFS3_RATTR_ARG(mdir_[0].r.blocks), + LFS3_RATTR(3, LFS3_TAG_MNAME, -2, LFS3_FROM_CAT, 1), + LFS3_RATTR_WEIGHT(+(1 << lfs3->mbits)), + LFS3_RATTR_ARG(&split_name), + LFS3_RATTR(2, LFS3_TAG_MDIR, 0, LFS3_FROM_MPTR), + LFS3_RATTR_ARG(mdir_[1].r.blocks), + LFS3_RATTR_NULL)); + if (err) { + goto failed; } // need to drop? @@ -9219,27 +9210,23 @@ static int lfs3_mdir_commit_(lfs3_t *lfs3, lfs3_mdir_t *mdir, // new mtree? if (lfs3->mtree.r.weight == 0) { lfs3_btree_init(&mtree_); - - err = lfs3_mtree_commit(lfs3, &mtree_, - 0, LFS3_RATTRS( - LFS3_RATTR(3, LFS3_TAG_MDIR, -2, LFS3_FROM_MPTR), - LFS3_RATTR_WEIGHT(+(1 << lfs3->mbits)), - LFS3_RATTR_ARG(mdir_[0].r.blocks), - LFS3_RATTR_NULL)); - if (err) { - goto failed; - } + } // update our mtree - } else { - err = lfs3_mtree_commit(lfs3, &mtree_, - lfs3_mbid(lfs3, mdir->mid), LFS3_RATTRS( - LFS3_RATTR(2, LFS3_TAG_MDIR, 0, LFS3_FROM_MPTR), - LFS3_RATTR_ARG(mdir_[0].r.blocks), - LFS3_RATTR_NULL)); - if (err) { - goto failed; - } + err = lfs3_mtree_commit(lfs3, &mtree_, + (lfs3->mtree.r.weight == 0) + ? 0 + : lfs3_mbid(lfs3, mdir->mid), + LFS3_RATTRS( + LFS3_RATTR(3, LFS3_TAG_MDIR, -2, LFS3_FROM_MPTR), + LFS3_RATTR_WEIGHT( + (lfs3->mtree.r.weight == 0) + ? +(1 << lfs3->mbits) + : 0), + LFS3_RATTR_ARG(mdir_[0].r.blocks), + LFS3_RATTR_NULL)); + if (err) { + goto failed; } }