Commit Graph

39 Commits

Author SHA1 Message Date
Miroslav Crnic
0436fe878c kmod: configurable span cache retention 2025-11-07 10:26:10 +00:00
Francesco Mazzoli
3aff31a026 Unbreak old kernels 2025-10-03 16:36:19 +00:00
Francesco Mazzoli
75b3808a0e Remove sysctl sentinels
You shouldn't put it from 6.11 onwards and in fact they mess things
up with CONFIG_RANDSTRUCT.

See <https://github.com/openzfs/zfs/issues/16620>
2025-10-03 11:08:45 +01:00
Francesco Mazzoli
03a2a08ec9 Linux 6.12 2025-10-03 11:08:45 +01:00
Joshua Leahy
7a4e466ac6 Make TernFS open source 2025-09-17 18:20:23 +01:00
Miroslav Crnic
92d25d04da shuckle: rename to registry prepare for replace 2025-09-08 08:59:08 +00:00
Miroslav Crnic
be5ebc6a79 kmod: quick support for kernels up to 6.8 2025-09-04 12:12:56 +00:00
Francesco Mazzoli
110705db8d EggsFS -> TernFS rename
Things not done because probably disruptive:

* kmod filesystem string
* sysctl/debugfs/trace
* metrics names
* xmon instance names

Some of these might be renamed too, but starting with a relatively
safe set.
2025-09-03 09:29:53 +01:00
Miroslav Crnic
491c3628ff kmod: ifdef compat up to kernel 6.8.12 2025-09-02 13:23:34 +00:00
Miroslav Crnic
88909c1f7c kmod: kernel 5.12/5.14 support 2025-07-02 14:55:39 +01:00
Miroslav Crnic
4ef058db8a kmod: periodically refresh span info on read failures 2025-06-25 16:21:00 +01:00
Miroslav Crnic
5e17740091 kmod: remove stripe reads 2025-03-24 14:02:14 +00:00
Saulius Grusnys
e06b3463f9 retry logic in page reads (#330) 2024-09-02 11:15:32 +01:00
Saulius Grusnys
8c4bd4d9e6 [kmod] add ability to read single page from blockservice (#300)
* [kmod] add ability to read single page from blockservice

* Update kmod/span.c

Co-authored-by: Miroslav Crnic <miroslav.crnic@xtxmarkets.com>

---------

Co-authored-by: Miroslav Crnic <miroslav.crnic@xtxmarkets.com>
2024-08-21 15:50:28 +01:00
Francesco Mazzoli
260656105d Cahgne caching from span to stripe level (#275)
Also added additional stripe cache sysfs metrics.

---------

Co-authored-by: Saulius Grusnys <saulius.grusnys@xtxmarkets.com>
2024-06-18 13:39:50 +01:00
Saulius Grusnys
8565726989 sysctl param to disable ftruncate support 2024-03-21 09:24:21 +00:00
Francesco Mazzoli
488f096eb9 Stat files/directories speculatively on readdir
Also, split the timeouts for dentries and for stats. We generally
don't care if stats are out of dates, but dentries should be up
to date.

The code leaves various aspects to be desired:

* No attempt is made to only send stats when needed -- it is always
    done. It might be a good idea to instead wait for the first two
    stats to come back.

* Theres quite a bit of code duplication.

* It's pretty wasteful to have so many different packets for the
    stats. It'd be much better to pack multiple requests and multiple
    responses in single packets.

    This could be done simply by allowing many requests to come
    in the same packet (just one after the other would be fine),
    and same for the responses. We can still use the protocol and
    request id to keep track of things anyway.
2024-03-19 20:29:23 +00:00
Saulius Grusnys
682f5f5a3a Remove interruptible functions
See #187.
2024-03-11 15:33:57 +00:00
Andrew Chen
d06ce9584e changes to support linux 5.10 2024-01-08 16:14:18 +00:00
Saulius Grusnys
1070c96571 kmod retry after ENETUNREACH, relatime, eggstest fix (#122)
* kmod retry after ENETUNREACH, relatime, eggstest fix

* include missed file

* fix retry, correct time counting in atime
2023-11-21 16:00:18 +00:00
Saulius Grusnys
2ce5586eb9 Periodically refresh metadata info in kmod, use two IPs for shuckle
Fixes #112.

Co-authored-by: Francesco Mazzoli <francesco.mazzoli@xtxmarkets.com>
2023-11-14 13:49:36 +00:00
Francesco Mazzoli
37ce3be74c Implement utime-like functions
Also, update atime when opening a file.
2023-07-21 06:28:48 +00:00
Francesco Mazzoli
632d3492bf Support nonlinear skb in metadata reqs 2023-07-19 21:44:17 +00:00
Francesco Mazzoli
19d725bcc9 Cache/timeout write block sockets too 2023-07-10 14:09:51 +00:00
Francesco Mazzoli
9b19c9a7a8 More assorted fixes/improvements
I'm disabling prefetching since it doesn't make much of a difference
rightn now and it also seems to not do the right thing sometimes. I
don't want to fully investigate at this moment.
2023-07-10 09:43:20 +00:00
Francesco Mazzoli
0fef0a34ed Cache and timeout fetch block sockets 2023-07-09 19:50:37 +00:00
Francesco Mazzoli
ca5debd8e7 Configurable timeouts 2023-07-06 19:39:12 +01:00
Francesco Mazzoli
7954d01b41 Configurable metadata reqs timeouts 2023-07-06 19:39:12 +01:00
Francesco Mazzoli
d5fea6c08c Retry when block services are unavailable in kmod 2023-07-06 19:39:12 +01:00
Francesco Mazzoli
d076941ce8 Simplify block write/fetch
And hopefully reduce the likelihood of bugs. On the write end, given
that we do things less asynchronously, things might be a bit slower,
but I think the simplification is worth it for now.

Also, fix/improve a bunch of other stuff.
2023-06-08 11:59:09 +00:00
Francesco Mazzoli
f54727418f CPP hygiene, debug leftovers 2023-06-03 18:03:49 +00:00
Francesco Mazzoli
cd86e632e2 Implement RS recovery, although it won't really be used now...
...since it only relies on block service flags, and we don't
set them right now.
2023-06-03 17:27:54 +00:00
Francesco Mazzoli
a4bc32a18f Span drop improvements
We could get into situations where async droppings were scheduled
at every read.
2023-05-26 17:22:43 +00:00
Francesco Mazzoli
1a701f22a2 Actually reclaim spans 2023-05-25 10:22:31 +00:00
Francesco Mazzoli
47c1022896 Bugfixes 2023-05-23 22:10:11 +00:00
Francesco Mazzoli
8f32ecc1b6 Cached spans reclamation
Right now this is very crude (global spinlock), but reasonably simple.
We can improve if needed.
2023-05-23 16:57:29 +00:00
Francesco Mazzoli
b292333baf Fix bad unaligned access of AVX vectors 2023-05-19 14:06:22 +00:00
Francesco Mazzoli
972bb55356 A few tweaks
Notably, make heavy debug output a sysctl flag.
2023-05-19 10:57:26 +00:00
Francesco Mazzoli
6addbdee6a First version of kernel module
Initial version really by Pawel, but many changes in between.

Big outstanding issues:

* span cache reclamation (unbounded memory otherwise...)
* bad block service detection and workarounds
* corrupted blocks detection and workaround

Co-authored-by: Paweł Dziepak <pawel.dziepak@xtxmarkets.com>
2023-05-18 15:29:41 +00:00