diff --git a/Cargo.lock b/Cargo.lock
index d518eb85..49f7e998 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -76,13 +76,12 @@ dependencies = [
  "clap_complete",
  "either",
  "env_logger",
- "errno 0.2.8",
+ "errno",
  "libc",
  "log",
  "owo-colors",
  "rustix",
  "strum",
- "strum_macros",
  "udev",
  "uuid",
  "zeroize",
@@ -95,7 +94,7 @@ dependencies = [
  "anyhow",
  "bindgen",
  "bitfield",
- "bitflags 1.3.2",
+ "bitflags",
  "paste",
  "pkg-config",
  "uuid",
@@ -107,7 +106,7 @@ version = "0.69.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088"
 dependencies = [
- "bitflags 2.6.0",
+ "bitflags",
  "cexpr",
  "clang-sys",
  "itertools",
@@ -130,27 +129,12 @@ version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac"
 
-[[package]]
-name = "bitflags"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-
 [[package]]
 name = "bitflags"
 version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
 
-[[package]]
-name = "cc"
-version = "1.1.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1"
-dependencies = [
- "shlex",
-]
-
 [[package]]
 name = "cexpr"
 version = "0.6.0"
@@ -248,17 +232,6 @@ dependencies = [
  "log",
 ]
 
-[[package]]
-name = "errno"
-version = "0.2.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
-dependencies = [
- "errno-dragonfly",
- "libc",
- "winapi",
-]
-
 [[package]]
 name = "errno"
 version = "0.3.9"
@@ -269,16 +242,6 @@ dependencies = [
  "windows-sys 0.52.0",
 ]
 
-[[package]]
-name = "errno-dragonfly"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
-dependencies = [
- "cc",
- "libc",
-]
-
 [[package]]
 name = "glob"
 version = "0.3.1"
@@ -480,8 +443,8 @@ version = "0.38.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
 dependencies = [
- "bitflags 2.6.0",
- "errno 0.3.9",
+ "bitflags",
+ "errno",
  "libc",
  "linux-raw-sys",
  "windows-sys 0.52.0",
@@ -589,28 +552,6 @@ dependencies = [
  "rustix",
 ]
 
-[[package]]
-name = "winapi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
-]
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-
-[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-
 [[package]]
 name = "windows-sys"
 version = "0.52.0"
diff --git a/Cargo.toml b/Cargo.toml
index 54b6ec35..d026c3f0 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -16,16 +16,15 @@ fuse = []
 log = { version = "0.4", features = ["std"] }
 clap = { version = "4.0.32", features = ["derive", "wrap_help"] }
 clap_complete = "4.3.2"
-anyhow = "1.0"
+anyhow = "1.0.1"
 libc = "0.2.69"
 udev = "0.7.0"
 uuid = "1.2.2"
-errno = "0.2"
+errno = "0.3"
 either = "1.5"
 bch_bindgen = { path = "bch_bindgen" }
 strum = { version = "0.26", features = ["derive"] }
-strum_macros = "0.26"
-zeroize = { version = "1", features = ["std", "zeroize_derive"] }
+zeroize = { version = "1.5.5", features = ["std", "zeroize_derive"] }
 rustix = { version = "0.38.34", features = ["termios"] }
 owo-colors = "4"
 
diff --git a/bch_bindgen/Cargo.toml b/bch_bindgen/Cargo.toml
index 2a819bb5..aaf899fa 100644
--- a/bch_bindgen/Cargo.toml
+++ b/bch_bindgen/Cargo.toml
@@ -13,9 +13,9 @@ crate-type = ["lib"]
 anyhow = "1.0"
 uuid = "1.2.2"
 bitfield = "0.14.0"
-bitflags = "1.3.2"
+bitflags = "2"
 paste = "1.0.11"
 
 [build-dependencies]
-pkg-config = "0.3"
-bindgen = "0.69.4"
+pkg-config = "0.3.7"
+bindgen = "0.69.5"
diff --git a/bch_bindgen/src/btree.rs b/bch_bindgen/src/btree.rs
index 1aaf3018..39eefec4 100644
--- a/bch_bindgen/src/btree.rs
+++ b/bch_bindgen/src/btree.rs
@@ -71,7 +71,7 @@ impl<'t> BtreeIter<'t> {
                 iter.as_mut_ptr(),
                 btree,
                 pos,
-                flags.bits as u32,
+                flags.bits().into(),
             );
 
             BtreeIter {
@@ -156,7 +156,7 @@ impl<'t> BtreeNodeIter<'t> {
                 pos,
                 locks_want,
                 depth,
-                flags.bits as u32,
+                flags.bits().into(),
             );
 
             BtreeNodeIter {