Done through suppressing clippy lints in the generated bindings module, adding some transmute type annotations, changing a vec to slice type.
Signed-off-by: Thomas Mühlbacher <[email protected]> --- bch_bindgen/src/bcachefs.rs | 5 ++ bch_bindgen/src/bkey.rs | 151 ++++++++++++++++++++++++++++-------- bch_bindgen/src/btree.rs | 1 + bch_bindgen/src/fs.rs | 2 +- bch_bindgen/src/lib.rs | 4 +- 5 files changed, 127 insertions(+), 36 deletions(-) diff --git a/bch_bindgen/src/bcachefs.rs b/bch_bindgen/src/bcachefs.rs index fbbac5ed..3fa0060e 100644 --- a/bch_bindgen/src/bcachefs.rs +++ b/bch_bindgen/src/bcachefs.rs @@ -1,3 +1,8 @@ +#![allow(clippy::missing_safety_doc)] +#![allow(clippy::too_many_arguments)] +#![allow(clippy::transmute_int_to_bool)] +#![allow(clippy::unnecessary_cast)] +#![allow(clippy::useless_transmute)] #![allow(non_upper_case_globals)] #![allow(non_camel_case_types)] #![allow(non_snake_case)] diff --git a/bch_bindgen/src/bkey.rs b/bch_bindgen/src/bkey.rs index af109167..9d38a0b9 100644 --- a/bch_bindgen/src/bkey.rs +++ b/bch_bindgen/src/bkey.rs @@ -1,9 +1,9 @@ #![allow(non_camel_case_types)] use crate::btree::BtreeIter; -use crate::c; use crate::fs::Fs; use crate::printbuf_to_formatter; +use crate::{bcachefs, c}; use std::fmt; use std::marker::PhantomData; use std::mem::transmute; @@ -96,39 +96,124 @@ impl<'a, 'b> BkeySC<'a> { KEY_TYPE_deleted => deleted, KEY_TYPE_whiteout => whiteout, KEY_TYPE_error => error, - KEY_TYPE_cookie => cookie(transmute(self.v)), - KEY_TYPE_hash_whiteout => hash_whiteout(transmute(self.v)), - KEY_TYPE_btree_ptr => btree_ptr(transmute(self.v)), - KEY_TYPE_extent => extent(transmute(self.v)), - KEY_TYPE_reservation => reservation(transmute(self.v)), - KEY_TYPE_inode => inode(transmute(self.v)), - KEY_TYPE_inode_generation => inode_generation(transmute(self.v)), - KEY_TYPE_dirent => dirent(transmute(self.v)), - KEY_TYPE_xattr => xattr(transmute(self.v)), - KEY_TYPE_alloc => alloc(transmute(self.v)), - KEY_TYPE_quota => quota(transmute(self.v)), - KEY_TYPE_stripe => stripe(transmute(self.v)), - KEY_TYPE_reflink_p => reflink_p(transmute(self.v)), - KEY_TYPE_reflink_v => reflink_v(transmute(self.v)), - KEY_TYPE_inline_data => inline_data(transmute(self.v)), - KEY_TYPE_btree_ptr_v2 => btree_ptr_v2(transmute(self.v)), - KEY_TYPE_indirect_inline_data => indirect_inline_data(transmute(self.v)), - KEY_TYPE_alloc_v2 => alloc_v2(transmute(self.v)), - KEY_TYPE_subvolume => subvolume(transmute(self.v)), - KEY_TYPE_snapshot => snapshot(transmute(self.v)), - KEY_TYPE_inode_v2 => inode_v2(transmute(self.v)), - KEY_TYPE_alloc_v3 => inode_v3(transmute(self.v)), + KEY_TYPE_cookie => cookie(transmute::<&bcachefs::bch_val, &bcachefs::bch_cookie>( + self.v, + )), + KEY_TYPE_hash_whiteout => hash_whiteout(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_hash_whiteout, + >(self.v)), + KEY_TYPE_btree_ptr => btree_ptr(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_btree_ptr, + >(self.v)), + KEY_TYPE_extent => extent(transmute::<&bcachefs::bch_val, &bcachefs::bch_extent>( + self.v, + )), + KEY_TYPE_reservation => reservation(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_reservation, + >(self.v)), + KEY_TYPE_inode => inode(transmute::<&bcachefs::bch_val, &bcachefs::bch_inode>( + self.v, + )), + KEY_TYPE_inode_generation => inode_generation(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_inode_generation, + >(self.v)), + KEY_TYPE_dirent => dirent(transmute::<&bcachefs::bch_val, &bcachefs::bch_dirent>( + self.v, + )), + KEY_TYPE_xattr => xattr(transmute::<&bcachefs::bch_val, &bcachefs::bch_xattr>( + self.v, + )), + KEY_TYPE_alloc => alloc(transmute::<&bcachefs::bch_val, &bcachefs::bch_alloc>( + self.v, + )), + KEY_TYPE_quota => quota(transmute::<&bcachefs::bch_val, &bcachefs::bch_quota>( + self.v, + )), + KEY_TYPE_stripe => stripe(transmute::<&bcachefs::bch_val, &bcachefs::bch_stripe>( + self.v, + )), + KEY_TYPE_reflink_p => reflink_p(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_reflink_p, + >(self.v)), + KEY_TYPE_reflink_v => reflink_v(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_reflink_v, + >(self.v)), + KEY_TYPE_inline_data => inline_data(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_inline_data, + >(self.v)), + KEY_TYPE_btree_ptr_v2 => btree_ptr_v2(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_btree_ptr_v2, + >(self.v)), + KEY_TYPE_indirect_inline_data => indirect_inline_data(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_indirect_inline_data, + >(self.v)), + KEY_TYPE_alloc_v2 => alloc_v2(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_alloc_v2, + >(self.v)), + KEY_TYPE_subvolume => subvolume(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_subvolume, + >(self.v)), + KEY_TYPE_snapshot => snapshot(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_snapshot, + >(self.v)), + KEY_TYPE_inode_v2 => inode_v2(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_inode_v2, + >(self.v)), + KEY_TYPE_alloc_v3 => inode_v3(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_inode_v3, + >(self.v)), KEY_TYPE_set => set, - KEY_TYPE_lru => lru(transmute(self.v)), - KEY_TYPE_alloc_v4 => alloc_v4(transmute(self.v)), - KEY_TYPE_backpointer => backpointer(transmute(self.v)), - KEY_TYPE_inode_v3 => inode_v3(transmute(self.v)), - KEY_TYPE_bucket_gens => bucket_gens(transmute(self.v)), - KEY_TYPE_snapshot_tree => snapshot_tree(transmute(self.v)), - KEY_TYPE_logged_op_truncate => logged_op_truncate(transmute(self.v)), - KEY_TYPE_logged_op_finsert => logged_op_finsert(transmute(self.v)), - KEY_TYPE_accounting => accounting(transmute(self.v)), - KEY_TYPE_inode_alloc_cursor => inode_alloc_cursor(transmute(self.v)), + KEY_TYPE_lru => lru(transmute::<&bcachefs::bch_val, &bcachefs::bch_lru>(self.v)), + KEY_TYPE_alloc_v4 => alloc_v4(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_alloc_v4, + >(self.v)), + KEY_TYPE_backpointer => backpointer(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_backpointer, + >(self.v)), + KEY_TYPE_inode_v3 => inode_v3(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_inode_v3, + >(self.v)), + KEY_TYPE_bucket_gens => bucket_gens(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_bucket_gens, + >(self.v)), + KEY_TYPE_snapshot_tree => snapshot_tree(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_snapshot_tree, + >(self.v)), + KEY_TYPE_logged_op_truncate => logged_op_truncate(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_logged_op_truncate, + >(self.v)), + KEY_TYPE_logged_op_finsert => logged_op_finsert(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_logged_op_finsert, + >(self.v)), + KEY_TYPE_accounting => accounting(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_accounting, + >(self.v)), + KEY_TYPE_inode_alloc_cursor => inode_alloc_cursor(transmute::< + &bcachefs::bch_val, + &bcachefs::bch_inode_alloc_cursor, + >(self.v)), KEY_TYPE_MAX => unreachable!(), } } diff --git a/bch_bindgen/src/btree.rs b/bch_bindgen/src/btree.rs index 99c2a5b5..0d8d7303 100644 --- a/bch_bindgen/src/btree.rs +++ b/bch_bindgen/src/btree.rs @@ -189,6 +189,7 @@ impl<'t> BtreeNodeIter<'t> { } } + #[allow(clippy::should_implement_trait)] pub fn next(&mut self) -> Result<Option<&c::btree>, bch_errcode> { unsafe { let b = c::bch2_btree_iter_next_node(&mut self.raw); diff --git a/bch_bindgen/src/fs.rs b/bch_bindgen/src/fs.rs index e44fca25..2997ed8f 100644 --- a/bch_bindgen/src/fs.rs +++ b/bch_bindgen/src/fs.rs @@ -9,7 +9,7 @@ pub struct Fs { } impl Fs { - pub fn open(devs: &Vec<PathBuf>, opts: c::bch_opts) -> Result<Fs, bch_errcode> { + pub fn open(devs: &[PathBuf], opts: c::bch_opts) -> Result<Fs, bch_errcode> { let devs: Vec<_> = devs .iter() .map(|i| CString::new(i.as_os_str().as_bytes()).unwrap().into_raw()) diff --git a/bch_bindgen/src/lib.rs b/bch_bindgen/src/lib.rs index 7c313921..cc56c298 100644 --- a/bch_bindgen/src/lib.rs +++ b/bch_bindgen/src/lib.rs @@ -114,7 +114,7 @@ impl FromStr for c::btree_id { let v = unsafe { c::match_string(c::__bch2_btree_ids[..].as_ptr(), (-1_isize) as usize, p) }; if v >= 0 { - Ok(unsafe { std::mem::transmute(v) }) + Ok(unsafe { std::mem::transmute::<i32, bcachefs::btree_id>(v) }) } else { Err(BchToolsErr::InvalidBtreeId) } @@ -130,7 +130,7 @@ impl FromStr for c::bch_bkey_type { let v = unsafe { c::match_string(c::bch2_bkey_types[..].as_ptr(), (-1_isize) as usize, p) }; if v >= 0 { - Ok(unsafe { std::mem::transmute(v) }) + Ok(unsafe { std::mem::transmute::<i32, bcachefs::bch_bkey_type>(v) }) } else { Err(BchToolsErr::InvalidBkeyType) } -- 2.48.1
