Commit graph

69 commits

Author SHA1 Message Date
Andrea Mazzoleni
d452b109bc More regression tests
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 / Analyze (push) Waiting to run
2025-10-28 12:15:50 +01:00
Andrea Mazzoleni
8ae0599c64 Fix quoting for printed file paths
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 / Analyze (push) Waiting to run
2025-10-27 01:07:38 +01:00
Andrea Mazzoleni
21acc31bf1 Beautify code with uncrustify 2025-10-26 18:11:45 +01:00
Andrea Mazzoleni
c1e101699a Avoid stale messages on terminal to appear in new lines 2025-10-12 23:55:32 +02:00
Andrea Mazzoleni
649b3f1f0b Remove the SMART attribute 193 from the failure probability computation
Some checks failed
Build / build-mac (push) Has been cancelled
Build / build-linux (push) Has been cancelled
Build / build-win (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
2025-09-29 16:25:49 +02:00
Andrea Mazzoleni
906d215bf5 Add thermal protection options: temp_limit and temp_sleep
Some checks failed
Build / build-mac (push) Has been cancelled
Build / build-linux (push) Has been cancelled
Build / build-win (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
Introduce two new configuration directives to protect disks from overheating:

- temp_limit <TEMPERATURE_CELSIUS>
  Sets the maximum allowed disk temperature. When any disk exceeds this limit,
  SnapRAID stops all operations and spins down the disks.

- temp_sleep <TIME_IN_MINUTES>
  Specifies how long disks remain in standby after a temperature event.
  Defaults to 15 minutes.

These options allow SnapRAID to automatically pause activity and cool down
disks when a temperature threshold is reached, improving data safety and
hardware longevity.
2025-09-27 16:05:05 +02:00
Andrea Mazzoleni
30474cfb80 Ensure that writer buffers are flushed before synchronizing parity writes
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 / Analyze (push) Waiting to run
2025-09-25 15:32:34 +02:00
Andrea Mazzoleni
5ad7f9acfc Use POSIX_FADV_NOREUSE to avoid page-cache pollution
This adds support for POSIX_FADV_NOREUSE, which advises the kernel not to
cache read data. It's available starting from Linux kernel 6.3.
To maintain compatibility with older kernels, POSIX_FADV_DONTNEED is still
used.
2025-05-08 09:18:50 +02:00
Andrea Mazzoleni
a605442c8c Fix typos in messages 2023-12-09 15:35:45 +01:00
Andrea Mazzoleni
02d170c004 Remove all scan buffers from the stack
This reduces even more the stack utilization.
2022-01-09 10:23:09 +01:00
Andrea Mazzoleni
53801b407a Remove the need of the MingW pthread layer on the Windows port
Now everything is implemented usign Windows native calls.
2021-05-26 00:21:52 +02:00
Andrea Gelmini
986e9b4131 Fix typos 2020-05-26 12:50:15 +02:00
Andrea Mazzoleni
5bac3d64a6 Fix build errors due new gcc 10 default for -fno-common 2020-05-18 15:28:55 +02:00
Andrea Mazzoleni
17bec43be2 Set time of pool links
This avoid index refresh from various applications.
2017-05-01 16:07:04 +02:00
Andrea Mazzoleni
1681f7c9c7 Fix quoting in Linux
We cannot quote UTF-8 chars.
2017-02-24 22:26:35 +01:00
Andrea Mazzoleni
6f16cddd5b Rename string functions to avoid variable shadow 2016-11-06 16:06:26 +01:00
Andrea Mazzoleni
d65450dda8 Don't allow ENOSYS for fadvise(DONT_NEED)
We want to know if it's failing. In case, a different
advise method has to be used.
2016-10-29 08:08:52 +02:00
Andrea Mazzoleni
20e9f7de41 Ignore fadvise if it return ENOSYS
This happens in ARM platform because fadvise is
differently implemented by the kernel and glibc
may not support it yet.
2016-10-23 22:03:02 +02:00
Andrea Mazzoleni
9d5bd3846a Fix reading of disk capacity from smartctl
In Windows the separator can be a space.
Like: "User Capacity:    2 000 398 934 016 bytes"
2016-10-13 19:13:18 +02:00
Andrea Mazzoleni
a90f8db3c0 Ingnore the SMART Command Timeout for Seagate SMR disks 2016-10-13 18:57:14 +02:00
Andrea Mazzoleni
faa530e83e Allow to change the output format
The new test option allows to restore the past
behaviour, just in case...
2016-10-11 20:30:12 +02:00
Andrea Mazzoleni
00cd931fad Add partial support for SCSI smart attributes
SCSI disks report information in a different way.
2016-10-05 00:12:26 +02:00
Andrea Mazzoleni
7d65eb83b1 Improve the discard-window write strategy
Now flush the window before discarding it in the previous
loop, following exactly the Linus advices.
2016-09-09 19:52:39 +02:00
Andrea Mazzoleni
56c129f825 Remove compiler warnings in Windows 2016-06-30 21:17:44 +02:00
Andrea Mazzoleni
dd87022490 Remove unnecessary prefix char in escaping
We can encode it at higher level.
2016-05-29 18:23:43 +02:00
Andrea Mazzoleni
256db0e595 Rename internal esc/quote functions
No functional change
2016-05-29 18:19:32 +02:00
Andrea Mazzoleni
20cd1f86f8 Fix typos in comments
No functional change.
2016-05-23 22:37:18 +02:00
Andrea Mazzoleni
3c6c5c07c7 More extensive use of data_off_t
This avoids the need of some type cast.
2016-05-18 20:58:41 +02:00
Andrea Mazzoleni
397c58c41e Add new IO window advise modes 2016-05-18 20:45:02 +02:00
Andrea Mazzoleni
21241c5078 Preliminary advise support 2016-05-15 14:50:59 +02:00
Andrea Mazzoleni
6053096862 Extend the split function to support multiple delimiters 2016-04-26 21:26:15 +02:00
Andrea Mazzoleni
4cc1109444 Add support for null device numbers
They are resolved using the mountinfo interface and
mapping them to the block device listed there.
2016-04-23 16:24:26 +02:00
Andrea Mazzoleni
36a4d24333 Source code beautification
Done with uncrustify.
2016-04-10 22:46:09 +02:00
Andrea Mazzoleni
8fbd8b35ea Add support for escaping in Windows with the '^' char 2016-03-05 12:05:11 +01:00
Andrea Mazzoleni
0707b1f446 Error check all the thread operations
No error is expected, and this enforces that expectation.
2016-02-13 16:05:19 +01:00
Andrea Mazzoleni
3c6a7bac3e Make the conditional variable signaling configurable at runtime
This allows to verify if the signaling outside the mutex gives
any performance improvment.
2016-02-13 16:05:19 +01:00
Andrea Mazzoleni
840ec7b1c3 Use precise quoting for the shell commands 2016-02-10 21:30:54 +01:00
Andrea Mazzoleni
12b30c198e Use a thread-safe esc() function with a local buffer 2016-02-09 23:12:33 +01:00
Andrea Mazzoleni
3040099e48 Optimizes console writes for Windows 2016-01-30 09:17:30 +01:00
Andrea Mazzoleni
34d02d4b41 Group print functions 2016-01-27 22:25:02 +01:00
Andrea Mazzoleni
c870b04b66 Refactor locks use in support 2016-01-09 10:25:56 +01:00
Andrea Mazzoleni
5249f9cb04 Fix various typos in comments 2016-01-02 16:52:20 +01:00
Andrea Mazzoleni
7ad70c26f8 Remove the need of helgrind/drd suppression
Using a mutex for protectign the global memory counter
should not affect performance.
2016-01-01 17:57:04 +01:00
Andrea Mazzoleni
c7ed079f79 More info in case of the "Path too long" message 2015-12-12 17:56:44 +01:00
Andrea Mazzoleni
448774fb8f Print also the too long path to help detection 2015-12-12 17:10:31 +01:00
Andrea Mazzoleni
7313e3d9d0 In case of the "Path too long" message prints the stacktrace 2015-12-12 17:10:28 +01:00
Andrea Mazzoleni
452a595067 Adjust verbs in comments 2015-10-07 22:07:20 +02:00
Andrea Mazzoleni
0c3bfb9b48 Remove coverage need for malloc failure functions 2015-10-04 23:17:17 +02:00
Andrea Mazzoleni
de0c437bd2 Put a clear separation between log and msg functions 2015-04-20 22:07:42 +02:00
Andrea Mazzoleni
adbc74f862 Suppress missing file warnings if -m is specified 2015-04-19 21:21:49 +02:00