<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>undeadly.org</title>
  <subtitle>Browse aymeric&#39;s, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.</subtitle>
  <id>https://aggr.aymericbeaumet.com/sources/undeadly.org/</id>
  <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/sources/undeadly.org/"/>
  <link rel="self" type="application/atom+xml" href="https://aggr.aymericbeaumet.com/sources/undeadly.org/atom.xml"/>
  <updated>2026-11-01T20:13:29+00:00</updated>
  <author>
    <name>aymeric&#39;s</name>
  </author>
  <generator version="2.0.0" uri="https://github.com/aymericbeaumet/aggr">aggr</generator>
  <entry>
    <id>urn:aggr:item:1f8a38b5c335b7b846715128d460e4f42cdfb054</id>
    <title type="text">Work on GEFS (the Good Enough File System) for OpenBSD progresses</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/lobste-rs/2026-11-01-work-on-gefs-the-good-enough-file-system-for-openbsd/"/>
    <link rel="via" type="text/html" href="https://www.undeadly.org/cgi?action=article;sid=20261101115637"/>
    <published>2026-11-01T20:13:29+00:00</published>
    <updated>2026-11-01T20:13:29+00:00</updated>
    <author>
      <name>undeadly.org via jbauer</name>
    </author>
    <category term="news"/>
    <category term="openbsd"/>
    <source>
      <title>Lobsters: Top Stories of the Past Week</title>
    </source>
    <summary type="text">Comments</summary>
    <content type="html">&lt;p&gt;Contributed by &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://nxdomain.no/~peter/blogposts/&quot;&gt;Peter N. M. Hansteen&lt;/a&gt; on 2026-11-01 from the most excellent file shredder dept.&lt;/p&gt;
&lt;p&gt;As &lt;em&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.undeadly.org/cgi?action=article;sid=20260918115729&quot;&gt;previously&lt;/a&gt;&lt;/em&gt; reported, Ori Bernstein is working on GEFS, the &amp;quot;Good Enough File System&amp;quot; imported to &lt;em&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.openbsd.org/&quot;&gt;OpenBSD&lt;/a&gt;&lt;/em&gt;, and his &lt;em&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://2026.eurobsdcon.org/&quot;&gt;EuroBSDCon 2026&lt;/a&gt; &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://events.eurobsdcon.org/2026/talk/NVMSCJ/&quot;&gt;presentation&lt;/a&gt;&lt;/em&gt; was very well received. In fact, the video is among the most frequently played from the conference.&lt;/p&gt;
&lt;p&gt;Now Ori has followed up with more evolved code that includes several important steps towards makin the new file system fit for general use. In a &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://marc.info/?l=openbsd-tech&amp;amp;m=179346643071941&amp;amp;w=2&quot;&gt;message&lt;/a&gt; to &lt;code&gt;tech@&lt;/code&gt;, Ori writes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;List:       openbsd-tech
Subject:    Re: GEFS on OpenBSD: A very early preview
From:       ori () eigenstate ! org
Date:       2026-10-31 17:08:42

So, it&amp;#39;s probably time for a few updates. First
off, thanks to Martijn, and everyone else who
tried it out and sent patches.

Everything is updated and rebased, and the diff
has been regenerated with all of the lastest.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot; data-language=&quot;Makefile&quot;&gt;&lt;span class=&quot;syntax-source syntax-makefile&quot;&gt;I&amp;#39;ve gone through a the error handling code. In
theory the filesystem will handle errors mostly
correctly. There are probably still places where
theory diverges from reality. I&amp;#39;ve also forward
ported most of the important bugfixes from 9front.

The file system now leaves the first FS block
unused by default -- we can put disklabels there,
which makes it hard to put the superblock there as
well.

Some userspace tools have been done (you can now
mkfs on openbsd!), but snapshot control hasn&amp;#39;t.
I&amp;#39;m thinking we have a userspace &amp;#39;gefs&amp;#39; program
that lets you handle this, trying to keep the
interface similar to the 9front ctl file. The
&lt;span class=&quot;syntax-meta syntax-function syntax-makefile&quot;&gt;&lt;span class=&quot;syntax-entity syntax-name syntax-function syntax-makefile&quot;&gt;commands below should suffice&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-keyword syntax-operator syntax-assignment syntax-makefile&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;syntax-meta syntax-function syntax-arguments syntax-makefile&quot;&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function syntax-body syntax-makefile&quot;&gt;&lt;/span&gt;
  gefs debug [0|1]
  gefs usereserve
  gefs retain snap timespec
  gefs snap name newname
  gefs fork name newname

The consistency protocol is still the biggest
missing piece; I&amp;#39;ve been reading the old code
for softupdates, since it had the same flavor
of problem.

what gefs wants, in the ideal case, is some way
to put ordering barriers in the commit phases,
while still accepting new block i/o, something
&lt;span class=&quot;syntax-meta syntax-function syntax-makefile&quot;&gt;&lt;span class=&quot;syntax-entity syntax-name syntax-function syntax-makefile&quot;&gt;like the following sequence of steps&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-keyword syntax-operator syntax-assignment syntax-makefile&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;syntax-meta syntax-function syntax-arguments syntax-makefile&quot;&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function syntax-body syntax-makefile&quot;&gt;&lt;/span&gt;
	0) normal use, generate dirty blocks and
	  write back in any order.
      holding mutlk {
		1) barrier(), ensure that all blocks
		 written before the commit will be
		 on disk before the commit finishes
		2) enqueue free list/deadlist data
		3) prepare arena header/footer + superblock
	 }
	4) enqueue arena headers
	5) barrier()
	6) enqueue superblock
	7) enqueue arena footers
	8) wait for enqueued blocks to hit disk
	9) free blocks no longer used by previous gen

on 9front, I have a priority queue of blocks that
are sorted by (gen, addr) tuples, which means that
writes within a generation are flushed to disk as
sequentially as they can be, while not crossing
generation boundaries.

I&amp;#39;m currently thinking I&amp;#39;ll implement the same in
OpenBSD -- launch syncer kprocs that do synchronous
I/O to the block device. If we kick things out of
cache and write it back to disk early, that should
generally be safe -- The only blocks the buffer
cache must not reorder are the arena headers and
superblocks, so a flag to pin them unwritten may
be all that&amp;#39;s needed here.

I&amp;#39;m open to other ideas, though.

&lt;span class=&quot;syntax-meta syntax-function syntax-makefile&quot;&gt;&lt;span class=&quot;syntax-entity syntax-name syntax-function syntax-makefile&quot;&gt;Quoth ori@eigenstate.org&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-keyword syntax-operator syntax-assignment syntax-makefile&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;syntax-meta syntax-function syntax-arguments syntax-makefile&quot;&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function syntax-body syntax-makefile&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Followed by a quoted part of the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://marc.info/?l=openbsd-tech&amp;amp;m=178948744271633&amp;amp;w=2&quot;&gt;previous message&lt;/a&gt; that has the links to the code and documentation.&lt;/p&gt;
&lt;p&gt;If you are as excited as we are about this new file system development and are in a position to test, please do.&lt;/p&gt;
</content>
  </entry>
</feed>
