Broader rework#51
Draft
ericvh wants to merge 35 commits intolionkov:masterfrom
Draft
Conversation
Introduce go.mod with Go 1.26 toolchain and fix vet/platform issues in client tests so go test ./... passes on current Go. Made-with: Cursor
Document the repository structure, module-based usage, and track modernization changes and follow-ups. Made-with: Cursor
Add a multi-stage Dockerfile to run go test (and optional -race) under Linux from macOS/Windows. Made-with: Cursor
Use the repository Dockerfile to build and run the 'test' and 'race' targets on every commit. Made-with: Cursor
Add TCP-based e2e tests covering basic CRUD and directory listing against both the ufs server and the synthetic file server (Fsrv). Made-with: Cursor
Add a Dockerfile that builds an upstream Linux kernel + initramfs, boots QEMU with a virtio-9p export, mounts it via the kernel 9p client, and runs a smoke-test binary. Made-with: Cursor
Parameterize the QEMU+kernel Docker harness for amd64/arm64 and add GitHub Actions jobs on ubuntu-latest and ubuntu-24.04-arm. Made-with: Cursor
Add an AI-generated Werner Herzog–style mirror of README.md plus a CI check to keep the section structure in sync. Made-with: Cursor
Document Docker targets, QEMU kernel 9p client smoke tests, multi-arch CI coverage, and reflect completed work in TODO/CHANGES. Made-with: Cursor
Update README.md (and HERZOG.md mirror) with copy-paste commands and sample output for running the ufs server and listing via the ls client. Made-with: Cursor
Mark recently completed README documentation items as done and keep the docs task list current. Made-with: Cursor
Add unit tests for malformed packets and size bounds. Harden gstr() to avoid panics on truncated string fields. Made-with: Cursor
Extend the QEMU kernel-client smoke test with symlinks, ENOENT checks, chmod/open behavior (best-effort), rename across directories, and best-effort xattr round-trips. Made-with: Cursor
Pin the kernel version in workflow env and use a per-arch, per-kernel-version BuildKit cache scope so kernel layers are reused across commits. Made-with: Cursor
Replace kernel.org tarball download with a shallow git checkout of the target kernel tag to avoid flaky curl fetches in CI. Made-with: Cursor
Support mounting the kernel 9p client against either QEMU virtio-9p or an external diod TCP server, and exercise both backends in CI. Made-with: Cursor
Support qemu virtio-9p, diod TCP, and u9fs (socat) TCP; pass server choice to the guest via kernel cmdline. Build u9fs from a pinned git commit in the test image and run all backends in CI (amd64/arm64). Made-with: Cursor
Set build-push-action platforms and docker run --platform to linux/${arch}
so amd64 and arm64 jobs do not load the wrong architecture under Buildx.
Also restore kernel9p matrix.server entries so KERNEL9P_SERVER is defined.
Made-with: Cursor
Run qemu/diod/u9fs smoke tests as separate steps after a single docker/build-push-action per matrix row (amd64 + arm64), reusing BuildKit GHA cache across commits. Made-with: Cursor
Add a v9fs/test kernel download stage and a kernel9p-test-v9fs target. In CI, arm64 uses the prebuilt kernel-main Image while amd64 continues building locally until a prebuilt bzImage is published. Add a go9p UFS server backend and run the kernel-client smoke test against both QEMU virtio-9p and go9p-ufs. Made-with: Cursor
Drop amd64 kernel-client coverage for now and always use the v9fs/test prebuilt kernel target in the kernel9p job. Made-with: Cursor
Produce initramfs.cpio alongside initramfs.cpio.gz and update the QEMU runner to use the uncompressed initramfs by default, improving compatibility with external prebuilt kernels. Made-with: Cursor
Default kernel9p-qemu CI to use v9fs/test release assets while letting workflow_dispatch override the kernel tag. Made-with: Cursor
Avoid go build failures when git metadata is unavailable or restricted inside the v9fs/docker container. Made-with: Cursor
Add tailored unit tests for each example 9P server and split kernel-client QEMU e2e into per-filesystem jobs, with a dedicated tlsramfs userspace stage. Also update the kernel mount smoke runner and docs for the new harness. Made-with: Cursor
Add overview READMEs for the example servers and clients and link them from the top-level README. Made-with: Cursor
Expand example documentation with internal structure notes for ramfs/timefs/clonefs/tlsramfs and a quick mental model for srv.File trees and client example flow. Made-with: Cursor
Document how to build and serve synthetic filesystems with p/srv, including common patterns like control files, clone allocators, and streaming nodes. Made-with: Cursor
Add a new server example implementing a minimal Plan 9-style /net/tcp conversation interface (clone/ctl/data/status/local/remote) backed by Linux TCP sockets, plus an end-to-end unit test and documentation. Made-with: Cursor
Replace the devnet TCP-only example with netfs, a broader Plan 9-style /net surface including a working /net/tcp conversation interface plus minimal stubs for ip(3) protocol directories, ipifc/ndb/log/ipselftab, and ether(3)/bridge(3) entry points. Made-with: Cursor
Document the netfs example in the top-level README and add broader netfs unit tests covering ndb limits, ipifc/ipselftab, ether0 type tracking, bridge ctl logging, and placeholder protocol directories. Made-with: Cursor
Remove the HERZOG.md heading sync check from GitHub Actions and keep the guidance in AGENTS.md instead. Made-with: Cursor
Include netfs in kernel9p-qemu and extend the guest harness/kernel smoke test to validate basic /net surfaces under both 9p2000 and 9p2000.u mounts. Made-with: Cursor
Document the netfs example's hierarchy, the TCP clone/ctl/data conversation model, and what is implemented vs stubbed. Made-with: Cursor
Add read-only error files in clone-allocated session directories (tcp and ether0) so Linux mounts can retrieve detailed last error strings after ctl write failures. Made-with: Cursor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a broader rework inclusive of the modernization changes from before. I'm trying to improve the testing framework, specifically against the synthetic file systems since those are our focus.