GEFS on OpenBSD: A Early Preview

Sep 16, 2026 12:12 AM - 1 hour ago 2
[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
More