summaryrefslogtreecommitdiff
path: root/bch_bindgen
diff options
context:
space:
mode:
Diffstat (limited to 'bch_bindgen')
-rw-r--r--bch_bindgen/Cargo.lock12
-rw-r--r--bch_bindgen/src/lib.rs2
-rw-r--r--bch_bindgen/src/sb_io.rs (renamed from bch_bindgen/src/rs.rs)20
3 files changed, 27 insertions, 7 deletions
diff --git a/bch_bindgen/Cargo.lock b/bch_bindgen/Cargo.lock
index 521c77c2..57348433 100644
--- a/bch_bindgen/Cargo.lock
+++ b/bch_bindgen/Cargo.lock
@@ -163,15 +163,15 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
[[package]]
name = "pkg-config"
-version = "0.3.28"
+version = "0.3.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a"
+checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb"
[[package]]
name = "proc-macro2"
-version = "1.0.76"
+version = "1.0.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c"
+checksum = "9f9b1511a24c627ab3e92b48be4b32f8d0ea91ee351edd87fbf650aadd336340"
dependencies = [
"unicode-ident",
]
@@ -245,6 +245,6 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "uuid"
-version = "1.6.1"
+version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
+checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
diff --git a/bch_bindgen/src/lib.rs b/bch_bindgen/src/lib.rs
index 4c549442..deb69a51 100644
--- a/bch_bindgen/src/lib.rs
+++ b/bch_bindgen/src/lib.rs
@@ -3,7 +3,7 @@ pub mod btree;
pub mod bkey;
pub mod errcode;
pub mod keyutils;
-pub mod rs;
+pub mod sb_io;
pub mod fs;
pub mod opts;
pub use paste::paste;
diff --git a/bch_bindgen/src/rs.rs b/bch_bindgen/src/sb_io.rs
index 24594ae1..172584d7 100644
--- a/bch_bindgen/src/rs.rs
+++ b/bch_bindgen/src/sb_io.rs
@@ -27,3 +27,23 @@ pub fn read_super(path: &std::path::Path) -> anyhow::Result<bch_sb_handle> {
let opts = bcachefs::bch_opts::default();
read_super_opts(path, opts)
}
+
+pub fn read_super_silent(
+ path: &std::path::Path,
+ mut opts: bch_opts,
+) -> anyhow::Result<bch_sb_handle> {
+ use std::os::unix::ffi::OsStrExt;
+ let path = std::ffi::CString::new(path.as_os_str().as_bytes()).unwrap();
+
+ let mut sb = std::mem::MaybeUninit::zeroed();
+
+ let ret =
+ unsafe { crate::bcachefs::bch2_read_super_silent(path.as_ptr(), &mut opts, sb.as_mut_ptr()) };
+
+ if ret != 0 {
+ let err: bch_errcode = unsafe { ::std::mem::transmute(ret) };
+ Err(anyhow!(err))
+ } else {
+ Ok(unsafe { sb.assume_init() })
+ }
+}