dittofs

module
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2026 License: MIT

README ΒΆ

DittoFS

Go Version Nix Flake Tests Go Report Card Status

A modular virtual filesystem written entirely in Go

Decouple file interfaces from storage backends. NFSv3/v4/v4.1 and SMB2 server with pluggable metadata and payload stores. Kubernetes-ready with official operator.

Quick Start β€’ Documentation β€’ Features β€’ Use Cases β€’ Contributing


Overview

DittoFS provides a modular architecture with named, reusable stores that can be mixed and matched per share.

Architecture at a Glance

graph TD
    CTL[dfsctl] -- manages --> CP
    NFS[NFS Client] --> NFSA
    SMB[SMB Client] --> SMBA

    subgraph DittoFS
        direction TB

        CP[Control Plane Β· REST API]

        subgraph Adapters[Protocol Adapters]
            NFSA[NFS Adapter]
            SMBA[SMB Adapter]
        end

        NFSA --> S1 & S2
        SMBA --> S2 & S3

        subgraph Shares
            S1["/temp"]
            S2["/archive"]
            S3["/cloud"]
        end

        Shares --> MetadataStores
        Shares --> PayloadStores

        subgraph MetadataStores[Metadata Stores]
            MM[Memory]
            MB[BadgerDB]
            MP[PostgreSQL]
        end

        subgraph PayloadStores[Payload Stores]
            PM[Memory]
            PF[Filesystem]
            PS[S3]
        end

        CP -.-> Adapters
        CP -.-> Shares
        CP -.-> MetadataStores
        CP -.-> PayloadStores
    end

    style Adapters fill:#e1f5fe,color:#01579b
    style Shares fill:#fff3e0,color:#e65100
    style MetadataStores fill:#e8f5e9,color:#1b5e20
    style PayloadStores fill:#fce4ec,color:#880e4f
    style CP fill:#f3e5f5,color:#4a148c
    style CTL fill:#fff,color:#333,stroke:#333

Key Concepts

  • Protocol Adapters: Multiple protocols (NFS, SMB, etc.) can run simultaneously
  • Control Plane: Centralized management of users, groups, shares, and configuration via REST API
  • Shares: Export points that clients mount, each referencing specific stores
  • Named Store Registry: Reusable store instances that can be shared across exports
  • Pluggable Storage: Mix and match metadata and payload backends per share

Features

  • βœ… NFS Support: NFSv3 (28 procedures), NFSv4.0, and NFSv4.1 with sessions, delegations, and ACLs
  • βœ… SMB2 Support: Windows/macOS file sharing with NTLM authentication, byte-range locking, and oplocks
  • βœ… Kerberos Authentication: RPCSEC_GSS for NFS and SPNEGO for SMB
  • βœ… No Special Permissions: Runs entirely in userspace - no FUSE, no kernel modules
  • βœ… Pluggable Storage: Mix protocols with any backend (S3, filesystem, custom)
  • βœ… Cloud-Native: S3 backend with production optimizations
  • βœ… Pure Go: Single binary, easy deployment, cross-platform
  • βœ… Extensible: Clean adapter pattern for new protocols
  • βœ… User Management: Unified users/groups with share-level permissions (CLI + REST API)
  • βœ… REST API: Full management API with JWT authentication for users, groups, and shares

Quick Start

Installation

# Run directly without installation
nix run github:marmos91/dittofs -- init        # runs dfs (server)
nix run github:marmos91/dittofs -- start
nix run github:marmos91/dittofs#dfsctl -- login # runs dfsctl (client CLI)

# Or install to your profile (installs both dfs and dfsctl)
nix profile install github:marmos91/dittofs
dfs init && dfs start

# Development environment with all tools
nix develop github:marmos91/dittofs
Using Homebrew
brew tap marmos91/tap
brew install marmos91/tap/dfs      # Server daemon
brew install marmos91/tap/dfsctl   # Client CLI
Build from Source
# Clone and build
git clone https://github.com/marmos91/dittofs.git
cd dittofs
go build -o dfs cmd/dfs/main.go

# Initialize configuration (creates ~/.config/dfs/config.yaml)
./dfs init

# Start server (note the admin password printed on first start)
./dfs start

NFS Quickstart

Get an NFS share running in under a minute:

# 1. Start the server (first run prints admin password)
./dfs start

# 2. Login and change admin password
./dfsctl login --server http://localhost:8080 --username admin
./dfsctl user change-password

# 3. Create a user with your host UID (for NFS write access)
./dfsctl user create --username $(whoami) --host-uid

# 4. Create stores
./dfsctl store metadata add --name default --type memory
./dfsctl store payload add --name default --type memory

# 5. Create a share and grant access
./dfsctl share create --name /export --metadata default --payload default
./dfsctl share permission grant /export --user $(whoami) --level read-write

# 6. Enable NFS adapter
./dfsctl adapter enable nfs

# 7. Mount and use!
# Linux:
sudo mkdir -p /mnt/nfs
sudo mount -t nfs -o tcp,port=12049,mountport=12049 localhost:/export /mnt/nfs
echo "Hello DittoFS!" > /mnt/nfs/hello.txt

# macOS:
mkdir -p /tmp/nfs
sudo mount -t nfs -o tcp,port=12049,mountport=12049,resvport,nolock localhost:/export /tmp/nfs
echo "Hello DittoFS!" > /tmp/nfs/hello.txt

Note: Memory stores are ephemeral (data lost on restart). For persistence, use --type badger for metadata and --type filesystem or --type s3 for payload.

CLI Tools

Users and groups are stored in the control plane database (SQLite by default, PostgreSQL for HA). Manage them via CLI or REST API.

DittoFS provides two CLI binaries for complete management:

Binary Purpose Examples
dfs Server daemon management start, stop, status, config, logs, backup
dfsctl Remote API client users, groups, shares, stores, adapters
Server Management (dfs)
# Configuration
./dfs config init              # Create default config file
./dfs config show              # Display current configuration
./dfs config validate          # Validate config file

# Server lifecycle
./dfs start                    # Start in foreground
./dfs start --pid-file /var/run/dfs.pid  # Start with PID file
./dfs stop                     # Graceful shutdown
./dfs stop --force             # Force kill
./dfs status                   # Check server status

# Logging
./dfs logs                     # Show last 100 lines
./dfs logs -f                  # Follow logs in real-time
./dfs logs -n 50               # Show last 50 lines
./dfs logs --since "2024-01-15T10:00:00Z"

# Backup
./dfs backup controlplane --output /tmp/backup.json

# Shell completion (bash, zsh, fish, powershell)
./dfs completion bash > /etc/bash_completion.d/dfs
Remote Management (dfsctl)
# Authentication & Context Management
./dfsctl login --server http://localhost:8080 --username admin
./dfsctl logout
./dfsctl context list          # List all server contexts
./dfsctl context use prod      # Switch to production server
./dfsctl context current       # Show current context

# User Management (password will be prompted interactively)
./dfsctl user create --username alice
./dfsctl user create --username alice --host-uid  # Use your current UID (for NFS)
./dfsctl user create --username bob --email [email protected] --groups editors,viewers
./dfsctl user list
./dfsctl user list -o json     # Output as JSON
./dfsctl user get alice
./dfsctl user update alice --email [email protected]
./dfsctl user delete alice

# Group Management
./dfsctl group create --name editors
./dfsctl group list
./dfsctl group add-user editors alice
./dfsctl group remove-user editors alice
./dfsctl group delete editors

# Share Management
./dfsctl share list
./dfsctl share create --name /archive --metadata badger-main --payload s3-content
./dfsctl share delete /archive

# Share Permissions
./dfsctl share permission list /export
./dfsctl share permission grant /export --user alice --level read-write
./dfsctl share permission grant /export --group editors --level read
./dfsctl share permission revoke /export --user alice

# Store Management (Metadata)
./dfsctl store metadata list
./dfsctl store metadata add --name fast-meta --type memory
./dfsctl store metadata add --name persistent --type badger --config '{"path":"/data/meta"}'
./dfsctl store metadata remove fast-meta

# Store Management (Payload/Blocks)
./dfsctl store payload list
./dfsctl store payload add --name s3-content --type s3 --config '{"bucket":"my-bucket"}'
./dfsctl store payload remove s3-content

# Adapter Management
./dfsctl adapter list
./dfsctl adapter add --type nfs --port 12049
./dfsctl adapter update nfs --config '{"port":2049}'
./dfsctl adapter remove smb

# Settings
./dfsctl settings list
./dfsctl settings get logging.level
./dfsctl settings set logging.level DEBUG

# Shell completion
./dfsctl completion bash > /etc/bash_completion.d/dfsctl
./dfsctl completion zsh > ~/.zsh/completions/_dfsctl
Output Formats

All list commands support multiple output formats:

./dfsctl user list              # Default table format
./dfsctl user list -o json      # JSON format
./dfsctl user list -o yaml      # YAML format
REST API
# Login to get JWT token
# NOTE: For production, avoid passing passwords in command line - they appear in shell history
# and process listings. Use environment variables or prompt-based input instead.
TOKEN=$(curl -s -X POST http://localhost:8080/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin"}' | jq -r '.access_token')

# List users
curl -H "Authorization: Bearer $TOKEN" http://localhost:8080/api/v1/users

# Create a user (for demos only - use dfsctl for secure password entry)
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username":"alice","password":"secret123","uid":1001,"gid":1001}' \
  http://localhost:8080/api/v1/users

See docs/CONFIGURATION.md for complete CLI documentation.

Run with Docker

Pre-built multi-architecture images (linux/amd64, linux/arm64) are available on Docker Hub:

# Pull the latest image
docker pull marmos91c/dittofs:latest

# Initialize a config file first
mkdir -p ~/.config/dittofs
docker run --rm -v ~/.config/dittofs:/config marmos91c/dittofs:latest init --config /config/config.yaml

# Run DittoFS
docker run -d \
  --name dittofs \
  -p 12049:12049 \
  -p 12445:12445 \
  -p 8080:8080 \
  -p 9090:9090 \
  -v ~/.config/dittofs/config.yaml:/config/config.yaml:ro \
  -v dittofs-metadata:/data/metadata \
  -v dittofs-content:/data/content \
  -v dittofs-cache:/data/cache \
  marmos91c/dittofs:latest

# Check health
curl http://localhost:8080/health

# View logs
docker logs -f dittofs

Available Tags:

  • marmos91c/dittofs:latest - Latest stable release
  • marmos91c/dittofs:vX.Y.Z - Specific version
  • marmos91c/dittofs:vX.Y - Latest patch for a minor version
  • marmos91c/dittofs:vX - Latest minor for a major version

Ports:

  • 12049: NFS server
  • 12445: SMB server
  • 8080: REST API (health checks, management)
  • 9090: Prometheus metrics
Using Docker Compose

For more complex setups with different backends:

# Start with local filesystem backend (default)
docker compose up -d

# Start with S3 backend (includes localstack)
docker compose --profile s3-backend up -d

# Start with PostgreSQL backend (includes postgres)
docker compose --profile postgres-backend up -d

# View logs
docker compose logs -f dittofs

Storage Backends:

  • Local Filesystem (default): Uses Docker volumes for both metadata (BadgerDB) and content
  • S3 Backend: Uses Docker volume for metadata (BadgerDB), S3 (localstack) for content
  • PostgreSQL Backend: Uses PostgreSQL for metadata, Docker volume for content

Monitoring: For Prometheus and Grafana monitoring stack, see monitoring/README.md.

Tip: Make sure your config.yaml matches the backend you're using:

  • Default profile expects BadgerDB metadata + filesystem content
  • --profile s3-backend expects BadgerDB metadata + S3 content
  • --profile postgres-backend expects PostgreSQL metadata + filesystem content

Deploy with Kubernetes Operator

DittoFS can be deployed on Kubernetes using our official operator:

# Install the operator (from the operator directory)
cd operator
make deploy

# Create a DittoFS instance
kubectl apply -f config/samples/dittofs_v1alpha1_dittofs.yaml

# Check status
kubectl get dittofs

The operator manages:

  • DittoFS deployment lifecycle
  • Configuration via Custom Resources
  • Persistent volume claims for metadata and payload stores
  • Service exposure for NFS/SMB protocols

See the operator/ directory for detailed documentation and configuration options.

Mount from Client

NFS: See NFS Quickstart for complete setup. Mount commands:

# Linux
sudo mount -t nfs -o tcp,port=12049,mountport=12049 localhost:/export /mnt/nfs

# macOS
sudo mount -t nfs -o tcp,port=12049,mountport=12049,resvport,nolock localhost:/export /tmp/nfs

SMB (requires user authentication):

# First, create a user with dfsctl (server must be running)
./dfsctl login --server http://localhost:8080 --username admin
./dfsctl user create --username alice  # Password prompted interactively
./dfsctl share permission grant /export --user alice --level read-write

# Linux (using credentials file for security)
# Create credentials file securely - never echo passwords in scripts or command line
sudo mkdir -p /mnt/smb
cat > ~/.smbcredentials << 'EOF'
username=alice
password=YOUR_PASSWORD_HERE
EOF
chmod 600 ~/.smbcredentials
sudo mount -t cifs //localhost/export /mnt/smb -o port=12445,credentials=$HOME/.smbcredentials,vers=2.0

# macOS (will prompt for password)
mkdir -p /tmp/smb
mount -t smbfs //alice@localhost:12445/export /tmp/smb

See docs/SMB.md for detailed SMB client usage.

Testing

# Run unit tests
go test ./...

# Run E2E tests (requires NFS client installed)
go test -v -timeout 30m ./test/e2e/...

Use Cases

Multi-Tenant Cloud Storage Gateway

Different tenants get isolated metadata and payload stores for security and billing separation.

Performance-Tiered Storage

Hot data in memory, warm data on local disk, cold data in S3 - all with shared metadata for consistent namespace.

Development & Testing

Fast iteration with in-memory stores, no external dependencies.

Hybrid Cloud Deployment

Unified namespace across on-premises and cloud storage with shared metadata.

See docs/CONFIGURATION.md for detailed examples.

Documentation

Core Documentation

Operational Guides

  • Troubleshooting - Common issues and solutions
  • Security - Security considerations and best practices
  • FAQ - Frequently asked questions

Development

  • CLAUDE.md - Detailed guidance for Claude Code and developers
  • Releasing - Release process and versioning

Current Status

βœ… Implemented

NFS Adapter (NFSv3, NFSv4.0, NFSv4.1)

  • NFSv3: All core read/write operations (28 procedures)
  • NFSv4.0: Compound operations, ACLs, delegations, built-in file locking
  • NFSv4.1: Sessions, sequence slots, backchannel support
  • Kerberos authentication via RPCSEC_GSS
  • Mount protocol support (v3)
  • TCP transport with graceful shutdown
  • Buffer pooling and performance optimizations
  • Read/write caching with background flush

SMB2 Protocol Adapter

  • SMB2 dialect 0x0202 negotiation
  • NTLM authentication with SPNEGO
  • Kerberos authentication via SPNEGO
  • Session management with adaptive credit flow control
  • Tree connect with share-level permission checking
  • File operations: CREATE, READ, WRITE, CLOSE, FLUSH
  • Directory operations: QUERY_DIRECTORY
  • Metadata operations: QUERY_INFO, SET_INFO
  • Byte-range locking and oplocks
  • Compound request handling (CREATE+QUERY_INFO+CLOSE)
  • Read/write caching (shared with NFS)
  • Parallel request processing
  • macOS Finder and smbclient compatible

Storage Backends

  • In-memory metadata (ephemeral, fast)
  • BadgerDB metadata (persistent, path-based handles)
  • PostgreSQL metadata (persistent, distributed)
  • In-memory payload store (ephemeral, testing)
  • S3 payload store (production-ready with range reads, streaming uploads, stats caching)

Caching & Persistence

  • Slice-aware cache with sequential write optimization
  • WAL (Write-Ahead Log) persistence for crash recovery
  • Transfer manager for async cache-to-payload-store flushing

POSIX Compliance

  • 99.99% pass rate on pjdfstest (8,788/8,789 tests)
  • All metadata stores (Memory, BadgerDB, PostgreSQL) achieve parity
  • Single expected failure due to NFSv3 32-bit timestamp limitation (year 2106)
  • See FAQ for known limitations

User Management & Control Plane

  • Unified identity system for NFS and SMB
  • Users with bcrypt password hashing
  • Groups with share-level permissions
  • Permission resolution: user β†’ group β†’ share default
  • CLI tools for user/group management
  • REST API with JWT authentication
  • Control plane database (SQLite/PostgreSQL)

Production Features

  • Prometheus metrics integration
  • OpenTelemetry distributed tracing
  • Structured JSON logging
  • Request rate limiting
  • Enhanced graceful shutdown
  • Comprehensive E2E test suite
  • Performance benchmark framework

🚧 In Development

SMB Protocol Enhancements

  • Windows client compatibility testing
  • E2E test suite for SMB

πŸš€ Roadmap

SMB Advanced Features

  • SMBv3 support (encryption, multichannel)
  • File locking (oplocks, byte-range locks)
  • Security descriptors and Windows ACLs
  • Extended attributes (xattrs) support
  • Kerberos authentication via SPNEGO

Kubernetes Integration

  • Kubernetes Operator for deployment
  • Health check endpoints
  • CSI driver implementation

Advanced Features

  • Sync between DittoFS replicas
  • Scan content stores to populate metadata stores
  • Admin REST API for users/permissions/shares/configs
  • NFSv4.0 and NFSv4.1 support (sessions, delegations, ACLs, built-in locking)
  • Kerberos authentication (RPCSEC_GSS for NFS, SPNEGO for SMB)
  • Advanced caching strategies

See docs/ARCHITECTURE.md for complete roadmap.

Configuration

DittoFS uses a two-layer configuration approach:

  1. Config file (~/.config/dfs/config.yaml): Server infrastructure settings (logging, telemetry, cache, database, API)
  2. CLI/API (dfsctl): Runtime resources (stores, shares, adapters) persisted in the control plane database

Server Config File

database:
  type: sqlite  # or "postgres" for HA
  sqlite:
    path: /var/lib/dfs/controlplane.db

controlplane:
  port: 8080
  jwt:
    secret: "your-secret-key-at-least-32-characters"

cache:
  path: /var/lib/dfs/cache
  size: "1Gi"

Runtime Management (CLI)

Stores, shares, and adapters are managed via dfsctl and persisted in the database:

# Create named stores (reusable across shares)
./dfsctl store metadata add --name badger-main --type badger \
  --config '{"path":"/var/lib/dfs/metadata"}'
./dfsctl store payload add --name s3-cloud --type s3 \
  --config '{"region":"us-east-1","bucket":"my-dfs-bucket"}'

# Create shares referencing stores
./dfsctl share create --name /archive --metadata badger-main --payload s3-cloud

# Grant permissions
./dfsctl share permission grant /archive --user alice --level read-write

# Enable protocol adapters
./dfsctl adapter enable nfs --port 12049
./dfsctl adapter enable smb --port 12445

Note: Users and groups are also managed via CLI (dfsctl user/group) or REST API, not in the config file.

See docs/CONFIGURATION.md for complete documentation.

Why DittoFS?

The Problem: Traditional filesystem servers are tightly coupled to their storage layers, making it difficult to:

  • Support multiple access protocols
  • Mix and match storage backends
  • Deploy without kernel-level permissions
  • Customize for specific use cases

The Solution: DittoFS provides:

  • Protocol independence through adapters
  • Storage flexibility through pluggable repositories
  • Userspace operation with no special permissions
  • Pure Go for easy deployment and integration

Comparison

Feature Traditional NFS Cloud Gateways DittoFS
Permissions Kernel-level Varies Userspace only
Multi-protocol Separate servers Limited Unified
Storage Backend Filesystem only Vendor-specific Pluggable
Metadata Backend Filesystem only Vendor-specific Pluggable
Language C/C++ Varies Pure Go
Deployment Complex Complex Single binary

See docs/FAQ.md for detailed comparisons.

Contributing

DittoFS welcomes contributions! See docs/CONTRIBUTING.md for:

  • Development setup
  • Testing guidelines
  • Code structure
  • Common development tasks

Security

⚠️ DittoFS is experimental software - not yet production ready.

  • No security audit performed
  • AUTH_UNIX and Kerberos (RPCSEC_GSS) for NFS; NTLM and Kerberos (SPNEGO) for SMB
  • No built-in encryption (use VPN or network-level encryption)

See docs/SECURITY.md for details and recommendations.

References

Specifications

  • go-nfs - Another NFS implementation in Go
  • FUSE - Filesystem in Userspace

License

MIT License - See LICENSE file for details

Disclaimer

⚠️ Experimental Software

  • Do not use in production without thorough testing
  • API may change without notice
  • No backwards compatibility guarantees
  • Security has not been professionally audited

Getting Started? β†’ Quick Start

Questions? β†’ FAQ or open an issue

Want to Contribute? β†’ docs/CONTRIBUTING.md

Directories ΒΆ

Path Synopsis
cmd
dfs command
dfs/commands
Package commands implements the CLI commands for dittofs server management.
Package commands implements the CLI commands for dittofs server management.
dfs/commands/backup
Package backup implements backup subcommands for dittofs.
Package backup implements backup subcommands for dittofs.
dfs/commands/config
Package config implements configuration management subcommands.
Package config implements configuration management subcommands.
dfs/commands/restore
Package restore implements restore subcommands for dittofs.
Package restore implements restore subcommands for dittofs.
dfsctl command
dfsctl/cmdutil
Package cmdutil provides shared utilities for dfsctl commands.
Package cmdutil provides shared utilities for dfsctl commands.
dfsctl/commands
Package commands implements the CLI commands for dfsctl client.
Package commands implements the CLI commands for dfsctl client.
dfsctl/commands/adapter
Package adapter implements protocol adapter management commands.
Package adapter implements protocol adapter management commands.
dfsctl/commands/client
Package client implements NFS client management commands.
Package client implements NFS client management commands.
dfsctl/commands/context
Package context implements context management subcommands for dfsctl.
Package context implements context management subcommands for dfsctl.
dfsctl/commands/grace
Package grace implements NFSv4 grace period management commands.
Package grace implements NFSv4 grace period management commands.
dfsctl/commands/group
Package group implements group management commands for dfsctl.
Package group implements group management commands for dfsctl.
dfsctl/commands/idmap
Package idmap implements identity mapping commands for dfsctl.
Package idmap implements identity mapping commands for dfsctl.
dfsctl/commands/netgroup
Package netgroup implements netgroup management commands for dfsctl.
Package netgroup implements netgroup management commands for dfsctl.
dfsctl/commands/settings
Package settings implements server settings management commands.
Package settings implements server settings management commands.
dfsctl/commands/share
Package share implements share management commands for dfsctl.
Package share implements share management commands for dfsctl.
dfsctl/commands/share/permission
Package permission implements share permission management commands.
Package permission implements share permission management commands.
dfsctl/commands/store
Package store implements store management commands for dfsctl.
Package store implements store management commands for dfsctl.
dfsctl/commands/store/metadata
Package metadata implements metadata store management commands.
Package metadata implements metadata store management commands.
dfsctl/commands/store/payload
Package payload implements payload store management commands.
Package payload implements payload store management commands.
dfsctl/commands/user
Package user implements user management commands for dfsctl.
Package user implements user management commands for dfsctl.
internal
adapter/nfs
connection.go provides shared RPC framing utilities used by both pkg/adapter/nfs (the NFSConnection layer) and potentially other components that need to parse RPC record-marking protocol frames.
connection.go provides shared RPC framing utilities used by both pkg/adapter/nfs (the NFSConnection layer) and potentially other components that need to parse RPC record-marking protocol frames.
adapter/nfs/auth
Package auth provides authentication for NFS protocol adapters.
Package auth provides authentication for NFS protocol adapters.
adapter/nfs/middleware
Package middleware provides authentication extraction and future middleware components for the NFS adapter dispatch pipeline.
Package middleware provides authentication extraction and future middleware components for the NFS adapter dispatch pipeline.
adapter/nfs/mount
Package mount implements the NFS Mount protocol (RFC 1813 Appendix I).
Package mount implements the NFS Mount protocol (RFC 1813 Appendix I).
adapter/nfs/nlm
Package nlm provides Network Lock Manager (NLM) protocol dispatch.
Package nlm provides Network Lock Manager (NLM) protocol dispatch.
adapter/nfs/nlm/blocking
Package blocking implements the blocking lock queue for NLM protocol.
Package blocking implements the blocking lock queue for NLM protocol.
adapter/nfs/nlm/callback
Package callback provides the NLM callback client for GRANTED notifications.
Package callback provides the NLM callback client for GRANTED notifications.
adapter/nfs/nlm/handlers
Package handlers provides NLM (Network Lock Manager) procedure handlers.
Package handlers provides NLM (Network Lock Manager) procedure handlers.
adapter/nfs/nlm/types
Package types provides NLM (Network Lock Manager) protocol types and constants.
Package types provides NLM (Network Lock Manager) protocol types and constants.
adapter/nfs/nlm/xdr
Package xdr provides XDR encoding and decoding for NLM v4 protocol messages.
Package xdr provides XDR encoding and decoding for NLM v4 protocol messages.
adapter/nfs/nsm
Package nsm provides Network Status Monitor (NSM) protocol dispatch.
Package nsm provides Network Status Monitor (NSM) protocol dispatch.
adapter/nfs/nsm/callback
Package callback provides the NSM callback client for SM_NOTIFY notifications.
Package callback provides the NSM callback client for SM_NOTIFY notifications.
adapter/nfs/nsm/handlers
Package handlers provides NSM (Network Status Monitor) protocol handlers.
Package handlers provides NSM (Network Status Monitor) protocol handlers.
adapter/nfs/nsm/types
Package types provides NSM (Network Status Monitor) protocol types and constants.
Package types provides NSM (Network Status Monitor) protocol types and constants.
adapter/nfs/nsm/xdr
Package xdr provides XDR encoding/decoding for NSM protocol messages.
Package xdr provides XDR encoding/decoding for NSM protocol messages.
adapter/nfs/portmap
Package portmap provides an embedded portmapper (RFC 1057) service registry.
Package portmap provides an embedded portmapper (RFC 1057) service registry.
adapter/nfs/portmap/handlers
Package handlers provides portmapper procedure handler implementations.
Package handlers provides portmapper procedure handler implementations.
adapter/nfs/portmap/types
Package types provides portmapper protocol types and constants.
Package types provides portmapper protocol types and constants.
adapter/nfs/portmap/xdr
Package xdr provides XDR encoding and decoding for portmapper protocol messages.
Package xdr provides XDR encoding and decoding for portmapper protocol messages.
adapter/nfs/rpc/gss
Package gss provides RPCSEC_GSS krb5i (integrity) wrapping and unwrapping.
Package gss provides RPCSEC_GSS krb5i (integrity) wrapping and unwrapping.
adapter/nfs/v3/handlers/testing
Package testing provides test fixtures for NFS v3 handler behavioral tests.
Package testing provides test fixtures for NFS v3 handler behavioral tests.
adapter/nfs/v4/attrs
Package attrs provides NFSv4 attribute bitmap helpers and FATTR4 encoding.
Package attrs provides NFSv4 attribute bitmap helpers and FATTR4 encoding.
adapter/nfs/v4/handlers
Package handlers implements NFSv4 COMPOUND operation dispatch and individual operation handlers.
Package handlers implements NFSv4 COMPOUND operation dispatch and individual operation handlers.
adapter/nfs/v4/pseudofs
Package pseudofs implements the NFSv4 pseudo-filesystem virtual namespace.
Package pseudofs implements the NFSv4 pseudo-filesystem virtual namespace.
adapter/nfs/v4/state
Package state implements NFSv4 state management for client identity, open state, lock state, and lease tracking per RFC 7530 Section 9.
Package state implements NFSv4 state management for client identity, open state, lock state, and lease tracking per RFC 7530 Section 9.
adapter/nfs/v4/types
Package types - NFSv4.1 BACKCHANNEL_CTL operation types.
Package types - NFSv4.1 BACKCHANNEL_CTL operation types.
adapter/nfs/v4/v41/handlers
Package handlers -- BACKCHANNEL_CTL operation handler (op 40).
Package handlers -- BACKCHANNEL_CTL operation handler (op 40).
adapter/nfs/xdr/core
Package xdr provides generic XDR (External Data Representation) encoding and decoding utilities per RFC 4506.
Package xdr provides generic XDR (External Data Representation) encoding and decoding utilities per RFC 4506.
adapter/pool
Package pool provides a tiered buffer pool for efficient memory reuse.
Package pool provides a tiered buffer pool for efficient memory reuse.
adapter/smb
Package smb provides SMB2 protocol dispatch and result types.
Package smb provides SMB2 protocol dispatch and result types.
adapter/smb/auth
Package auth provides authentication for SMB protocol adapters.
Package auth provides authentication for SMB protocol adapters.
adapter/smb/header
Package header provides SMB2 message header parsing and encoding.
Package header provides SMB2 message header parsing and encoding.
adapter/smb/rpc
Package rpc implements DCE/RPC protocol for SMB named pipes.
Package rpc implements DCE/RPC protocol for SMB named pipes.
adapter/smb/session
Package session provides SMB2 session and credit management.
Package session provides SMB2 session and credit management.
adapter/smb/signing
Package signing provides SMB2 message signing using HMAC-SHA256.
Package signing provides SMB2 message signing using HMAC-SHA256.
adapter/smb/types
Package types contains SMB2 protocol constants, types, and error codes.
Package types contains SMB2 protocol constants, types, and error codes.
adapter/smb/v2/handlers
Package handlers provides SMB2 command handlers and session management.
Package handlers provides SMB2 command handlers and session management.
cli/credentials
Package credentials provides credential storage and context management for dfsctl.
Package credentials provides credential storage and context management for dfsctl.
cli/health
Package health provides shared types for health check responses.
Package health provides shared types for health check responses.
cli/output
Package output provides output formatting utilities for CLI commands.
Package output provides output formatting utilities for CLI commands.
cli/prompt
Package prompt provides interactive terminal prompts for CLI commands.
Package prompt provides interactive terminal prompts for CLI commands.
cli/timeutil
Package timeutil provides time formatting utilities for CLI output.
Package timeutil provides time formatting utilities for CLI output.
controlplane/api/auth
Package auth provides JWT authentication functionality for the DittoFS API.
Package auth provides JWT authentication functionality for the DittoFS API.
controlplane/api/handlers
Package handlers provides HTTP handlers for the DittoFS API.
Package handlers provides HTTP handlers for the DittoFS API.
controlplane/api/middleware
Package middleware provides HTTP middleware for the DittoFS API.
Package middleware provides HTTP middleware for the DittoFS API.
mfsymlink
Package mfsymlink implements Minshall+French symlinks (MFsymlinks) encoding and decoding.
Package mfsymlink implements Minshall+French symlinks (MFsymlinks) encoding and decoding.
pkg
adapter/nfs/identity
Package identity provides pluggable identity resolution for NFSv4 principals and Kerberos authentication.
Package identity provides pluggable identity resolution for NFSv4 principals and Kerberos authentication.
apiclient
Package apiclient provides a REST API client for dfsctl.
Package apiclient provides a REST API client for dfsctl.
auth
Package auth provides centralized authentication abstractions for DittoFS.
Package auth provides centralized authentication abstractions for DittoFS.
auth/kerberos
Package kerberos provides the Kerberos AuthProvider implementation for DittoFS.
Package kerberos provides the Kerberos AuthProvider implementation for DittoFS.
auth/sid
Package sid provides Windows Security Identifier (SID) types, encoding, decoding, and mapping for cross-protocol identity interoperability.
Package sid provides Windows Security Identifier (SID) types, encoding, decoding, and mapping for cross-protocol identity interoperability.
cache
Package cache implements buffering for content stores.
Package cache implements buffering for content stores.
cache/wal
Package wal provides write-ahead logging for cache persistence.
Package wal provides write-ahead logging for cache persistence.
controlplane
Package controlplane provides the control plane for DittoFS.
Package controlplane provides the control plane for DittoFS.
controlplane/models
Package models provides shared domain types for DittoFS control plane.
Package models provides shared domain types for DittoFS control plane.
controlplane/runtime
Package runtime provides runtime state management for the control plane.
Package runtime provides runtime state management for the control plane.
controlplane/runtime/adapters
Package adapters provides protocol adapter lifecycle management.
Package adapters provides protocol adapter lifecycle management.
controlplane/runtime/identity
Package identity provides share-level identity mapping.
Package identity provides share-level identity mapping.
controlplane/runtime/lifecycle
Package lifecycle provides server startup and shutdown orchestration.
Package lifecycle provides server startup and shutdown orchestration.
controlplane/runtime/mounts
Package mounts provides unified mount tracking across all protocol adapters.
Package mounts provides unified mount tracking across all protocol adapters.
controlplane/runtime/shares
Package shares provides share registry and lifecycle management.
Package shares provides share registry and lifecycle management.
controlplane/runtime/stores
Package stores provides metadata store registry management.
Package stores provides metadata store registry management.
controlplane/store
Package store provides the control plane persistence layer.
Package store provides the control plane persistence layer.
identity
Deprecated: This package has been moved to pkg/adapter/nfs/identity.
Deprecated: This package has been moved to pkg/adapter/nfs/identity.
metadata
Package metadata provides the core metadata types and operations for DittoFS.
Package metadata provides the core metadata types and operations for DittoFS.
metadata/acl
Package acl implements NFSv4 Access Control List types, evaluation, validation, mode synchronization, and inheritance per RFC 7530 Section 6.
Package acl implements NFSv4 Access Control List types, evaluation, validation, mode synchronization, and inheritance per RFC 7530 Section 6.
metadata/errors
Package errors provides error types and error codes for the metadata package.
Package errors provides error types and error codes for the metadata package.
metadata/lock
Package lock provides cross-protocol translation helpers for lock visibility.
Package lock provides cross-protocol translation helpers for lock visibility.
metadata/storetest
Package storetest provides a conformance test suite for metadata store implementations.
Package storetest provides a conformance test suite for metadata store implementations.
payload/block
Package block defines constants and helpers for block-level storage operations.
Package block defines constants and helpers for block-level storage operations.
payload/chunk
Package chunk defines constants and helpers for chunk-level file segmentation.
Package chunk defines constants and helpers for chunk-level file segmentation.
payload/gc
Package gc implements garbage collection for orphan blocks in the block store.
Package gc implements garbage collection for orphan blocks in the block store.
payload/io
Package io provides read and write operations for the payload service, coordinating between the cache layer and the offloader for persistent storage.
Package io provides read and write operations for the payload service, coordinating between the cache layer and the offloader for persistent storage.
payload/offloader
Package offloader implements cache-to-store transfer orchestration.
Package offloader implements cache-to-store transfer orchestration.
payload/store
Package store provides the block store interface for persistent storage.
Package store provides the block store interface for persistent storage.
payload/store/fs
Package fs provides a filesystem-backed block store implementation.
Package fs provides a filesystem-backed block store implementation.
payload/store/memory
Package memory provides an in-memory block store implementation for testing.
Package memory provides an in-memory block store implementation for testing.
payload/store/s3
Package s3 provides an S3-backed block store implementation.
Package s3 provides an S3-backed block store implementation.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL