Compare commits

...

2 Commits

Author SHA1 Message Date
nym21 11911c1898 release: v0.0.83 2025-07-26 23:35:43 +02:00
nym21 4814c1971d vecs: add linux punch hole impl 2025-07-26 23:35:23 +02:00
3 changed files with 59 additions and 33 deletions
Generated
+15 -15
View File
@@ -471,7 +471,7 @@ dependencies = [
[[package]]
name = "brk"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"brk_bundler",
"brk_cli",
@@ -491,7 +491,7 @@ dependencies = [
[[package]]
name = "brk_bundler"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"brk_rolldown",
"log",
@@ -502,7 +502,7 @@ dependencies = [
[[package]]
name = "brk_cli"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"bitcoincore-rpc",
"brk_computer",
@@ -525,7 +525,7 @@ dependencies = [
[[package]]
name = "brk_computer"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"bincode",
"bitcoin",
@@ -548,7 +548,7 @@ dependencies = [
[[package]]
name = "brk_core"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"bincode",
"bitcoin",
@@ -569,7 +569,7 @@ dependencies = [
[[package]]
name = "brk_exit"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"brk_logger",
"ctrlc",
@@ -579,7 +579,7 @@ dependencies = [
[[package]]
name = "brk_fetcher"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"brk_core",
"brk_logger",
@@ -591,7 +591,7 @@ dependencies = [
[[package]]
name = "brk_indexer"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"bitcoin",
"bitcoincore-rpc",
@@ -609,7 +609,7 @@ dependencies = [
[[package]]
name = "brk_interface"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"brk_computer",
"brk_core",
@@ -627,7 +627,7 @@ dependencies = [
[[package]]
name = "brk_logger"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"color-eyre",
"env_logger",
@@ -637,7 +637,7 @@ dependencies = [
[[package]]
name = "brk_mcp"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"axum",
"brk_interface",
@@ -647,7 +647,7 @@ dependencies = [
[[package]]
name = "brk_parser"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"bitcoin",
"bitcoincore-rpc",
@@ -973,7 +973,7 @@ dependencies = [
[[package]]
name = "brk_server"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"axum",
"bitcoincore-rpc",
@@ -1004,7 +1004,7 @@ dependencies = [
[[package]]
name = "brk_store"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"brk_core",
"byteview",
@@ -1026,7 +1026,7 @@ dependencies = [
[[package]]
name = "brk_vecs"
version = "0.0.82"
version = "0.0.83"
dependencies = [
"brk_core",
"brk_exit",
+15 -15
View File
@@ -4,7 +4,7 @@ members = ["crates/*"]
package.description = "The Bitcoin Research Kit is a suite of tools designed to extract, compute and display data stored on a Bitcoin Core node"
package.license = "MIT"
package.edition = "2024"
package.version = "0.0.82"
package.version = "0.0.83"
package.homepage = "https://bitcoinresearchkit.org"
package.repository = "https://github.com/bitcoinresearchkit/brk"
package.readme = "README.md"
@@ -26,20 +26,20 @@ axum = "0.8.4"
bincode = { version = "2.0.1", features = ["serde"] }
bitcoin = { version = "0.32.6", features = ["serde"] }
bitcoincore-rpc = "0.19.0"
brk_bundler = { version = "0.0.82", path = "crates/brk_bundler" }
brk_cli = { version = "0.0.82", path = "crates/brk_cli" }
brk_computer = { version = "0.0.82", path = "crates/brk_computer" }
brk_core = { version = "0.0.82", path = "crates/brk_core" }
brk_exit = { version = "0.0.82", path = "crates/brk_exit" }
brk_fetcher = { version = "0.0.82", path = "crates/brk_fetcher" }
brk_indexer = { version = "0.0.82", path = "crates/brk_indexer" }
brk_interface = { version = "0.0.82", path = "crates/brk_interface" }
brk_logger = { version = "0.0.82", path = "crates/brk_logger" }
brk_mcp = { version = "0.0.82", path = "crates/brk_mcp" }
brk_parser = { version = "0.0.82", path = "crates/brk_parser" }
brk_server = { version = "0.0.82", path = "crates/brk_server" }
brk_store = { version = "0.0.82", path = "crates/brk_store" }
brk_vecs = { version = "0.0.82", path = "crates/brk_vecs" }
brk_bundler = { version = "0.0.83", path = "crates/brk_bundler" }
brk_cli = { version = "0.0.83", path = "crates/brk_cli" }
brk_computer = { version = "0.0.83", path = "crates/brk_computer" }
brk_core = { version = "0.0.83", path = "crates/brk_core" }
brk_exit = { version = "0.0.83", path = "crates/brk_exit" }
brk_fetcher = { version = "0.0.83", path = "crates/brk_fetcher" }
brk_indexer = { version = "0.0.83", path = "crates/brk_indexer" }
brk_interface = { version = "0.0.83", path = "crates/brk_interface" }
brk_logger = { version = "0.0.83", path = "crates/brk_logger" }
brk_mcp = { version = "0.0.83", path = "crates/brk_mcp" }
brk_parser = { version = "0.0.83", path = "crates/brk_parser" }
brk_server = { version = "0.0.83", path = "crates/brk_server" }
brk_store = { version = "0.0.83", path = "crates/brk_store" }
brk_vecs = { version = "0.0.83", path = "crates/brk_vecs" }
byteview = "=0.6.1"
clap = { version = "4.5.41", features = ["string"] }
clap_derive = "4.5.41"
+29 -3
View File
@@ -475,15 +475,15 @@ impl File {
fn punch_hole(&self, start: u64, length: u64) -> Result<()> {
let file = self.file.write();
Self::punch_hole_macos(&file, start, length)
Self::punch_hole_impl(&file, start, length)
}
fn punch_hole_(file: &fs::File, start: u64, length: u64) -> Result<()> {
Self::punch_hole_macos(file, start, length)
Self::punch_hole_impl(file, start, length)
}
#[cfg(target_os = "macos")]
fn punch_hole_macos(file: &fs::File, start: u64, length: u64) -> Result<()> {
fn punch_hole_impl(file: &fs::File, start: u64, length: u64) -> Result<()> {
let fpunchhole = FPunchhole {
fp_flags: 0,
reserved: 0,
@@ -506,6 +506,32 @@ impl File {
Ok(())
}
#[cfg(target_os = "linux")]
fn punch_hole_impl(file: &fs::File, start: u64, length: u64) -> Result<()> {
let result = unsafe {
libc::fallocate(
file.as_raw_fd(),
libc::FALLOC_FL_PUNCH_HOLE | libc::FALLOC_FL_KEEP_SIZE,
start as libc::off_t,
length as libc::off_t,
)
};
if result == -1 {
let err = std::io::Error::last_os_error();
return Err(Error::String(format!("Failed to punch hole: {err}")));
}
Ok(())
}
#[cfg(not(any(target_os = "macos", target_os = "linux")))]
fn punch_hole_impl(_file: &fs::File, _start: u64, _length: u64) -> Result<()> {
Err(Error::String(
"Hole punching not supported on this platform".to_string(),
))
}
}
#[repr(C)]