Commit graph

1268 commits

Author SHA1 Message Date
Andrea Mazzoleni
57e15416ae Abort spindown when filesystem flush fails 2026-09-28 15:09:55 +02:00
Andrea Mazzoleni
d210e95997 Avoid touch hiding files modified since the last sync 2026-09-28 14:11:51 +02:00
Andrea Mazzoleni
087781cee9 Reject parity split layouts exceeding INT64_MAX total size 2026-09-28 14:11:51 +02:00
Andrea Mazzoleni
c2be8536bf Reject non-regular data and parity files after opening 2026-09-28 11:54:11 +02:00
Andrea Mazzoleni
8f0bc80774 Preserve .snapraidignore candidates during array recovery search with nohidden 2026-09-28 11:52:08 +02:00
Andrea Mazzoleni
bff4bb237b Avoid truncating untracked file tails during partial fix 2026-09-28 11:37:58 +02:00
Andrea Mazzoleni
7decc78c97 Apply filters to empty directories during scan and match subdirectories in directory rules 2026-09-28 11:31:56 +02:00
Andrea Mazzoleni
11b17d7d04 Make filesystem snapshot renames durable before parity updates
Some checks are pending
Build / build-mac (push) Waiting to run
Build / build-linux (push) Waiting to run
Build / build-arm32 (push) Waiting to run
Build / build-win (push) Waiting to run
Build / build-freebsd (push) Waiting to run
Build / build-musl (push) Waiting to run
CodeQL Advanced / Analyze (c-cpp) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
2026-09-27 23:52:31 +02:00
Andrea Mazzoleni
cd8b331a30 Document why automatic copy search runs before snapshot selection
Some checks are pending
Build / build-mac (push) Waiting to run
Build / build-linux (push) Waiting to run
Build / build-arm32 (push) Waiting to run
Build / build-win (push) Waiting to run
Build / build-freebsd (push) Waiting to run
Build / build-musl (push) Waiting to run
CodeQL Advanced / Analyze (c-cpp) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
2026-09-27 20:17:26 +02:00
Andrea Mazzoleni
e7135d101b Validate hardlink entries without following symbolic links during check and fix
Some checks are pending
Build / build-mac (push) Waiting to run
Build / build-linux (push) Waiting to run
Build / build-arm32 (push) Waiting to run
Build / build-win (push) Waiting to run
Build / build-freebsd (push) Waiting to run
Build / build-musl (push) Waiting to run
CodeQL Advanced / Analyze (c-cpp) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
2026-09-27 11:31:35 +02:00
Andrea Mazzoleni
0138b48023 Avoid recreating missing files and directories during fix with syncedonly (-e/-b) 2026-09-26 18:17:25 +02:00
Andrea Mazzoleni
6b8d3e23a0 Drop support for pre-SnapRAID 11 content formats and require migration with SnapRAID 14.x 2026-09-26 17:15:09 +02:00
Andrea Mazzoleni
f80e93e9d3 Keep disks with pending deallocation records mapped in the content file 2026-09-26 16:37:43 +02:00
Andrea Mazzoleni
b023939c6b Track current and previous hash generations for deallocated blocks
Some checks are pending
Build / build-mac (push) Waiting to run
Build / build-linux (push) Waiting to run
Build / build-arm32 (push) Waiting to run
Build / build-win (push) Waiting to run
Build / build-freebsd (push) Waiting to run
Build / build-musl (push) Waiting to run
CodeQL Advanced / Analyze (c-cpp) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
2026-09-26 00:02:24 +02:00
Andrea Mazzoleni
0440d74fb5 Detect Bcachefs subvolume roots using STATX_SUBVOL instead of assuming inode 4096 2026-09-25 23:24:27 +02:00
Andrea Mazzoleni
a6a1cec115 Resolve ZFS dataset mounts through mountinfo, including legacy mountpoints 2026-09-25 22:51:55 +02:00
Andrea Mazzoleni
1aa6d2b787 Reject content files with parity split sizes not aligned to the configured block size 2026-09-25 17:19:40 +02:00
Andrea Mazzoleni
5b0a8e0c8e Restore file mtime after synced-only recovery writes 2026-09-25 10:48:56 +02:00
Andrea Mazzoleni
46dbfa9b08 Reject parity disk filters combined with file selection filters 2026-09-25 10:22:07 +02:00
Andrea Mazzoleni
7662b80023 Keep automatic array search within data-disk filesystem boundaries 2026-09-25 10:14:36 +02:00
Andrea Mazzoleni
ce7d29f178 Keep hardlink target files selected with selected hardlinks 2026-09-25 10:08:57 +02:00
Andrea Mazzoleni
13267085d1 Fail closed on invalid .snapraidignore control files 2026-09-25 09:44:09 +02:00
Andrea Mazzoleni
099f3c7429 Use DT_* values directly for scan entry types 2026-09-25 09:44:09 +02:00
Andrea Mazzoleni
a92b19d9c2 Use lstat for empty objects and leave type mismatches unrecoverable 2026-09-25 08:48:43 +02:00
Andrea Mazzoleni
69967b1262 Exclude blockless objects from filter-error selection 2026-09-25 08:24:50 +02:00
Andrea Mazzoleni
190efbefb2 Make search candidate I/O failures nonfatal during recovery 2026-09-25 08:24:50 +02:00
Andrea Mazzoleni
5f68fda7ae Propagate non-capacity errors during parity split growth 2026-09-24 21:52:42 +02:00
Andrea Mazzoleni
bcc06e10c6 Reject parity sizes exceeding data_off_t range and remove redundant block size casts 2026-09-24 20:40:27 +02:00
Andrea Mazzoleni
149b408c38 Skip disk cache statistics for mapping holes 2026-09-24 19:49:46 +02:00
Andrea Mazzoleni
bcfd2734b6 Quiesce scrub read-ahead before autosave and distinguish read/write barriers 2026-09-24 19:49:46 +02:00
Andrea Mazzoleni
fba3f74538 Handle MinGW path conversion failures with ENAMETOOLONG and EILSEQ instead of aborting
Some checks are pending
Build / build-mac (push) Waiting to run
Build / build-linux (push) Waiting to run
Build / build-arm32 (push) Waiting to run
Build / build-win (push) Waiting to run
Build / build-freebsd (push) Waiting to run
Build / build-musl (push) Waiting to run
CodeQL Advanced / Analyze (c-cpp) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
2026-09-24 12:57:17 +02:00
Andrea Mazzoleni
222136f1e7 Leave block empty for unlocalized close errors and use zero for parity open errors
Some checks are pending
Build / build-mac (push) Waiting to run
Build / build-linux (push) Waiting to run
Build / build-arm32 (push) Waiting to run
Build / build-win (push) Waiting to run
Build / build-freebsd (push) Waiting to run
Build / build-musl (push) Waiting to run
CodeQL Advanced / Analyze (c-cpp) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
2026-09-23 16:37:13 +02:00
Andrea Mazzoleni
1a5b28ad38 Mark scrub/sync blocks bad when data file open fails with an I/O error 2026-09-23 16:24:00 +02:00
Andrea Mazzoleni
e481b5f207 Query SMART attributes for all disks in spinup while restricting power operations to array members
Some checks are pending
Build / build-mac (push) Waiting to run
Build / build-linux (push) Waiting to run
Build / build-arm32 (push) Waiting to run
Build / build-win (push) Waiting to run
Build / build-freebsd (push) Waiting to run
Build / build-musl (push) Waiting to run
CodeQL Advanced / Analyze (c-cpp) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
2026-09-23 07:37:30 +02:00
Andrea Mazzoleni
5b615a0e02 Emit content_data and content_parity tags only after durable content rename in state_write
Some checks are pending
Build / build-mac (push) Waiting to run
Build / build-linux (push) Waiting to run
Build / build-arm32 (push) Waiting to run
Build / build-win (push) Waiting to run
Build / build-freebsd (push) Waiting to run
Build / build-musl (push) Waiting to run
CodeQL Advanced / Analyze (c-cpp) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
2026-09-22 09:25:08 +02:00
Andrea Mazzoleni
c6951393e8 Exit code and logging invariants for log_fatal and hardware log_error
Some checks are pending
Build / build-mac (push) Waiting to run
Build / build-linux (push) Waiting to run
Build / build-arm32 (push) Waiting to run
Build / build-win (push) Waiting to run
Build / build-freebsd (push) Waiting to run
Build / build-musl (push) Waiting to run
CodeQL Advanced / Analyze (c-cpp) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
2026-09-21 17:27:07 +02:00
Andrea Mazzoleni
c2d46f4039 Emit content tags only after updating disk mapping and checks 2026-09-20 14:11:35 +02:00
Andrea Mazzoleni
89b1f47c33 Detect degraded state for Bcachefs and Linux MD RAID arrays 2026-09-20 14:11:35 +02:00
Andrea Mazzoleni
2852b09d47 Detect degraded ZFS pools and missing vdev devices in devdereference_zfs 2026-09-19 21:36:34 +02:00
Andrea Mazzoleni
8e66b42ceb Add trim and trim_empty support to strsplit and update all callers 2026-09-19 21:36:34 +02:00
Andrea Mazzoleni
929ba5cebe Detect degraded filesystems in device commands and exit with EXIT_DEGRADED 2026-09-19 09:45:47 +02:00
Andrea Mazzoleni
2a4335ef7d Defer content_info logging and state counters update after content durability rename in state_write
Some checks are pending
Build / build-mac (push) Waiting to run
Build / build-linux (push) Waiting to run
Build / build-arm32 (push) Waiting to run
Build / build-win (push) Waiting to run
Build / build-freebsd (push) Waiting to run
Build / build-musl (push) Waiting to run
CodeQL Advanced / Analyze (c-cpp) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
2026-09-18 10:00:42 +02:00
Andrea Mazzoleni
601064dde7 Use pathcmp for disk name comparisons to enforce case-insensitive uniqueness on Windows 2026-09-18 10:00:42 +02:00
Andrea Mazzoleni
ecb12ee92c Avoid duplicate fatal stderr output in GUI mode 2026-09-18 10:00:42 +02:00
Andrea Mazzoleni
0771f91a53 Fix map_end tag formatting by adding trailing colon delimiter 2026-09-18 10:00:42 +02:00
Andrea Mazzoleni
3f3e7d4483 Validate logical disk names in configuration parsing to ensure compatibility with snapraid-daemon 2026-09-18 10:00:41 +02:00
Andrea Mazzoleni
bdc2da9a94 Report elapsed time when loading and saving state 2026-09-18 10:00:41 +02:00
Andrea Mazzoleni
d92d296bcd Lock unsafe command-line options after enabling --lock-options 2026-09-18 10:00:41 +02:00
Andrea Mazzoleni
8b9858ffdc Synchronizes log entries for errors
Some checks are pending
Build / build-mac (push) Waiting to run
Build / build-linux (push) Waiting to run
Build / build-arm32 (push) Waiting to run
Build / build-win (push) Waiting to run
Build / build-freebsd (push) Waiting to run
Build / build-musl (push) Waiting to run
CodeQL Advanced / Analyze (c-cpp) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
2026-09-15 23:55:21 +02:00
Andrea Mazzoleni
215aed17e7 Emit content read metadata only after successful content loading
Some checks failed
Build / build-mac (push) Has been cancelled
Build / build-linux (push) Has been cancelled
Build / build-arm32 (push) Has been cancelled
Build / build-win (push) Has been cancelled
Build / build-freebsd (push) Has been cancelled
Build / build-musl (push) Has been cancelled
CodeQL Advanced / Analyze (c-cpp) (push) Has been cancelled
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
2026-09-14 23:26:54 +02:00