From: Kefu Chai <k.chai@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH pve-cluster 00/15 v1] Rewrite pmxcfs with Rust
Date: Tue, 6 Jan 2026 22:24:24 +0800 [thread overview]
Message-ID: <20260106142440.2368585-1-k.chai@proxmox.com> (raw)
This patch series introduces pmxcfs-rs, a complete rewrite of the Proxmox cluster filesystem (pmxcfs) in Rust.
Motivation
The primary goal of this rewrite is to improve long-term maintainability.
Compatibility
The new implementation maintains full compatibility with existing pmxcfs functionality, ensuring a smooth transition path for current deployment.
Dependencies
This work depends on changes in two upstream projects:
* proxmox-fuse-rs: Requires a change introducing the rename operation, but this change is not yet included in any release
* rust-corosync: Requires changes currently under review at https://github.com/corosync/corosync/pull/810
This crate is vendored in this project at this moment. I will drop it
once a release with the fix is out.
Testing Strategy
We have implemented comprehensive testing across three levels:
* Unit tests: Per-crate tests for individual components
* Integration tests: Mock-based testing of component interactions
* Container-based integration tests:
- Single-node tests with Rust implementation
- Multi-node tests with Rust-only clusters
- Mixed-environment tests with both Rust and C nodes to verify interoperability
The mixed-environment tests are particularly important for validating backwards compatibility and enabling gradual migration in production clusters.
The change can also be found at gitolite3@proxdev.maurer-it.com:staff/k.chai/pve-cluster, pmxfs-rs.
Feedback and review are welcome.
Kefu Chai (15):
pmxcfs-rs: add workspace and pmxcfs-api-types crate
pmxcfs-rs: add pmxcfs-config crate
pmxcfs-rs: add pmxcfs-logger crate
pmxcfs-rs: add pmxcfs-rrd crate
pmxcfs-rs: add pmxcfs-memdb crate
pmxcfs-rs: add pmxcfs-status crate
pmxcfs-rs: add pmxcfs-test-utils infrastructure crate
pmxcfs-rs: add pmxcfs-services crate
pmxcfs-rs: add pmxcfs-ipc crate
pmxcfs-rs: add pmxcfs-dfsm crate
pmxcfs-rs: vendor patched rust-corosync for CPG compatibility
pmxcfs-rs: add pmxcfs main daemon binary
pmxcfs-rs: add integration and workspace tests
pmxcfs-rs: add Makefile for build automation
pmxcfs-rs: add project documentation
src/pmxcfs-rs/.gitignore | 1 +
src/pmxcfs-rs/ARCHITECTURE.txt | 350 ++
src/pmxcfs-rs/Cargo.lock | 2067 ++++++++++
src/pmxcfs-rs/Cargo.toml | 100 +
src/pmxcfs-rs/Makefile | 39 +
src/pmxcfs-rs/README.md | 235 ++
src/pmxcfs-rs/integration-tests/.gitignore | 1 +
src/pmxcfs-rs/integration-tests/README.md | 367 ++
.../integration-tests/docker/.dockerignore | 17 +
.../integration-tests/docker/Dockerfile | 95 +
.../integration-tests/docker/debian.sources | 5 +
.../docker/docker-compose.cluster.yml | 115 +
.../docker/docker-compose.mixed.yml | 123 +
.../docker/docker-compose.yml | 54 +
.../integration-tests/docker/healthcheck.sh | 19 +
.../docker/lib/corosync.conf.mixed.template | 46 +
.../docker/lib/corosync.conf.template | 45 +
.../docker/lib/setup-cluster.sh | 67 +
.../docker/proxmox-archive-keyring.gpg | Bin 0 -> 2372 bytes
.../docker/pve-no-subscription.sources | 5 +
.../docker/start-cluster-node.sh | 135 +
src/pmxcfs-rs/integration-tests/run-tests.sh | 454 +++
src/pmxcfs-rs/integration-tests/test | 238 ++
src/pmxcfs-rs/integration-tests/test-local | 333 ++
.../tests/cluster/01-connectivity.sh | 56 +
.../tests/cluster/02-file-sync.sh | 216 ++
.../tests/cluster/03-clusterlog-sync.sh | 297 ++
.../tests/cluster/04-binary-format-sync.sh | 355 ++
.../tests/core/01-test-paths.sh | 74 +
.../tests/core/02-plugin-version.sh | 87 +
.../integration-tests/tests/dfsm/01-sync.sh | 218 ++
.../tests/dfsm/02-multi-node.sh | 159 +
.../tests/fuse/01-operations.sh | 100 +
.../tests/ipc/01-socket-api.sh | 104 +
.../tests/ipc/02-flow-control.sh | 89 +
.../tests/locks/01-lock-management.sh | 134 +
.../tests/logger/01-clusterlog-basic.sh | 119 +
.../integration-tests/tests/logger/README.md | 54 +
.../tests/memdb/01-access.sh | 103 +
.../tests/mixed-cluster/01-node-types.sh | 135 +
.../tests/mixed-cluster/02-file-sync.sh | 180 +
.../tests/mixed-cluster/03-quorum.sh | 149 +
.../tests/plugins/01-plugin-files.sh | 146 +
.../tests/plugins/02-clusterlog-plugin.sh | 355 ++
.../tests/plugins/03-plugin-write.sh | 197 +
.../integration-tests/tests/plugins/README.md | 52 +
.../tests/rrd/01-rrd-basic.sh | 93 +
.../tests/rrd/02-schema-validation.sh | 409 ++
.../tests/rrd/03-rrdcached-integration.sh | 367 ++
.../integration-tests/tests/rrd/README.md | 164 +
.../integration-tests/tests/run-c-tests.sh | 321 ++
.../tests/status/01-status-tracking.sh | 113 +
.../tests/status/02-status-operations.sh | 193 +
.../tests/status/03-multinode-sync.sh | 481 +++
.../integration-tests/tests/test-config.sh | 88 +
src/pmxcfs-rs/pmxcfs-api-types/Cargo.toml | 19 +
src/pmxcfs-rs/pmxcfs-api-types/README.md | 105 +
src/pmxcfs-rs/pmxcfs-api-types/src/lib.rs | 152 +
src/pmxcfs-rs/pmxcfs-config/Cargo.toml | 16 +
src/pmxcfs-rs/pmxcfs-config/README.md | 127 +
src/pmxcfs-rs/pmxcfs-config/src/lib.rs | 471 +++
src/pmxcfs-rs/pmxcfs-dfsm/Cargo.toml | 45 +
src/pmxcfs-rs/pmxcfs-dfsm/README.md | 340 ++
src/pmxcfs-rs/pmxcfs-dfsm/src/callbacks.rs | 52 +
.../src/cluster_database_service.rs | 116 +
src/pmxcfs-rs/pmxcfs-dfsm/src/cpg_service.rs | 163 +
src/pmxcfs-rs/pmxcfs-dfsm/src/dfsm_message.rs | 728 ++++
src/pmxcfs-rs/pmxcfs-dfsm/src/fuse_message.rs | 185 +
.../pmxcfs-dfsm/src/kv_store_message.rs | 329 ++
src/pmxcfs-rs/pmxcfs-dfsm/src/lib.rs | 32 +
src/pmxcfs-rs/pmxcfs-dfsm/src/message.rs | 21 +
.../pmxcfs-dfsm/src/state_machine.rs | 1013 +++++
.../pmxcfs-dfsm/src/status_sync_service.rs | 118 +
src/pmxcfs-rs/pmxcfs-dfsm/src/types.rs | 107 +
src/pmxcfs-rs/pmxcfs-dfsm/src/wire_format.rs | 220 ++
.../tests/multi_node_sync_tests.rs | 565 +++
src/pmxcfs-rs/pmxcfs-ipc/Cargo.toml | 44 +
src/pmxcfs-rs/pmxcfs-ipc/README.md | 182 +
.../pmxcfs-ipc/examples/test_server.rs | 92 +
src/pmxcfs-rs/pmxcfs-ipc/src/connection.rs | 657 ++++
src/pmxcfs-rs/pmxcfs-ipc/src/handler.rs | 93 +
src/pmxcfs-rs/pmxcfs-ipc/src/lib.rs | 37 +
src/pmxcfs-rs/pmxcfs-ipc/src/protocol.rs | 332 ++
src/pmxcfs-rs/pmxcfs-ipc/src/ringbuffer.rs | 1158 ++++++
src/pmxcfs-rs/pmxcfs-ipc/src/server.rs | 278 ++
src/pmxcfs-rs/pmxcfs-ipc/src/socket.rs | 84 +
src/pmxcfs-rs/pmxcfs-ipc/tests/auth_test.rs | 450 +++
.../pmxcfs-ipc/tests/qb_wire_compat.rs | 413 ++
src/pmxcfs-rs/pmxcfs-logger/Cargo.toml | 15 +
src/pmxcfs-rs/pmxcfs-logger/README.md | 58 +
.../pmxcfs-logger/src/cluster_log.rs | 550 +++
src/pmxcfs-rs/pmxcfs-logger/src/entry.rs | 579 +++
src/pmxcfs-rs/pmxcfs-logger/src/hash.rs | 173 +
src/pmxcfs-rs/pmxcfs-logger/src/lib.rs | 27 +
.../pmxcfs-logger/src/ring_buffer.rs | 581 +++
src/pmxcfs-rs/pmxcfs-memdb/Cargo.toml | 42 +
src/pmxcfs-rs/pmxcfs-memdb/README.md | 220 ++
src/pmxcfs-rs/pmxcfs-memdb/src/database.rs | 2227 +++++++++++
src/pmxcfs-rs/pmxcfs-memdb/src/index.rs | 814 ++++
src/pmxcfs-rs/pmxcfs-memdb/src/lib.rs | 26 +
src/pmxcfs-rs/pmxcfs-memdb/src/locks.rs | 286 ++
src/pmxcfs-rs/pmxcfs-memdb/src/sync.rs | 249 ++
src/pmxcfs-rs/pmxcfs-memdb/src/traits.rs | 101 +
src/pmxcfs-rs/pmxcfs-memdb/src/types.rs | 325 ++
src/pmxcfs-rs/pmxcfs-memdb/src/vmlist.rs | 189 +
.../pmxcfs-memdb/tests/checksum_test.rs | 158 +
.../tests/sync_integration_tests.rs | 394 ++
src/pmxcfs-rs/pmxcfs-rrd/Cargo.toml | 18 +
src/pmxcfs-rs/pmxcfs-rrd/README.md | 51 +
src/pmxcfs-rs/pmxcfs-rrd/src/backend.rs | 67 +
.../pmxcfs-rrd/src/backend/backend_daemon.rs | 214 ++
.../pmxcfs-rrd/src/backend/backend_direct.rs | 606 +++
.../src/backend/backend_fallback.rs | 229 ++
src/pmxcfs-rs/pmxcfs-rrd/src/daemon.rs | 140 +
src/pmxcfs-rs/pmxcfs-rrd/src/key_type.rs | 313 ++
src/pmxcfs-rs/pmxcfs-rrd/src/lib.rs | 21 +
src/pmxcfs-rs/pmxcfs-rrd/src/schema.rs | 577 +++
src/pmxcfs-rs/pmxcfs-rrd/src/writer.rs | 397 ++
src/pmxcfs-rs/pmxcfs-services/Cargo.toml | 17 +
src/pmxcfs-rs/pmxcfs-services/README.md | 167 +
src/pmxcfs-rs/pmxcfs-services/src/error.rs | 37 +
src/pmxcfs-rs/pmxcfs-services/src/lib.rs | 16 +
src/pmxcfs-rs/pmxcfs-services/src/manager.rs | 477 +++
src/pmxcfs-rs/pmxcfs-services/src/service.rs | 173 +
.../pmxcfs-services/tests/service_tests.rs | 808 ++++
src/pmxcfs-rs/pmxcfs-status/Cargo.toml | 40 +
src/pmxcfs-rs/pmxcfs-status/README.md | 142 +
src/pmxcfs-rs/pmxcfs-status/src/lib.rs | 54 +
src/pmxcfs-rs/pmxcfs-status/src/status.rs | 1561 ++++++++
src/pmxcfs-rs/pmxcfs-status/src/traits.rs | 486 +++
src/pmxcfs-rs/pmxcfs-status/src/types.rs | 62 +
src/pmxcfs-rs/pmxcfs-test-utils/Cargo.toml | 34 +
src/pmxcfs-rs/pmxcfs-test-utils/src/lib.rs | 526 +++
.../pmxcfs-test-utils/src/mock_memdb.rs | 636 ++++
src/pmxcfs-rs/pmxcfs/Cargo.toml | 81 +
src/pmxcfs-rs/pmxcfs/README.md | 174 +
.../pmxcfs/src/cluster_config_service.rs | 317 ++
src/pmxcfs-rs/pmxcfs/src/daemon.rs | 314 ++
src/pmxcfs-rs/pmxcfs/src/file_lock.rs | 105 +
src/pmxcfs-rs/pmxcfs/src/fuse/README.md | 199 +
src/pmxcfs-rs/pmxcfs/src/fuse/filesystem.rs | 1360 +++++++
src/pmxcfs-rs/pmxcfs/src/fuse/mod.rs | 4 +
src/pmxcfs-rs/pmxcfs/src/ipc/mod.rs | 16 +
src/pmxcfs-rs/pmxcfs/src/ipc/request.rs | 249 ++
src/pmxcfs-rs/pmxcfs/src/ipc/service.rs | 622 +++
src/pmxcfs-rs/pmxcfs/src/lib.rs | 13 +
src/pmxcfs-rs/pmxcfs/src/logging.rs | 44 +
src/pmxcfs-rs/pmxcfs/src/main.rs | 645 ++++
src/pmxcfs-rs/pmxcfs/src/memdb_callbacks.rs | 581 +++
src/pmxcfs-rs/pmxcfs/src/plugins/README.md | 203 +
.../pmxcfs/src/plugins/clusterlog.rs | 286 ++
src/pmxcfs-rs/pmxcfs/src/plugins/debug.rs | 145 +
src/pmxcfs-rs/pmxcfs/src/plugins/members.rs | 194 +
src/pmxcfs-rs/pmxcfs/src/plugins/mod.rs | 30 +
src/pmxcfs-rs/pmxcfs/src/plugins/registry.rs | 307 ++
src/pmxcfs-rs/pmxcfs/src/plugins/rrd.rs | 95 +
src/pmxcfs-rs/pmxcfs/src/plugins/types.rs | 112 +
src/pmxcfs-rs/pmxcfs/src/plugins/version.rs | 175 +
src/pmxcfs-rs/pmxcfs/src/plugins/vmlist.rs | 118 +
src/pmxcfs-rs/pmxcfs/src/quorum_service.rs | 207 +
src/pmxcfs-rs/pmxcfs/src/restart_flag.rs | 60 +
src/pmxcfs-rs/pmxcfs/src/status_callbacks.rs | 330 ++
src/pmxcfs-rs/pmxcfs/tests/common/mod.rs | 210 ++
src/pmxcfs-rs/pmxcfs/tests/fuse_basic_test.rs | 215 ++
.../pmxcfs/tests/fuse_cluster_test.rs | 230 ++
.../pmxcfs/tests/fuse_integration_test.rs | 423 +++
src/pmxcfs-rs/pmxcfs/tests/fuse_locks_test.rs | 385 ++
.../pmxcfs/tests/local_integration.rs | 277 ++
src/pmxcfs-rs/pmxcfs/tests/quorum_behavior.rs | 273 ++
.../pmxcfs/tests/single_node_functional.rs | 351 ++
.../pmxcfs/tests/symlink_quorum_test.rs | 156 +
src/pmxcfs-rs/vendor/rust-corosync/Cargo.toml | 33 +
.../vendor/rust-corosync/Cargo.toml.orig | 19 +
src/pmxcfs-rs/vendor/rust-corosync/LICENSE | 21 +
.../vendor/rust-corosync/README.PATCH.md | 36 +
src/pmxcfs-rs/vendor/rust-corosync/README.md | 13 +
src/pmxcfs-rs/vendor/rust-corosync/build.rs | 64 +
.../vendor/rust-corosync/regenerate-sys.sh | 15 +
src/pmxcfs-rs/vendor/rust-corosync/src/cfg.rs | 392 ++
.../vendor/rust-corosync/src/cmap.rs | 812 ++++
src/pmxcfs-rs/vendor/rust-corosync/src/cpg.rs | 657 ++++
src/pmxcfs-rs/vendor/rust-corosync/src/lib.rs | 297 ++
.../vendor/rust-corosync/src/quorum.rs | 337 ++
.../vendor/rust-corosync/src/sys/cfg.rs | 1239 ++++++
.../vendor/rust-corosync/src/sys/cmap.rs | 3323 +++++++++++++++++
.../vendor/rust-corosync/src/sys/cpg.rs | 1310 +++++++
.../vendor/rust-corosync/src/sys/mod.rs | 8 +
.../vendor/rust-corosync/src/sys/quorum.rs | 537 +++
.../rust-corosync/src/sys/votequorum.rs | 574 +++
.../vendor/rust-corosync/src/votequorum.rs | 556 +++
190 files changed, 53895 insertions(+)
create mode 100644 src/pmxcfs-rs/.gitignore
create mode 100644 src/pmxcfs-rs/ARCHITECTURE.txt
create mode 100644 src/pmxcfs-rs/Cargo.lock
create mode 100644 src/pmxcfs-rs/Cargo.toml
create mode 100644 src/pmxcfs-rs/Makefile
create mode 100644 src/pmxcfs-rs/README.md
create mode 100644 src/pmxcfs-rs/integration-tests/.gitignore
create mode 100644 src/pmxcfs-rs/integration-tests/README.md
create mode 100644 src/pmxcfs-rs/integration-tests/docker/.dockerignore
create mode 100644 src/pmxcfs-rs/integration-tests/docker/Dockerfile
create mode 100644 src/pmxcfs-rs/integration-tests/docker/debian.sources
create mode 100644 src/pmxcfs-rs/integration-tests/docker/docker-compose.cluster.yml
create mode 100644 src/pmxcfs-rs/integration-tests/docker/docker-compose.mixed.yml
create mode 100644 src/pmxcfs-rs/integration-tests/docker/docker-compose.yml
create mode 100644 src/pmxcfs-rs/integration-tests/docker/healthcheck.sh
create mode 100644 src/pmxcfs-rs/integration-tests/docker/lib/corosync.conf.mixed.template
create mode 100644 src/pmxcfs-rs/integration-tests/docker/lib/corosync.conf.template
create mode 100755 src/pmxcfs-rs/integration-tests/docker/lib/setup-cluster.sh
create mode 100644 src/pmxcfs-rs/integration-tests/docker/proxmox-archive-keyring.gpg
create mode 100644 src/pmxcfs-rs/integration-tests/docker/pve-no-subscription.sources
create mode 100755 src/pmxcfs-rs/integration-tests/docker/start-cluster-node.sh
create mode 100755 src/pmxcfs-rs/integration-tests/run-tests.sh
create mode 100755 src/pmxcfs-rs/integration-tests/test
create mode 100755 src/pmxcfs-rs/integration-tests/test-local
create mode 100755 src/pmxcfs-rs/integration-tests/tests/cluster/01-connectivity.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/cluster/02-file-sync.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/cluster/03-clusterlog-sync.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/cluster/04-binary-format-sync.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/core/01-test-paths.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/core/02-plugin-version.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/dfsm/01-sync.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/dfsm/02-multi-node.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/fuse/01-operations.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/ipc/01-socket-api.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/ipc/02-flow-control.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/locks/01-lock-management.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/logger/01-clusterlog-basic.sh
create mode 100644 src/pmxcfs-rs/integration-tests/tests/logger/README.md
create mode 100755 src/pmxcfs-rs/integration-tests/tests/memdb/01-access.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/mixed-cluster/01-node-types.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/mixed-cluster/02-file-sync.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/mixed-cluster/03-quorum.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/plugins/01-plugin-files.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/plugins/02-clusterlog-plugin.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/plugins/03-plugin-write.sh
create mode 100644 src/pmxcfs-rs/integration-tests/tests/plugins/README.md
create mode 100755 src/pmxcfs-rs/integration-tests/tests/rrd/01-rrd-basic.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/rrd/02-schema-validation.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/rrd/03-rrdcached-integration.sh
create mode 100644 src/pmxcfs-rs/integration-tests/tests/rrd/README.md
create mode 100755 src/pmxcfs-rs/integration-tests/tests/run-c-tests.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/status/01-status-tracking.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/status/02-status-operations.sh
create mode 100755 src/pmxcfs-rs/integration-tests/tests/status/03-multinode-sync.sh
create mode 100644 src/pmxcfs-rs/integration-tests/tests/test-config.sh
create mode 100644 src/pmxcfs-rs/pmxcfs-api-types/Cargo.toml
create mode 100644 src/pmxcfs-rs/pmxcfs-api-types/README.md
create mode 100644 src/pmxcfs-rs/pmxcfs-api-types/src/lib.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-config/Cargo.toml
create mode 100644 src/pmxcfs-rs/pmxcfs-config/README.md
create mode 100644 src/pmxcfs-rs/pmxcfs-config/src/lib.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/Cargo.toml
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/README.md
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/src/callbacks.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/src/cluster_database_service.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/src/cpg_service.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/src/dfsm_message.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/src/fuse_message.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/src/kv_store_message.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/src/lib.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/src/message.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/src/state_machine.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/src/status_sync_service.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/src/types.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/src/wire_format.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-dfsm/tests/multi_node_sync_tests.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-ipc/Cargo.toml
create mode 100644 src/pmxcfs-rs/pmxcfs-ipc/README.md
create mode 100644 src/pmxcfs-rs/pmxcfs-ipc/examples/test_server.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-ipc/src/connection.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-ipc/src/handler.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-ipc/src/lib.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-ipc/src/protocol.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-ipc/src/ringbuffer.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-ipc/src/server.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-ipc/src/socket.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-ipc/tests/auth_test.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-ipc/tests/qb_wire_compat.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-logger/Cargo.toml
create mode 100644 src/pmxcfs-rs/pmxcfs-logger/README.md
create mode 100644 src/pmxcfs-rs/pmxcfs-logger/src/cluster_log.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-logger/src/entry.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-logger/src/hash.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-logger/src/lib.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-logger/src/ring_buffer.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-memdb/Cargo.toml
create mode 100644 src/pmxcfs-rs/pmxcfs-memdb/README.md
create mode 100644 src/pmxcfs-rs/pmxcfs-memdb/src/database.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-memdb/src/index.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-memdb/src/lib.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-memdb/src/locks.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-memdb/src/sync.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-memdb/src/traits.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-memdb/src/types.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-memdb/src/vmlist.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-memdb/tests/checksum_test.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-memdb/tests/sync_integration_tests.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-rrd/Cargo.toml
create mode 100644 src/pmxcfs-rs/pmxcfs-rrd/README.md
create mode 100644 src/pmxcfs-rs/pmxcfs-rrd/src/backend.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-rrd/src/backend/backend_daemon.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-rrd/src/backend/backend_direct.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-rrd/src/backend/backend_fallback.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-rrd/src/daemon.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-rrd/src/key_type.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-rrd/src/lib.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-rrd/src/schema.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-rrd/src/writer.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-services/Cargo.toml
create mode 100644 src/pmxcfs-rs/pmxcfs-services/README.md
create mode 100644 src/pmxcfs-rs/pmxcfs-services/src/error.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-services/src/lib.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-services/src/manager.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-services/src/service.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-services/tests/service_tests.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-status/Cargo.toml
create mode 100644 src/pmxcfs-rs/pmxcfs-status/README.md
create mode 100644 src/pmxcfs-rs/pmxcfs-status/src/lib.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-status/src/status.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-status/src/traits.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-status/src/types.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-test-utils/Cargo.toml
create mode 100644 src/pmxcfs-rs/pmxcfs-test-utils/src/lib.rs
create mode 100644 src/pmxcfs-rs/pmxcfs-test-utils/src/mock_memdb.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/Cargo.toml
create mode 100644 src/pmxcfs-rs/pmxcfs/README.md
create mode 100644 src/pmxcfs-rs/pmxcfs/src/cluster_config_service.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/daemon.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/file_lock.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/fuse/README.md
create mode 100644 src/pmxcfs-rs/pmxcfs/src/fuse/filesystem.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/fuse/mod.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/ipc/mod.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/ipc/request.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/ipc/service.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/lib.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/logging.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/main.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/memdb_callbacks.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/plugins/README.md
create mode 100644 src/pmxcfs-rs/pmxcfs/src/plugins/clusterlog.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/plugins/debug.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/plugins/members.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/plugins/mod.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/plugins/registry.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/plugins/rrd.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/plugins/types.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/plugins/version.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/plugins/vmlist.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/quorum_service.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/restart_flag.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/src/status_callbacks.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/tests/common/mod.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/tests/fuse_basic_test.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/tests/fuse_cluster_test.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/tests/fuse_integration_test.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/tests/fuse_locks_test.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/tests/local_integration.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/tests/quorum_behavior.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/tests/single_node_functional.rs
create mode 100644 src/pmxcfs-rs/pmxcfs/tests/symlink_quorum_test.rs
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/Cargo.toml
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/Cargo.toml.orig
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/LICENSE
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/README.PATCH.md
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/README.md
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/build.rs
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/regenerate-sys.sh
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/src/cfg.rs
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/src/cmap.rs
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/src/cpg.rs
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/src/lib.rs
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/src/quorum.rs
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/src/sys/cfg.rs
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/src/sys/cmap.rs
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/src/sys/cpg.rs
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/src/sys/mod.rs
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/src/sys/quorum.rs
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/src/sys/votequorum.rs
create mode 100644 src/pmxcfs-rs/vendor/rust-corosync/src/votequorum.rs
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next reply other threads:[~2026-01-06 14:23 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-06 14:24 Kefu Chai [this message]
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 01/15] pmxcfs-rs: add workspace and pmxcfs-api-types crate Kefu Chai
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 02/15] pmxcfs-rs: add pmxcfs-config crate Kefu Chai
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 03/15] pmxcfs-rs: add pmxcfs-logger crate Kefu Chai
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 04/15] pmxcfs-rs: add pmxcfs-rrd crate Kefu Chai
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 05/15] pmxcfs-rs: add pmxcfs-memdb crate Kefu Chai
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 06/15] pmxcfs-rs: add pmxcfs-status crate Kefu Chai
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 07/15] pmxcfs-rs: add pmxcfs-test-utils infrastructure crate Kefu Chai
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 08/15] pmxcfs-rs: add pmxcfs-services crate Kefu Chai
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 09/15] pmxcfs-rs: add pmxcfs-ipc crate Kefu Chai
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 10/15] pmxcfs-rs: add pmxcfs-dfsm crate Kefu Chai
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 11/15] pmxcfs-rs: vendor patched rust-corosync for CPG compatibility Kefu Chai
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 13/15] pmxcfs-rs: add integration and workspace tests Kefu Chai
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 14/15] pmxcfs-rs: add Makefile for build automation Kefu Chai
2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 15/15] pmxcfs-rs: add project documentation Kefu Chai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260106142440.2368585-1-k.chai@proxmox.com \
--to=k.chai@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox