feat(libcsi & rkl & rks): add basic volume management features#552
feat(libcsi & rkl & rks): add basic volume management features#552Ricky-Daxia wants to merge 9 commits intork8s-dev:mainfrom
Conversation
- Resolve container volumeMounts into CRI Mount entries in TaskRunner,
mapping SlayerFs/HostPath/EmptyDir to host paths for bind-mount
- Translate CRI mounts into OCI spec bind-mount entries in OCISpecGenerator
- Fix volume ID mismatch between create (vol-{uuid}) and delete ({name})
by persisting real volume IDs in pod annotations (csi.rk8s.io/{vol})
- Delete path now reads annotation to retrieve the correct vol-{uuid}
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3db0b6083e
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| let volume = orchestrator | ||
| .provision_and_mount(req, node_id, &target_path) | ||
| .await |
There was a problem hiding this comment.
Check pod ownership before provisioning CSI volumes
This call runs before any pod.spec.node_name == node_id guard, so every worker watcher that sees the pod PUT will execute provisioning against its own node_id. In a multi-node cluster, that creates and stages duplicate volumes on non-owner nodes and can race on writing csi.rk8s.io/* annotations, leaving the pod with a volume ID that does not belong to the node actually running it.
Useful? React with 👍 / 👎.
| if m.propagation != 0 { | ||
| opts.push("rprivate".to_string()); |
There was a problem hiding this comment.
Preserve requested mount propagation semantics
The propagation mapping is incorrect: any non-zero CRI propagation gets forced to rprivate. In MountPropagation, 0 is private, while 1 and 2 represent host-to-container and bidirectional propagation; forcing those to private drops required mount propagation behavior for workloads that rely on it.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 588fd5c1e1
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| // Rollback: delete volume metadata | ||
| if let Err(del_err) = self.controller.delete_volume(vol_id).await { | ||
| log::error!( |
There was a problem hiding this comment.
Unstage volume when stage request rollback runs
If send_csi_request_and_wait(StageVolume) fails after the node already performed the stage operation (e.g., response lost or timeout), this rollback path only deletes controller metadata and returns. That leaves an orphaned staged mount/state on the worker with no corresponding volume record, and retries can create a new volume ID while the old mount leaks. This branch should issue a best-effort UnstageVolume before deleting metadata, like the publish-failure rollback does.
Useful? React with 👍 / 👎.
| let volume = orchestrator | ||
| .provision_and_mount(req, node_id, &target_path) | ||
| .await | ||
| .map_err(|e| { |
There was a problem hiding this comment.
Roll back earlier volumes when pod provisioning partially fails
enqueue_create provisions pod volumes in a loop and propagates the first error immediately. For pods with multiple SlayerFs volumes, a failure on a later volume leaves earlier ones already mounted/provisioned, but pod creation aborts; on retry, new volume IDs are created and previous mounts/metadata leak. The function should track successful provisions and unmount_and_deprovision them before returning an error.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Pull request overview
Adds basic CSI-based volume management across RKS (control plane) and RKL (worker), enabling SlayerFS-backed persistent volumes and wiring request/response routing over the existing node connection.
Changes:
- Introduce an RKS CSI control-plane module (controller/orchestrator/store) and plumb it into startup + node worker dispatch.
- Add RKL CSI module hook and a sample pod manifest using
slayerFsvolumes. - Normalize Buck targets for vendored Rust crates and internal libraries (rename vendor/manifest targets consistently).
Reviewed changes
Copilot reviewed 298 out of 1042 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| third-party/rust/crates/equator-macro/0.4.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/env_logger/0.11.9/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/env_filter/1.0.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/enumflags2_derive/0.7.12/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/enumflags2/0.7.12/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/enum_dispatch/0.3.13/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/enum-map/2.7.3/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/enum-map-derive/0.17.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/enum-as-inner/0.6.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/enquote/1.1.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/endian-type/0.1.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/endi/1.1.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/encoding_rs/0.8.35/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/encode_unicode/1.0.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/either/1.15.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/ecdsa/0.16.9/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/ecdsa/0.14.8/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/eax/0.5.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/dyn-clone/1.0.20/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/dunce/1.0.5/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/dsa/0.6.3/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/dotenvy/0.15.7/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/dotenv/0.15.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/document-features/0.2.12/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/dockerfile-parser/0.9.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/displaydoc/0.2.5/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/dirs/6.0.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/dirs-sys/0.5.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/directories/6.0.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/dir-lock/0.5.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/digest/0.10.7/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/des/0.8.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/derive_more/2.1.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/derive_more/0.99.20/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/derive_builder_macro/0.20.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/derive_builder_core/0.20.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/derive_builder/0.20.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/derivative/2.2.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/deranged/0.5.6/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/der/0.7.10/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/der/0.6.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/delegate/0.13.5/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/debugid/0.8.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/dbl/0.3.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/data-encoding/2.10.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/dashmap/6.1.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/darling_macro/0.21.3/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/darling_macro/0.20.11/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/darling/0.21.3/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/darling/0.20.11/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/daemonize/0.5.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/cx448/0.1.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/ctr/0.9.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/crypto-common/0.1.7/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/critical-section/1.2.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/criterion/0.5.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/criterion-plot/0.5.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/crc/3.4.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/crc-fast/1.6.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/crc-catalog/2.4.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/cpufeatures/0.2.17/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/core-models/0.0.4/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/core-foundation-sys/0.8.7/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/convert_case/0.4.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/convert_case/0.10.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/constant_time_eq/0.4.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/const_format_proc_macros/0.2.34/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/const_format/0.2.35/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/const-random/0.1.18/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/const-random-macro/0.1.16/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/const-oid/0.9.6/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/console/0.16.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/confy/1.0.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/colorchoice/1.0.4/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/cmake/0.1.57/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/cmac/0.7.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/clap_lex/1.0.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/clap_derive/4.5.55/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/clap/4.5.58/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/cipher/0.4.4/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/ciborium/0.2.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/ciborium-io/0.2.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/chacha20/0.9.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/cfg_aliases/0.2.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/cfg-if/1.0.4/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/cfb-mode/0.8.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/cesu8/1.1.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/cc/1.2.56/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/cbc/0.1.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/cast5/0.11.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/cast/0.3.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/caps/0.5.6/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/camellia/0.1.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/bzip2/0.6.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/bytes/1.11.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/bytes-utils/0.1.4/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/byteorder/1.5.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/byteorder-lite/0.1.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/bytemuck/1.25.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/bytecheck_derive/0.6.12/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/bumpalo/3.19.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/builder-pattern/0.4.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/builder-pattern-macro/0.4.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/buffer-redux/1.1.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/blowfish/0.9.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/blocking/1.6.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/block-padding/0.3.3/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/block-buffer/0.10.4/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/blake2/0.10.6/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/bitvec/1.0.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/bitflags/2.11.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/bitflags/1.3.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/bitfields/1.0.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/bitfields-impl/1.0.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/bincode/1.3.3/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/better_default/1.0.5/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/bcrypt/0.17.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/base64ct/1.8.3/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/base64/0.22.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/base64/0.13.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/base16ct/0.2.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/base16ct/0.1.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/backtrace/0.3.76/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/axum/0.8.8/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/axum-core/0.5.6/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/aws-smithy-json/0.61.9/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/aws-sdk-sts/1.98.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/aws-sdk-sso/1.94.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/aws-credential-types/1.2.12/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/aws-config/1.8.14/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/autocfg/1.5.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/auto_impl/1.3.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/atomic/0.6.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/atomic-waker/1.1.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/atoi/2.0.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-trait/0.1.89/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-task/4.7.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-stream/0.3.6/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-stream-impl/0.3.6/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-signal/0.2.13/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-recursion/1.1.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-process/2.5.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-process/1.8.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-notify/0.3.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-lock/3.4.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-lock/2.8.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-executor/1.13.3/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-channel/2.5.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/async-broadcast/0.7.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/as-any/0.3.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/arrayvec/0.7.6/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/arrayref/0.3.9/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/arc-swap/1.8.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/anstyle/1.0.13/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/anstyle-wincon/3.0.11/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/anstyle-query/1.1.5/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/anstream/0.6.21/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/anes/0.1.6/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/android_system_properties/0.1.5/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/allocator-api2/0.2.21/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/aligned_box/0.3.0/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/aligned-vec/0.6.4/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/aliasable/0.1.3/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/aes/0.8.4/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/aead/0.5.2/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/adler2/2.0.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| third-party/rust/crates/addr2line/0.25.1/BUCK | Renames vendor/manifest targets to consistent vendor/manifest. |
| project/rks/src/node/server.rs | Updates worker dispatch call signature to use shared state. |
| project/rks/src/node/dispatch.rs | Adds CSI response routing and pulls xline store from shared state. |
| project/rks/src/main.rs | Wires CSI controller/orchestrator and pending request map into RKS startup. |
| project/rks/src/lib.rs | Exposes new csi module from RKS crate. |
| project/rks/src/csi/mod.rs | Introduces CSI module surface for RKS (controller/orchestrator/store). |
| project/rks/Cargo.toml | Adds libcsi + dashmap dependencies for CSI orchestration and routing. |
| project/rkl/tests/test_volume.yaml | Adds a sample pod YAML manifest using SlayerFS volume type. |
| project/rkl/src/main.rs | Declares new RKL CSI module. |
| project/rkl/src/lib.rs | Exposes new csi module from RKL crate. |
| project/rkl/src/daemon/status/status_manager.rs | Updates test fixtures to include new volumes field. |
| project/rkl/src/daemon/status/probe/probe_manager.rs | Updates test fixtures to include new volumes field. |
| project/rkl/src/daemon/pod_worker.rs | Updates test fixtures to include new volumes field. |
| project/rkl/Cargo.toml | Adds CSI + SlayerFS + rfuse3 dependencies for volume operations on workers. |
| project/rfuse3/BUCK | Normalizes Buck vendor/manifest target naming. |
| project/libscheduler/BUCK | Normalizes Buck vendor/manifest target naming. |
| project/libruntime/src/oci/mod.rs | Adds CRI→OCI mount translation to OCI spec generation. |
| project/libruntime/BUCK | Normalizes Buck vendor/manifest target naming. |
| project/libnetwork/BUCK | Normalizes Buck vendor/manifest target naming. |
| project/libfuse-fs/BUCK | Normalizes Buck vendor/manifest target naming. |
| project/libcsi/src/transport/mod.rs | Removes transport module doc/exports (module structure change). |
| project/libcsi/src/backend/mod.rs | Removes backend module doc/exports (module structure change). |
| project/libcni/BUCK | Normalizes Buck vendor/manifest target naming. |
| project/dagrs/BUCK | Normalizes Buck vendor/manifest target naming. |
| project/dagrs-derive/BUCK | Normalizes Buck vendor/manifest target naming. |
| project/common/Cargo.toml | Adds libcsi dependency to shared/common crate. |
| project/common/BUCK | Adds libcsi dep and normalizes Buck vendor/manifest target naming. |
| // Convert CRI mounts to OCI mounts | ||
| if !self.container_config.mounts.is_empty() { | ||
| let mut oci_mounts = self.inner_spec.mounts().clone().unwrap_or_default(); | ||
| for m in &self.container_config.mounts { | ||
| let mut opts = vec![ | ||
| if m.readonly { "ro" } else { "rw" }.to_string(), | ||
| "rbind".to_string(), | ||
| ]; | ||
| if m.propagation != 0 { | ||
| opts.push("rprivate".to_string()); | ||
| } | ||
| let mount_type = if m.host_path.starts_with('/') { | ||
| "bind" | ||
| } else { | ||
| "none" | ||
| }; | ||
| let oci_mount = MountBuilder::default() | ||
| .typ(mount_type) | ||
| .destination(&m.container_path) | ||
| .source(&m.host_path) | ||
| .options(opts) | ||
| .build()?; | ||
| oci_mounts.push(oci_mount); | ||
| } | ||
| self.inner_spec.set_mounts(Some(oci_mounts)); | ||
| } |
There was a problem hiding this comment.
The mount propagation/options mapping is logically incorrect: when m.propagation != 0 you unconditionally add rprivate, which actively disables propagation for cases that likely requested it (e.g., host-to-container or bidirectional). Also, using typ(\"none\") when host_path is not absolute will produce an invalid bind-mount spec (the code still sets source and rbind). Map the CRI propagation enum to the correct OCI options (rprivate/rslave/rshared), and treat non-absolute host paths as an error (or normalize them) rather than emitting a mount with typ(\"none\").
| RksMessage::CsiResponse { id, message } => { | ||
| if let Some((_, sender)) = shared.pending_csi_requests.remove(&id) { | ||
| info!( | ||
| target: "rks::node::worker_dispatch", | ||
| "routing CSI response for request {id}" | ||
| ); | ||
| let _ = sender.send(message); | ||
| } else { | ||
| warn!( | ||
| target: "rks::node::worker_dispatch", | ||
| "received CSI response for unknown request {id}" | ||
| ); | ||
| } | ||
| } |
There was a problem hiding this comment.
Dropping the result of sender.send(message) can silently swallow cases where the requester has already gone away (e.g., timeout/cancellation), which makes CSI request/response debugging harder in production. Consider at least logging at debug/trace when send fails (and/or tracking a metric) so you can distinguish 'unknown request id' from 'request id existed but receiver dropped'.
| apiVersion: v1 | ||
| kind: Pod | ||
| metadata: | ||
| name: my-pod | ||
| spec: | ||
| containers: | ||
| - name: app | ||
| image: busybox:1.36 | ||
| command: | ||
| - /bin/sh | ||
| - -c | ||
| - "while true; do echo hello >> /data/log.txt; sleep 5; done" | ||
| volumeMounts: | ||
| - name: data-vol | ||
| mountPath: /data | ||
| volumes: | ||
| - name: data-vol | ||
| type: slayerFs | ||
| capacity_bytes: 1073741824 |
There was a problem hiding this comment.
The YAML document is indented at the top level (line 1 starts with two spaces). While many parsers accept this, it’s uncommon and can cause confusion or tooling issues (e.g., simple linters/formatters). Consider removing the leading indentation so the top-level keys start at column 1.
| apiVersion: v1 | |
| kind: Pod | |
| metadata: | |
| name: my-pod | |
| spec: | |
| containers: | |
| - name: app | |
| image: busybox:1.36 | |
| command: | |
| - /bin/sh | |
| - -c | |
| - "while true; do echo hello >> /data/log.txt; sleep 5; done" | |
| volumeMounts: | |
| - name: data-vol | |
| mountPath: /data | |
| volumes: | |
| - name: data-vol | |
| type: slayerFs | |
| capacity_bytes: 1073741824 | |
| apiVersion: v1 | |
| kind: Pod | |
| metadata: | |
| name: my-pod | |
| spec: | |
| containers: | |
| - name: app | |
| image: busybox:1.36 | |
| command: | |
| - /bin/sh | |
| - -c | |
| - "while true; do echo hello >> /data/log.txt; sleep 5; done" | |
| volumeMounts: | |
| - name: data-vol | |
| mountPath: /data | |
| volumes: | |
| - name: data-vol | |
| type: slayerFs | |
| capacity_bytes: 1073741824 |
Deploy a complete rk8s cluster on a single machine with 4 pods(nginx + 3 busybox) and SlayerFS persistent volumes using rk8s-single skill. ✅