Commit graph

1274 commits

Author SHA1 Message Date
Andrea Mazzoleni
918d849739 Reset thermal_highest_temperature before readings to ensure fail-open on SMART error 2026-09-07 14:43:38 +02:00
Andrea Mazzoleni
f4be0b54d0 Reuse imported CURRENT BLK/REBUILD blocks in OLD-history recovery retry 2026-09-07 14:26:20 +02:00
Andrea Mazzoleni
c09b850047 Keep generation ambiguous for legacy hashes in check repair to prevent false CURRENT certification on size changes
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-07 12:02:24 +02:00
Andrea Mazzoleni
b82ee5ff56 Separate hash identity from canonical padding validation in check to fix CHG generation detection with MuseAir 2026-09-07 11:45:16 +02:00
Andrea Mazzoleni
31710bc1f3 Distinguish system temperature sensor from thermal model ambient reference 2026-09-07 11:38:49 +02:00
Andrea Mazzoleni
5e4cca1fe3 Detect and auto-heal content replicas left at different publication generations 2026-09-07 10:56:48 +02:00
Andrea Mazzoleni
74647cda14 Make snapraid_io track started state and defer async I/O after initial thermal control 2026-09-07 10:15:13 +02:00
Andrea Mazzoleni
595461f725 Document thermal power management as best effort
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-07 00:20:02 +02:00
Andrea Mazzoleni
305d1bce36 Use monotonic clock for thermal sampling intervals and model time axis 2026-09-07 00:04:49 +02:00
Andrea Mazzoleni
9ec2457147 Pass real current timestamp to state_thermal() after cooldown 2026-09-06 23:52:25 +02:00
Andrea Mazzoleni
9226f87ad1 Zero-initialize thermal model params in thermal_alloc() 2026-09-06 23:47:43 +02:00
Andrea Mazzoleni
f9819266e7 Abort cooldown sleep and break caller loops immediately on interruption 2026-09-06 23:37:05 +02:00
Andrea Mazzoleni
ea955eedc7 Make state_thermal_cooldown() repeat until disks cool down or thermal check fails 2026-09-06 23:08:48 +02:00
Andrea Mazzoleni
2fd94baa05 Make state_thermal() return 0 on success and -1 on failure 2026-09-06 23:03:31 +02:00
Andrea Mazzoleni
be3957f939 Ensure parity durability barrier in sync when there are no blocks to sync 2026-09-05 10:39:07 +02:00
Andrea Mazzoleni
8ed0224e41 Use F_FULLFSYNC on macOS with fallback to fsync for full barrier durability 2026-09-05 10:39:07 +02:00
Andrea Mazzoleni
11fee73ec4 Separate process waiting from process-reference release to eliminate Windows HANDLE reuse race
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-04 13:31:00 +02:00
Andrea Mazzoleni
5381d0a1ee Sync parent directory of parity split files in parity_sync 2026-09-04 12:24:25 +02:00
Andrea Mazzoleni
bb0e1bb006 Initialize mono writer errors before early sync barriers
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-04 10:03:02 +02:00
Andrea Mazzoleni
d96eecfd60 Persist content state and bad block markings on sync errors while preserving deallocation state 2026-09-04 09:52:41 +02:00
Andrea Mazzoleni
719bc5a3d5 Persist content state after parity handles are closed in scrub 2026-09-04 08:47:41 +02:00
Andrea Mazzoleni
930f0dbbcb Map devices before starting thermal 2026-09-04 08:08:40 +02:00
Andrea Mazzoleni
93a64a3710 Emit map_end tag at the end of map list 2026-09-04 08:08:40 +02:00
Andrea Mazzoleni
0b64fb2eae Eliminate obsolete raid_zero API and dedicated zero buffers
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-02 20:49:06 +02:00
Andrea Mazzoleni
ec1daddc8e Eliminate raid_delta_gen and convert int/neon32 REC1/REC2 to single-pass fused recovery 2026-09-02 18:30:59 +02:00
Andrea Mazzoleni
0ce89aa35d Add support for selectable streaming vs cached parity generation 2026-09-02 17:26:02 +02:00
Andrea Mazzoleni
b991d5e6c8 Use temporal stores for recovered data in SSSE3 and AVX2 REC1OF1 paths 2026-08-31 21:34:10 +02:00
Andrea Mazzoleni
6cd217ec2b Add O_NOFOLLOW to parity file open/create paths to prevent symlink redirection 2026-08-31 21:34:10 +02:00
Andrea Mazzoleni
da58c1a997 Use fused 1-pass recovery for SSSE3 2026-08-31 20:45:39 +02:00
Andrea Mazzoleni
ee47fdf723 Fix raid_gen_force parity count in benchmarks 2026-08-31 20:45:39 +02:00
Andrea Mazzoleni
82089165b5 Add dedicated XOR-only fast path for NEON rec1of1 2026-08-31 20:45:38 +02:00
Andrea Mazzoleni
b9d0dcd173 Make .unrecoverable a persistent one-way recovery quarantine 2026-08-31 20:45:38 +02:00
Andrea Mazzoleni
472c85a4fb Centralize canonical SnapRAID block hashing semantics 2026-08-31 20:45:38 +02:00
Andrea Mazzoleni
327c0e7aac Fix unrecoverable unsynced blocks reported as recoverable 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
e5d5c512b8 Reject rehash while an incomplete sync is pending 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
90fa3792ef Improve CHG recovery by inferring CURRENT state across the whole RAID solution 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
136f648cb5 Validate persistent state before content serialization 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
80b58e66d5 Initialize parity split sizes before pre-resize state checkpoint 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
2774a6488f Enforce contiguous prefix invariant for parity splits and reject internal zero-sized splits 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
f8319361a3 Disallow elastic parity split reallocation during fix to preserve persisted layout 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
f6d07dfa10 Persist pending logical state before parity resize on normal shrink sync 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
82be7b07b3 Persist reallocated mapping before parity resize in force-realloc sync 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
395291bd9a Implement crash-safe --force-full sync with persistent BLOCK_STATE_REBUILD 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
cea7ce7f0a Document non-obvious invariants across sync, check, scrub, parity, and handle mapping logic 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
793782fa2d Fix premature valid_size update before pwrite completion in parity_write 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
3288c8cc8c Add machineinfo_struct to query and report system and CPU information in speed test 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
8d63a85b76 Clarify metadata validation semantics in sync comments 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
457c5b7ec2 Reject unbounded mapping counts and duplicate disk mappings in content decoding 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
3571052504 Reject duplicate or misplaced blockmax records in content decoding 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
0277da9178 Validate serialized info timestamps in content file parser to prevent 64-bit overflow 2026-08-31 10:39:17 +02:00