mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-02-23 00:00:02 +03:00
add "bkey-type" option to list command
Only bkeys of the specified type will be printed. Signed-off-by: Thomas Bertschinger <tahbertschinger@gmail.com>
This commit is contained in:
parent
ba0c99ecd9
commit
0671ddadd8
@ -106,6 +106,34 @@ impl FromStr for c::btree_id {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct InvalidBkeyType;
|
||||||
|
|
||||||
|
impl fmt::Display for InvalidBkeyType {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
write!(f, "invalid bkey type")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Error for InvalidBkeyType {
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FromStr for c::bch_bkey_type {
|
||||||
|
type Err = InvalidBkeyType;
|
||||||
|
|
||||||
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
|
let s = CString::new(s).unwrap();
|
||||||
|
let p = s.as_ptr();
|
||||||
|
|
||||||
|
let v = unsafe {c::match_string(c::bch2_bkey_types[..].as_ptr(), (-(1 as isize)) as usize, p)};
|
||||||
|
if v >= 0 {
|
||||||
|
Ok(unsafe { std::mem::transmute(v) })
|
||||||
|
} else {
|
||||||
|
Err(InvalidBkeyType)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl c::printbuf {
|
impl c::printbuf {
|
||||||
fn new() -> c::printbuf {
|
fn new() -> c::printbuf {
|
||||||
let mut buf: c::printbuf = Default::default();
|
let mut buf: c::printbuf = Default::default();
|
||||||
|
@ -21,7 +21,18 @@ fn list_keys(fs: &Fs, opt: Cli) -> anyhow::Result<()> {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
match opt.bkey_type {
|
||||||
|
Some(ty) => {
|
||||||
|
if k.k.type_ != ty as u8 {
|
||||||
|
iter.advance();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
};
|
||||||
|
|
||||||
println!("{}", k.to_text(fs));
|
println!("{}", k.to_text(fs));
|
||||||
|
|
||||||
iter.advance();
|
iter.advance();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,6 +108,10 @@ pub struct Cli {
|
|||||||
#[arg(short, long, default_value_t=bcachefs::btree_id::BTREE_ID_extents)]
|
#[arg(short, long, default_value_t=bcachefs::btree_id::BTREE_ID_extents)]
|
||||||
btree: bcachefs::btree_id,
|
btree: bcachefs::btree_id,
|
||||||
|
|
||||||
|
/// Bkey type to list
|
||||||
|
#[arg(short='k', long)]
|
||||||
|
bkey_type: Option<bcachefs::bch_bkey_type>,
|
||||||
|
|
||||||
/// Btree depth to descend to (0 == leaves)
|
/// Btree depth to descend to (0 == leaves)
|
||||||
#[arg(short, long, default_value_t=0)]
|
#[arg(short, long, default_value_t=0)]
|
||||||
level: u32,
|
level: u32,
|
||||||
|
Loading…
Reference in New Issue
Block a user