Landed initial utask and cache mode support
Zach Brown
zab at zabbo.net
Fri Mar 21 13:29:02 PDT 2025
Hi all,
I wanted to send a note to highlight the arrival of two significant
pieces of ngnfs.
The first change is the negotiation of cache modes between the network
client and the devd device servers. The block IO network messages are
augmented a bit to request and grant read or write mode associated with
a cached block. The devd server sends mode revocation messages around
to ensure that all clients are compatible with granted modes.
To support this the client block cache was significantly cleaned up
(imnsho :)) to make it a lot easier to make atomic transitions between
complicated states. It's no longer a pre-cmpxchg sea of atomic bit
operations that made me sad.
The second change is to move from a multi-threaded runtime in the
userspace processes to a model of voluntary pre-emption amongst stacks
in a single threaded context. It makes the userspace processing paths
so very much easier to work with. As part of this, we use io_uring to
drive forward progress in response to external events. Personally, I'm
pretty excited to see how far we can push this.
There's a lot of iteration to do on these foundations, of course, but
this brings us a lot closer to building fs structures in a consistent
block store that's distributed across the network.
- z
More information about the ngnfs-devel
mailing list