chimeraproject
Status & conformance · §

Project Maturity

The NFSv3, NFSv4 (4.0 / 4.1 / 4.2), and SMB2/3 servers implement the full data-path and metadata operation set and pass real-Linux-client conformance suites. The data path — read, write, metadata, locking — is mature and well exercised. NFSv4 reboot-recovery state and SMB durable handles now persist across restarts, and NFSv3 gained NSM/statd lock recovery. Kerberos for NFS and several advanced protocol features remain present-but-incomplete or absent. Those gaps are listed below.

§ 01 At a glance

Four protocol servers over one pluggable async VFS. Because they share the VFS, all of them work across every backend — in-memory, Linux passthrough, and persistent.

NFSv3 Mature

All 21 procedures, full MOUNT v3, and a real NLM byte-range lock manager routed through the unified VFS lease layer. TCP and RPC-over-RDMA.

NFSv4 · 4.1 · 4.2 Mature core

Single COMPOUND handler across all three minor versions. Sessions, state, ACLs, xattrs, delegations, and pNFS (flex-files). Reboot-recovery records and the reply cache now persist to the VFS — clients and state survive a restart.

SMB2 · SMB3 Broad coverage

All 19 commands, dialects through 3.1.1, signing, encryption, oplocks & leases (file and directory), durable / persistent handles, change-notify, transport compression, copy-offload, ACLs, Kerberos. Several advanced features ship disabled by default.

S3 Objects + buckets

Object data path — GET/PUT/HEAD/DELETE, ranged reads, full multipart, SigV4/V2 — plus dynamic bucket create/delete/list and paginated prefix/delimiter listing. Versioning, ACLs, SSE, and conditional requests are absent.

§ 02 Backends

Every protocol sits on the same VFS, so it runs identically across all backends. A handful of features are backend-specific and noted in the per-protocol detail.

memfs in-memory linux passthrough io_uring cairn persistent diskfs persistent
§ 03 Feature support, protocol by protocol

Every feature each protocol revision may implement, split into mandatory (required to claim the revision) and optional capabilities. A marks what the Chimera server implements today; a dash marks what it does not. Sub-features (cipher suites, layout types, lease bits, …) are listed under their parent.

NFSv3RFC 1813
36 / 43 supported

Mandatory 22 / 22 supported

  • NULL
  • GETATTR
  • SETATTR
  • LOOKUP
  • ACCESS
  • READLINK
  • READ
  • WRITE
  • CREATE
  • MKDIR
  • SYMLINK
  • MKNOD
  • REMOVE
  • RMDIR
  • RENAME
  • LINK
  • READDIR
  • READDIRPLUS
  • FSSTAT
  • FSINFO
  • PATHCONF
  • COMMIT

Optional 14 / 21 supported

  • MOUNT protocol v3
  • NLM locking
  • NSM status monitor
  • Safe asynchronous writes
  • Weak cache consistency
  • Exclusive create
  • Hard links
  • Symbolic links
  • Special files
  • AUTH_SYS / AUTH_NONE
  • RPCSEC_GSS / Kerberos
    • krb5
    • krb5i
    • krb5p
  • Duplicate request cache
  • NFSACL sideband
  • RQUOTA
  • 64-bit sizes & offsets
  • UDP transport
  • TCP transport
  • RPC-over-RDMA transport
NFSv4.0RFC 7530
19 / 26 supported

Mandatory 13 / 17 supported

  • COMPOUND / CB_COMPOUND
  • Filehandle operations
  • Stateful OPEN / CLOSE
  • Share reservations
  • Integrated byte-range locking
  • Lease-based state
  • State recovery / grace
  • Required attributes
  • Core data & namespace ops
  • Security negotiation
  • RPCSEC_GSS support
    • krb5
    • krb5i
    • krb5p
  • String-based identities
  • UTF-8 names
  • Filehandle volatility

Optional 6 / 9 supported

  • File delegations
    • Read delegations
    • Write delegations
  • NFSv4 ACLs
  • Named attributes
  • Migration & replication
  • Public filehandle
  • Recommended attributes
  • AUTH_SYS
NFSv4.1RFC 5661
15 / 23 supported

Mandatory 9 / 11 supported

  • Sessions
  • Exactly-once semantics
  • Reclaim coordination
  • Stateid management
  • Backchannel over session
  • Nameless security query
  • State protection
    • SP4_NONE
    • SP4_MACH_CRED
    • SP4_SSV
  • Connection trunking

Optional 6 / 12 supported

  • pNFS (parallel NFS)
  • pNFS layout types
    • File layout
    • Block / volume layout
    • SCSI layout
    • Object layout
  • Layout recall callbacks
  • Directory delegations
  • Delegation hints
  • SSV state protection
  • Lock notification
  • Backchannel control
NFSv4.2RFC 7862
9 / 18 supported

Mandatory 1 / 2 supported

  • Minor-version negotiation
  • change_attr_type

Optional 8 / 16 supported

  • Server-side copy
    • Intra-server copy
    • Inter-server copy
    • Asynchronous offload
  • Sparse files
    • SEEK
    • READ_PLUS
    • DEALLOCATE
  • Space reservation
  • I/O hints
  • User extended attributes
  • Labeled NFS
  • File clone / reflink
  • Application data blocks
  • Flexible File pNFS layout
  • pNFS telemetry
SMB 2.0dialect 0x0202
20 / 23 supported

Mandatory 10 / 10 supported

  • 19-command set
  • Credit-based flow control
  • Compound requests
  • 64-bit file IDs
  • Asynchronous responses
  • Message signing
  • SPNEGO authentication
    • Kerberos
    • NTLMv2 / NTLMSSP
    • Guest / anonymous

Optional 10 / 13 supported

  • Durable handles (v1)
  • Oplocks (SMB2 form)
    • Level II
    • Exclusive
    • Batch
  • DFS
  • Symlinks / reparse points
  • Alternate data streams
  • Extended attributes
  • Security descriptors
  • FSCTL operations
  • Quota information
  • Large MTU
SMB 2.1dialect 0x0210
8 / 9 supported

Mandatory 1 / 1 supported

  • Dialect 0x0210 negotiation

Optional 7 / 8 supported

  • Leasing (v1)
    • Read caching (R)
    • Write caching (W)
    • Handle caching (H)
  • Large MTU
  • Improved durable handles
  • Resilient handles
  • BranchCache v2
SMB 3.0dialect 0x0300
11 / 15 supported

Mandatory 3 / 3 supported

  • Dialect 0x0300 negotiation
  • AES-128-CMAC signing
  • Secure dialect negotiation

Optional 8 / 12 supported

  • Encryption
  • Persistent handles
  • SMB Multichannel
  • SMB Direct (RDMA)
  • Continuously-available shares
  • Witness protocol
  • Directory leasing
  • Remote VSS
  • Offloaded data transfer (ODX)
  • Block cloning
  • Per-share encryption
  • App Instance ID
SMB 3.0.2dialect 0x0302
2 / 3 supported

Mandatory 1 / 1 supported

  • Dialect 0x0302 negotiation

Optional 1 / 2 supported

  • RDMA read/write with invalidate
  • Multichannel / failover refinements
SMB 3.1.1dialect 0x0311
16 / 18 supported

Mandatory 3 / 3 supported

  • Dialect 0x0311 negotiation
  • Negotiate contexts
  • Pre-authentication integrity

Optional 13 / 15 supported

  • Encryption ciphers
    • AES-128-CCM
    • AES-128-GCM
    • AES-256-CCM
    • AES-256-GCM
  • SMB compression
    • LZ77
    • LZ77 + Huffman
    • LZNT1
    • Pattern_V1
  • Signing algorithm negotiation
    • AES-128-CMAC
    • AES-128-GMAC
  • Cluster dialect fencing
  • RDMA encryption / signing
Amazon S3REST / HTTP object storage
12 / 59 supported

Mandatory 11 / 15 supported

  • Service listing
  • Bucket create / delete
  • Object listing
  • Object CRUD
  • Multipart upload
  • Range reads
  • Conditional reads
  • SigV4 authentication
  • SigV2 authentication
  • Streaming uploads
  • Anonymous & presigned access
  • Addressing styles
  • ETags & integrity
  • User & system metadata
  • Structured errors

Optional 1 / 44 supported

  • Directory buckets (S3 Express One Zone)
  • Browser POST uploads
  • GetObjectAttributes
  • Versioning
  • Lifecycle configuration
  • Storage classes
    • STANDARD
    • STANDARD-IA / One Zone-IA
    • Intelligent-Tiering
    • Glacier tiers
  • Server-side encryption
    • SSE-S3
    • SSE-KMS
    • SSE-C
  • Object Lock / WORM
    • Governance mode
    • Compliance mode
    • Legal hold
  • Tagging
  • Bucket policies
  • ACLs & Object Ownership
  • Conditional writes
  • CORS
  • Replication
    • Cross-region (CRR)
    • Same-region (SRR)
    • Replication Time Control
  • Event notifications
  • Static website hosting
  • Requester Pays
  • Public Access Block
  • Additional checksums
    • CRC32 / CRC32C
    • CRC64NVME
    • SHA-1 / SHA-256
  • S3 Select
  • Inventory / analytics / metrics
  • Access Points
  • S3 Object Lambda
  • S3 Access Grants
  • Batch Operations
  • Transfer Acceleration
  • Server access logging
  • Glacier restore
§ 04 How it's tested

Chimera registers ~9,000 tests per configuration via CTest, run in CI on a multi-image, dual-arch (amd64 / arm64), Release + Debug matrix. We use real-Linux-client conformance suites, not just our own unit tests.

~9,000
tests registered & gated per CI configuration
80.4%
of the full external SMB2/3 conformance surface (smbtorture) passes
real clients
Linux NFS & SMB clients in KVM, plus in-process binding
Suite
What it validates
Tests
Pass
smbtorture
Samba SMB2/3 protocol conformance — the full external surface (527 subtests), with non-passing subtests explicitly disabled per backend.
527
80.4%
WPTS
Microsoft MS-SMB2 server conformance (.NET) — the full mapped surface across base, persistent, compression, multichannel, encryption, directory-lease and symlink modes, with feature-N/A and tracked-failing cases disabled. Daemon stays crash-free in every mode.
267
90.6%
ceph-s3-tests
Ceph/s3-tests S3 compliance — a curated pass-list of the upstream suite (~840 cases). The fraction reflects the object-data-path scope; bucket policy / ACL / versioning cases stay disabled.
214
~25%
KVM pNFS
flex / block / SCSI layout over a real Linux client. The 12.5% gap is all SCSI-layout — a QEMU SCSI-reservation harness limit, not a server defect.
192
87.5%
pynfs
NFSv4.0 / 4.1 / 4.2 protocol conformance, across every backend and minor version.
1,383
100% *
pjdfstest
POSIX filesystem semantics — chmod / chown / open / link / rename / symlink / truncate / NFSv4-ACL permissions — ported in-process across every backend and over NFS 3 / 4.x.
2,554
100% *
posix-cthon
Connectathon NFS correctness, in-process client across all backends and NFS versions.
794
100% *
posix stress / fsx
fsx, fsstress, dirstress, nametest, fstest, rewinddir and per-op POSIX tests — in-process across backends and transports.
1,401
100% *
KVM xfstests
fsstress / fsx / etc. over a real Linux client, NFS 3 / 4.x.
576
100% *
KVM cthon
Connectathon over a real Linux client.
288
100% *
KVM SMB
SMB cthon / xfstests over a real Linux client.
216
100% *
KVM nfstest
NSFTest posix / interop / alloc / sparse / lock / dio / xattr / SSC over a real Linux client, plus a two-client cross-client delegation harness.
~52
100% *
KVM LTP
Linux Test Project — dio, fcntl-locktests, and NFSv4.2 syscall groups over a real Linux client mount.
~39
100% *
S3 (boto3)
S3 functional behavior — put / get / head / delete / list / copy / multipart / streaming, V4 and V2.
52
100% *
unit + submodule
VFS, client library, server internals (incl. REST auth), plus libevpl / xdrzcc / prometheus-c / ndrzcc dependency suites.
~300
100%

* 100% by construction — only expected-pass cases are registered, so this reflects coverage of what's wired up, not the full protocol surface. For S3, the ceph-s3-tests row gives the full-surface read; an equivalent pynfs figure would require running the complete upstream suite without curated registration, which CI does not currently encode.

§ 05 smbtorture, by backend

Because smbtorture measures against the full SMB2/3 surface (527 subtests), it's the clearest read on real conformance. memfs leads with the complete feature set (including named streams); the passthrough backends trail because they can't persist btime / DOS attributes and don't yet expose alternate data streams, so those subtests stay disabled. Enabled counts are per backend, out of 527.

Backend
Enabled
Disabled
Pass %
memfs
448
79
85.0%
diskfs (io_uring / aio)
434
93
82.4%
cairn
427
100
81.0%
linux / io_uring (passthrough)
400
127
75.9%
Overall (6 backends)
2,541
621
80.4%

The Microsoft Windows Protocol Test Suite (WPTS, MS-SMB2) is now wired into mainline CI against memfs (see §04). KVM suites require nested virtualization and run only on KVM-capable runners.

§ 06 Code coverage

Line, function, and branch coverage measured by the CI coverage build across the whole tree (generated XDR / RPC marshalling stubs excluded).

73.0%
line coverage — 94,051 / 128,925 lines
85.9%
function coverage — 4,393 / 5,115 functions
58.3%
branch coverage — 32,314 / 55,412 branches
Area
Lines
Line %
Func %
src/server/smb
23,619
73.6%
90.9%
src/posix
21,372
65.5%
89.1%
src/server/nfs
19,393
74.6%
84.5%
src/vfs/(core)
13,538
80.6%
95.3%
src/vfs/diskfs
11,641
81.6%
89.5%
src/vfs/nfs
6,823
72.6%
90.8%
src/server/s3
6,367
62.7%
77.9%
src/vfs/memfs
3,528
79.3%
97.4%
src/vfs/tests
3,151
99.4%
100.0%
src/vfs/cairn
3,151
76.3%
84.5%
src/client
3,001
74.6%
86.5%
src/common
2,747
54.3%
84.7%
src/server/rest
2,034
53.6%
62.4%
src/vfs/io_uring
1,689
84.8%
100.0%
src/vfs/linux
1,658
78.8%
95.9%
src/server/server.c
1,171
71.0%
72.5%
src/daemon
777
60.0%
75.0%
src/elbencho
578
71.8%
87.5%
src/fio
373
83.9%
90.0%
src/vfs/root
320
44.4%
65.0%
src/vfs/memkv
279
88.9%
100.0%
src/vfs/sqlite
233
81.5%
100.0%
src/metrics
127
28.3%
62.5%
TOTAL (excl. generated)
128,925
73.0%
85.9%

This page is a summary. For line-by-line operation support, current bugs, and the roadmap, see the issue tracker on GitHub or ask in Discord.