Commit graph

2275 commits

Author SHA1 Message Date
Andrea Mazzoleni
23e2b4d283 Disassembly the ARM vector implementation 2026-06-04 21:35:00 +02:00
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
d03a583523 Use vpternlogq in raid_gen3-6_avx512bw to fuse sequential vpxorq instructions into single 3-way XORs 2026-06-04 17:48:25 +02:00
Andrea Mazzoleni
7a2eac4bb3 Gate AVX-512BW gen1/gen2 behind slow_avx512() to avoid double-pumped shuffle penalties
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
2026-06-04 09:41:53 +02:00
Andrea Mazzoleni
f1007e1053 Requires C99 2026-06-04 09:09:55 +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
287135e2c1 Inject variable page-offset noise to disk buffer displacement to mitigate prefetcher contention 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
fdadb443ad Change RAID AVX512/GFNI functions to use forward iterations 2026-06-03 22:01:00 +02:00
Andrea Mazzoleni
54f1185cde Remove the special case of a single data disk when not strictly required 2026-06-03 22:01:00 +02:00
Andrea Mazzoleni
33a62a4c74 Remove unused level 0 from the pshufb table 2026-06-03 22:01:00 +02:00
Andrea Mazzoleni
5fb82d6195 Change the AVX512BW generation to use pshufb also for Q parity 2026-06-03 22:01:00 +02:00
Andrea Mazzoleni
d9798b6377 Extend the pshufb table to include the Q parity coefficients 2026-06-03 22:01:00 +02:00
Andrea Mazzoleni
eff01f8c8f New displacement benchmarks 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
14053fb682 Simplify GFNI implementations 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
31d6c05eea Always build RAID test with USE_RAID_AES 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
e3a0671c00 Assume the assembler supports all x86 SSE/AVX instructions 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
00d272a8b9 Extend the RAID regression test to detect unset parity 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
c0c10197bd Revise the RAID library Makefile 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
2a3f1e5f2f Be more clear when GFNI is really used 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
821a0e444e Optimize AVX512 gen1 parity with the vpternlogq instruction 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
911b22db82 Update TODO 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
7e7751a68a Add tables for the AES Polynomial 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
efaf9c7906 Update TODO 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
eee60499bd Update documentation about snapshots 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
31c394ec84 Comment about the RAID optimizations 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
914a0216b4 Use a simpler approach in the new AVX512 generation functions 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
338c7266fd Revise manpage pattern section 2026-06-03 22:00:59 +02:00