From c4b5e7fecde3b191cb4f19c7ae0cc0aaf82648f5 Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Wed, 7 Apr 2021 15:34:19 +0800 Subject: [PATCH] crimson/onode-staged-tree: implement staged::is_keys_one() Signed-off-by: Yingxin Cheng --- .../onode_manager/staged-fltree/stages/stage.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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 e3897a9ce3bb0..d9be080201b20 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 -- 2.39.5