From: Yingxin Cheng Date: Wed, 7 Apr 2021 07:34:19 +0000 (+0800) Subject: crimson/onode-staged-tree: implement staged::is_keys_one() X-Git-Tag: v17.1.0~2110^2~17 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c4b5e7fecde3b191cb4f19c7ae0cc0aaf82648f5;p=ceph.git crimson/onode-staged-tree: implement staged::is_keys_one() Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/stage.h b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/stage.h index e3897a9ce3bb..d9be080201b2 100644 --- a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/stage.h +++ b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/stage.h @@ -858,8 +858,20 @@ struct staged { static bool is_keys_one( const container_t& container) { // IN - // TODO - ceph_abort("not implemented"); + auto iter = iterator_t(container); + iter.seek_last(); + if (iter.index() == 0) { + if constexpr (IS_BOTTOM) { + // ok, there is only 1 key + return true; + } else { + auto nxt_container = iter.get_nxt_container(); + return NXT_STAGE_T::is_keys_one(nxt_container); + } + } else { + // more than 1 keys + return false; + } } template