Commit graph

49 commits

Author SHA1 Message Date
Andrea Mazzoleni
7ac780c0ea Introduce nalloc_nofail 2026-07-13 11:03:57 +02:00
Andrea Mazzoleni
4afa222596 Document why thread_yield is used 2026-07-13 11:03:57 +02:00
Andrea Mazzoleni
3ce5a5b4e5 Merge the CLI and Daemon portable interface 2026-07-13 11:03:57 +02:00
Andrea Mazzoleni
db20376bca Refactor portable support 2026-07-13 11:03:56 +02:00
Andrea Mazzoleni
ebfffa26d2 Remove the unused number of data disks from the vector allocation
The same addressing rules are applied to the parity disks because
they are used as data disks during recovery operations.
2026-07-13 11:03:56 +02:00
Andrea Mazzoleni
03af6db601 Extend io_init() to support arbitrary combinations of data and parity operations 2026-07-13 11:03:56 +02:00
Andrea Mazzoleni
21673eb805 Change commenting style 2026-07-13 11:03:55 +02:00
Andrea Mazzoleni
c8cb392a89 Move task ring list mutation under io_mutex for code hygiene, no bug
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 Advanced / Analyze (c-cpp) (push) Has been cancelled
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
2026-07-06 17:01:34 +02:00
Andrea Mazzoleni
c837a9ace0 Log more information in assertion failure 2026-06-15 11:16:19 +02:00
Andrea Mazzoleni
5a664a4100 Avoid the limitation of 255 disks for the IO subsystem 2026-05-21 16:08:03 +02:00
Andrea Mazzoleni
0d0431a907 Simpler Copyright string 2026-04-09 17:56:49 +02:00
Christoph Hellwig
60269a1236 Use SPDX (https://spdx.dev/) tags to identify the license used for each
file, and a COPYING file explaining the licensing scheme, with the actual
licenses listed in the LICENSES/ directory.
2026-04-02 16:01:37 +02:00
Andrea Mazzoleni
2b1e356099 Always use the mutex when scanning disks 2026-02-28 09:18:20 +01:00
Andrea Mazzoleni
881add341f Some more assertions 2025-10-27 16:22:52 +01:00
Andrea Mazzoleni
36b20e5d0e Explain the internal functionality of the IO system 2025-10-27 15:55:13 +01: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
Allan Clark
5886923bb1 Add bandwidth limit feature --bw-limit 2025-03-29 19:29:55 +01:00
Andrea Mazzoleni
eb19c79039 Increase default disk cache to 16 MiB 2022-01-09 17:46:10 +01:00
Andrea Mazzoleni
4653dde7c5 Fixed false positive warnings from static analysis
The number of buffer and the hash size are always a small number. It never reash the 4 GB limit.
2021-05-30 15:50:13 +02: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 Mazzoleni
2a5b5499c4 Avoid to recompute the block status multiple times
Store it in a bit vector and reuse the result.
2021-05-22 11:37:36 +02:00
Andrea Mazzoleni
f0a5268d32 Avoid to use the filesystem mutex when it's not necessary
This speed-up a bit the check and fix that are monothreads
2021-05-22 10:14:56 +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
f68694904d Cleanup the memory messages 2018-01-14 15:20:57 +01:00
Andrea Mazzoleni
b9740e06f4 Print filenames in the stats screen 2017-11-24 22:17:24 +01:00
Andrea Mazzoleni
21241c5078 Preliminary advise support 2016-05-15 14:50:59 +02:00
Andrea Mazzoleni
8d3cefb302 Allow compilation without pthread support 2016-03-18 18:45:35 +01:00
Andrea Mazzoleni
fe3ad31cbb Allow to disable the multithread mode
Use the --test-io-cache=1 option to use a special
monothread mode.
2016-03-18 18:33:11 +01:00
Andrea Mazzoleni
93f25c4bc4 Rename the io->mutex variable to io->io_mutex
This simplifies text search for mutexes.
2016-02-13 16:05:20 +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
42330c05b6 In Windows use the safe signaling
This mostly to detect possible problems in the Windows pthread implementation
2016-02-12 19:10:01 +01:00
Andrea Mazzoleni
29ed19174f Cleanup pthread usage
No functional change.
2016-02-06 15:08:11 +01:00
Andrea Mazzoleni
62a760a42b Change two wrong block_off_t types 2016-01-31 18:58:02 +01:00
Andrea Mazzoleni
252d613eae Print stats of the number of cached blocks 2016-01-27 20:37:31 +01:00
Andrea Mazzoleni
377352e64f Default to 8 MiB of blocks for the IO cache 2016-01-20 22:03:14 +01:00
Andrea Mazzoleni
e2c4399e28 More precise disk usage time
When we wait, we now count the time for all the waiting disks,
and not only for the first one that finish.
2016-01-20 21:30:00 +01:00
Andrea Mazzoleni
2156c864b7 Remove the shadow 'index' variable with older gcc 2016-01-18 22:58:00 +01:00
Andrea Mazzoleni
9ade11483e Fix some misuses of the MiB and MB units 2016-01-16 07:29:00 +01:00
Andrea Mazzoleni
7cb33cc046 Add the new --test-io-cache option to control the cache size 2016-01-11 18:54:53 +01:00
Andrea Mazzoleni
2e12b10590 Signal condition variables outside the lock
This reduces the number of context switches, because the
signaled thread can start immediately.

Some interesting discussion is at:

Condvars: signal with mutex locked or not?
http://www.domaigne.com/blog/computing/condvars-signal-with-mutex-locked-or-not/

Calling pthread_cond_signal without locking mutex
4544494 (4544494)
2016-01-09 10:25:56 +01:00
Andrea Mazzoleni
8e47e2b024 Signal the 'done' condition only at the waiting index
This reduces the number of context switches.
2016-01-09 10:25:56 +01:00
Andrea Mazzoleni
22d806a04f Minor beatification at the IO module 2016-01-09 10:25:56 +01:00
Andrea Mazzoleni
fb404ef149 Print the amount of memory used for MT 2016-01-09 10:25:56 +01:00
Andrea Mazzoleni
4191989fa7 Restore error reporting for parity write 2016-01-09 10:25:56 +01:00
Andrea Mazzoleni
a3121c31c5 Add support for multithread parity writing in sync 2016-01-09 10:25:56 +01:00
Andrea Mazzoleni
62b7587c3a IO functions renaming to prepare for parity write support
No functional change.
2016-01-09 10:25:56 +01:00
Andrea Mazzoleni
cbf2040b89 Add mutex protection at the filesystem structure
In sync we need to modify the filesystem, like to call
fs_deallocate(). We need then proper protection.
This also removes the need of multiple fs_last cached value.
2016-01-09 10:18:14 +01:00
Andrea Mazzoleni
51af8931b7 Add support for multithread data and parity reading in scrub 2016-01-09 10:18:14 +01:00