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 [email protected]: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 [email protected] https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
