Commit graph

931 commits

Author SHA1 Message Date
Andrea Mazzoleni
b78542685f Add portable 128-bit vector parity routines for gen1/gen2/genz to optimize non-x86 CPUs 2026-06-04 21:18:47 +02:00
Andrea Mazzoleni
03f92a7c96 Further conversions from 32 to 64 bits 2026-06-04 09:05:58 +02:00
Andrea Mazzoleni
d595072db2 Migrate block_off_t to 64-bit with updated CLI parsing, VLQ serialization, and format specifiers 2026-06-04 09:05:57 +02:00
Andrea Mazzoleni
9ce976232c Remove the unused number of data disks from the vector allocation
Some checks are pending
Build / build-mac (push) Waiting to run
Build / build-linux (push) Waiting to run
Build / build-win (push) Waiting to run
CodeQL Advanced / Analyze (c-cpp) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
The same addressing rules are applied to the parity disks because
they are used as data disks during recovery operations.
2026-06-03 22:01:00 +02:00
Andrea Mazzoleni
ff1056547d Use the optimal displacement depending on the number of disks 2026-06-03 22:01:00 +02:00
Andrea Mazzoleni
68525d6fa5 Add build option to allow hardlink tools 2026-06-03 22:01:00 +02:00
Andrea Mazzoleni
e3a0671c00 Assume the assembler supports all x86 SSE/AVX instructions 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
f9a1370b42 Add support for AVX2 GFNI 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
8ae654d8a6 Disable AVX512 on CPUs with narrow shuffle ports or double-pumped 256-bit datapath 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
429d87540b Extend io_init() to support arbitrary combinations of data and parity operations 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
63a4a9382d Do not expose Windows threads keys 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
ed7b35f62f Validate GUIDs before passing them to PowerShell 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
7b5f6447ba Take into account that btrfs devices can be not contiguous 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
8db4198694 Portability 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
af840808bc Secure the popen use 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
39522d06d9 Add new build option to allow symlinks 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
6cd0b85f39 Delete snapshot links in Windows 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
7cab73bbb9 Report issues in github 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
cb6edc4335 Automatically exclude the snapshot .snapraid directory and content files 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
746a9b8940 Preliminary support for AVX512GFNI 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
c632bfc5af Allow to configure path of external tools 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
06b19808c1 Secure external tools execution 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
0f37db8d20 Add Windows VirtualShadowCopy support for snapshots 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
7e31d976fa Add Windows support for symlink of directories 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
f8197cad78 In Windows readlink now convert \ to / to match symlink behaviour 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
cf923aeb1b Always use PATH_MAX instead of MAX_PATH (limited to 260) 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
6eb6aaee3e Sanitize shell execution 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
681683bfd5 Add ZFS support 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
614513bab5 Rework snapshot interface 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
aa55b96aa8 Add Bcachefs support 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
4ed6f21823 Change the BLOCK_HASH_SIZE type to avoid potential overflow 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
2c854de501 Target Windows 7 instead of Windows Vista 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
770a973a1a Modernize configure.ac 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
1c49494ade More coverage support 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
388260b576 Add regression check for Btrfs
It requires root privileges as it has to create Btrfs filesystems.
2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
2bac137218 Remove the requirement to snapshot content files
The new content file format now includes metadata for previous versions
of files. This allows the fix command to access historical file data from
snapshots as needed, ensuring recovery even if the live filesystem has
changed or the file was deleted during a sync.
2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
f413e96ec4 Track deallocated files in the content file for parity recovery
Add a new 'dealloc' list per disk to record files that were removed
or modified during a scan. This list is saved in the content file
(new format version SNAPCNT4) so that past parity contributions of
those files can be imported from previous snapshots.
2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
e9d4b0152a Change commenting style 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
85ede49477 Sync no longer requires clearing the past hash
It no longer assumes past hashes are valid if even a single unsynced
block exists, which indicates a previous sync was interrupted.

While this makes syncing slower after an interruption, it preserves the
past hash in the content file, enabling a more reliable fix if a
disk fails following an incomplete sync.

This ensures the --import option remains functional even after an
interrupted sync.
2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
e06d8ab550 Add detection of AVX2GFNI 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
70c9b35206 Integrate new AVX512 functions in the speed test 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
4fe0fe406e Add Btrfs snapshot support for atomic sync and recovery consistency 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
8e58348983 New Btrfs support using IOCTLs to get UUID and low level devices 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
ae8a89ec25 Get the UUID from the imported file or directory 2026-06-03 22:00:59 +02:00
Christoph Hellwig
c889153cb2 Make all RAID forwarders static and local using a new registration interface
Co-authored-by: Andrea Mazzoleni <amadvance@gmail.com>
2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
84451e450c Drop the test-run option from the official binary 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
fc169fb922 Log using log_error all errors that are not resulting in an early termination 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
5cfebba19e Remove unnecessary log argument 2026-06-03 20:57:08 +02:00
Andrea Mazzoleni
cc99a22929 Add protection for block position integer overflow 2026-06-03 19:07:31 +02:00
Andrea Mazzoleni
c814b474be Remove the misleading Flush message in nix 2026-06-03 18:24:18 +02:00