all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH pve-cluster 00/15 v1] Rewrite pmxcfs with Rust
@ 2026-01-06 14:24 Kefu Chai
  2026-01-06 14:24 ` [pve-devel] [PATCH pve-cluster 01/15] pmxcfs-rs: add workspace and pmxcfs-api-types crate Kefu Chai
                   ` (13 more replies)
  0 siblings, 14 replies; 15+ messages in thread
From: Kefu Chai @ 2026-01-06 14:24 UTC (permalink / raw)
  To: pve-devel

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


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2026-01-07  9:16 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-01-06 14:24 [pve-devel] [PATCH pve-cluster 00/15 v1] Rewrite pmxcfs with Rust Kefu Chai
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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal