From c14c9c6ed99ccf3b8d080e803ef931f191d07473 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Thu, 13 Nov 2025 15:10:12 -0500 Subject: [PATCH] cmd_list: support --level Signed-off-by: Kent Overstreet --- bch_bindgen/src/btree.rs | 27 +++++++++++++++++++++++++++ src/commands/list.rs | 3 ++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/bch_bindgen/src/btree.rs b/bch_bindgen/src/btree.rs index 442a999f..f3ae2c44 100644 --- a/bch_bindgen/src/btree.rs +++ b/bch_bindgen/src/btree.rs @@ -82,6 +82,33 @@ impl<'t> BtreeIter<'t> { } } + pub fn new_level( + trans: &'t BtreeTrans<'t>, + btree: c::btree_id, + pos: c::bpos, + level: u32, + flags: BtreeIterFlags, + ) -> BtreeIter<'t> { + unsafe { + let mut iter: MaybeUninit = MaybeUninit::uninit(); + + c::__bch2_trans_node_iter_init( + trans.raw, + iter.as_mut_ptr(), + btree, + pos, + 0, + level, + c::btree_iter_update_trigger_flags(flags.bits) + ); + + BtreeIter { + raw: iter.assume_init(), + trans: PhantomData, + } + } + } + pub fn peek_max<'i>(&'i mut self, end: c::bpos) -> Result>, bch_errcode> { unsafe { let k = c::bch2_btree_iter_peek_max(&mut self.raw, end); diff --git a/src/commands/list.rs b/src/commands/list.rs index fefe9a9f..737d4ca3 100644 --- a/src/commands/list.rs +++ b/src/commands/list.rs @@ -22,10 +22,11 @@ fn list_keys(fs: &Fs, opt: &Cli) -> anyhow::Result<()> { flags |= BtreeIterFlags::ALL_SNAPSHOTS; } - let mut iter = BtreeIter::new( + let mut iter = BtreeIter::new_level( &trans, opt.btree, opt.start, + opt.level, flags, );