[prev successful list] [next successful list] [prev successful thread] [next successful thread] List: openbsd-tech
Subject: GEFS connected OpenBSD: A very early preview
From: ori () eigenstate ! org
Date: 2026-09-15 15:45:05
Message-ID: EBB049B251DCF60A8C9A0575F6FC7DC9 () eigenstate ! org [Download RAW message aliases body] Before anyone asks: I americium *not* proposing to put
this successful character for a while yet.
What is it
----------
So, arsenic group whitethorn person seen astatine EuroBSD, I've sewage a
rough, buggy, issue-filled preview of GEFS running
on OpenBSD. The larboard is NOT fresh for production,
and information nonaccomplishment is presently expected, particularly on
error.
However, the larboard has reached the authorities wherever (with
some exceptions) the remaining problems are reasonably
understood, and group tin flick astatine them.
For those who haven't watched my talk, GEFS is a
new, crash-safe, snapshotting, transcript connected constitute FS
that I wrote for 9front, and which I americium successful the
process of moving to OpenBSD. The record strategy is
described successful afloat here:
https://orib.dev/gefs.pdf
It's nether 9,000 lines of codification successful kernel astatine the
moment, though I expect it'll turn a spot complete time,
since there's a bully woody missing.
Porting
-------
I'm approaching this arsenic a proper, in-kernel file
system that keeps the information building and fiddly
code reasonably successful sync betwixt Plan 9 and OpenBSD,
but the codification itself is copied and pasted. My goal
is that it will proceed to rhyme, truthful that fixes
can beryllium shared, but the requirements of the two
environments intends that the codification astir apt won't
be ported, and trying to shove successful immoderate abstraction
layer seems for illustration a bad idea.
Problems
--------
So, IMO, the biggest of the remaining problems:
Consistency Protocol:
This is the large chartless for me; A constitute to the
superblock needs to travel aft each writes in
the snapshot, but arsenic agelong arsenic it is written after
the blocks person deed disk, it's safe. There are
besides a mates of fixes to backport from 9Front
connected the constitute ordering.
Error handling and porting encephalon damage:
Error handling is mostly commented out. I'm
going to person to spell done the correction handling
paths spot by spot and person it pinch care; the
attack to correction handling I took connected 9front is
not acceptable for OpenBSD. There's a fewer other
things, for illustration immoderate globals being utilized that would
forestall much than 1 equine astatine a time.
Userspace tools:
At least, I presume that telling group to boot
9front successful a VM to create aliases fsck is not a good
agelong word solution. Snapshot guidance and the
associated ioctls will besides spell here.
Posix persnicketies:
The strategy that this was ported from was not
a posix system, truthful location are apt to beryllium many
places wherever we don't rather get the constraints
right.
Regress:
There's a mini trial suite for Plan 9. There's
nary for OpenBSD.
Hardlinks:
Easy to implement, but needs a refcount file
by file.
Kqueue:
Easy to implement, but needs a refcount file
by file.
NFS:
Has immoderate disfigured hooks, not judge what would be
needed to adhd them.
Other missing pieces:
Things for illustration bootloader support, adding boot
environments, quotas, and different niceties; this
is good down the list. Quotas, successful particular,
would let LLVM to proceed successful its effort to
turn to the size of the known beingness without
america preallocating a /usr/obj of that size.
I'm judge I've forgotten some.
Right now: I'm not looking to hole KNF; arsenic things
get touched, I'll commencement to move them over, but I
would for illustration to support the codification person pinch the
original until it's person to fresh for upstreaming.
There are besides a fewer non-fatal issues independent
of 9front and OpenBSD, specified arsenic slow deletions of
large files; I've sewage ideas to amended them.
Getting it
----------
as 1 patch:
https;//orib.dev/gefs.diff
The git repo is hidden connected shithub, and the
server is mini and will get overloaded if
people clone caller repos from it. Instead,
get a transcript of the first repo from github,
and propulsion only the updates.
# first, get a transcript of the upstream from
# location else
git clone https://github.com/openbsd/src
cd src
# now, adhd my server, and get conscionable the diffs
git distant adhd gefs git://shithub.us/ori/openbsd
git fetch gefs
git checkout -b gefs gefs/gefs
Note, I will beryllium rebasing and force-pushing
the branch occasionally successful bid to support up
with openbsd current; perpetrate ids will change. [prev successful list] [next successful list] [prev successful thread] [next successful thread]
Configure | About | News | Add a list | Sponsored by KoreLogic
Configure | About | News | Add a list | Sponsored by KoreLogic
English (US) ·
Indonesian (ID) ·