diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2025-05-07 15:52:16 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2025-05-07 15:52:34 -0400 |
commit | 51315289f249fa5569a776eaa98c7ee557b61077 (patch) | |
tree | 1c0d07dcbb21c662bb9ecb688a8cbf9f3a750e17 /src | |
parent | 401a20ed984b7ccee689202d9372045d41271bcc (diff) |
list: Allow for lookups within a particular snapshot
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'src')
-rw-r--r-- | src/commands/list.rs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/commands/list.rs b/src/commands/list.rs index d9a1b460..0ffebd12 100644 --- a/src/commands/list.rs +++ b/src/commands/list.rs @@ -15,11 +15,18 @@ use crate::logging; fn list_keys(fs: &Fs, opt: &Cli) -> anyhow::Result<()> { let trans = BtreeTrans::new(fs); + + let mut flags = BtreeIterFlags::PREFETCH; + + if opt.start.snapshot == 0 { + flags |= BtreeIterFlags::ALL_SNAPSHOTS; + } + let mut iter = BtreeIter::new( &trans, opt.btree, opt.start, - BtreeIterFlags::ALL_SNAPSHOTS | BtreeIterFlags::PREFETCH, + flags, ); while let Some(k) = iter.peek_and_restart()? { @@ -121,6 +128,9 @@ enum Mode { /// List filesystem metadata in textual form #[derive(Parser, Debug)] pub struct Cli { + #[arg(short, long, default_value = "keys")] + mode: Mode, + /// Btree to list from #[arg(short, long, default_value_t=bcachefs::btree_id::BTREE_ID_extents)] btree: bcachefs::btree_id, @@ -141,9 +151,6 @@ pub struct Cli { #[arg(short, long, default_value = "SPOS_MAX")] end: bcachefs::bpos, - #[arg(short, long, default_value = "keys")] - mode: Mode, - /// Check (fsck) the filesystem first #[arg(short, long)] fsck: bool, |