Buckit handles XFS errors itself, so the kernel default (retry-on-error
forever) only adds latency. Ship a systemd timer that periodically sets
max_retries=0 for the EIO, ENOSPC, and default error classes on the block
devices backing MINIO_VOLUMES.
The values reset on every mount, so the timer (re-)applies them after boot
and after a restart-free drive hot-swap. The script reads MINIO_VOLUMES from
the running server's process environment, scopes writes to only the mounted
Buckit data drives (never the root fs or unrelated XFS volumes), and exits
cleanly when the server is down or no XFS is present. Genuine write failures
are logged and surface the unit as failed.
postinstall enables the timer (idempotent across upgrades); postremove
disables it only on full removal.
newParallelReader acquired a pooled stash buffer from globalBytePoolCap
and sliced it into per-shard views (bufs), but returned the struct with
`buf: make([][]byte, len(readers))` — discarding bufs. The pooled buffer
was reserved and recycled but never read into, while Read heap-allocated
each shard buffer lazily, adding ~1 MiB of fresh allocations per in-flight
GET decode on top of the reserved-but-unused 2 MiB pool buffer.
Wire the seeded bufs into buf so reads land in the pooled buffer. Entries
stay nil for the no-stash / oversized-legacy-block path, where Read's lazy
make remains the fallback. Correctness is unchanged; this removes the
allocation churn the byte pool was meant to avoid.
Fixes#11
Drop the move-to-PATH instruction; the verified binary stays in the download
directory and the script prints how to run it from there, matching
install-windows.ps1.
Fail fast when run under cross-platform PowerShell on Linux/macOS (rather than
fetching the Windows .exe), treating undefined $IsWindows on Windows
PowerShell 5.1 as Windows. Make the printed install example create the target
directory before moving the executable into it.
Add install-mac.sh (downloads the Apple Silicon binary, verifies SHA-256,
clears the macOS quarantine attr, prints the move-to-PATH command) and
install-windows.ps1 (downloads the .exe, verifies SHA-256, prints the
move-to-PATH command). Both write to a predictable filename (buckit /
buckit.exe) and use the same atomic temp-then-move + checksum-gate flow as
install-linux.sh.
Publish both to gh-pages in the release workflow, and point install-linux.sh's
non-Linux error at the new scripts.
Set SUDO once (empty when already root, "sudo " when sudo is available,
empty with a warning otherwise) and build INSTALL_CMD from it, so the printed
install command is correct on root/container hosts without sudo.