Skip to content

feat(libcsi & rkl & rks): add basic volume management features#552

Open
Ricky-Daxia wants to merge 9 commits intork8s-dev:mainfrom
Ricky-Daxia:feat/libcsi
Open

feat(libcsi & rkl & rks): add basic volume management features#552
Ricky-Daxia wants to merge 9 commits intork8s-dev:mainfrom
Ricky-Daxia:feat/libcsi

Conversation

@Ricky-Daxia
Copy link
Collaborator

┌──────────────────────────────────┐          QUIC (CsiRequest/CsiResponse)          ┌──────────────────────────────────┐
│       RKS (Control Plane)        │ <────────────────────────────────────────────>  │         RKL (Worker Node)        │
├──────────────────────────────────┤                                                 ├──────────────────────────────────┤
│                                  │                                                 │                                  │
│  VolumeOrchestrator              │                                                 │  CsiNodeService                  │
│  │                               │                                                 │  │                               │
│  ├─ RksCsiController             │                                                 │  └─ SlayerFsOperator             │
│  │   └─ VolumeStore (xline)      │                                                 │      ├─ FUSE mount (rfuse3)      │
│  │                               │                                                 │      ├─ bind mount (nix)         │
│  └─ sending_csi_requests         │                                                 │      └─ VolumeStateStore         │
│                                  │                                                 │                                  │
│  RksCsiIdentity                  │                                                 │  RklCsiIdentity                  │
└──────────────────────────────────┘                                                 └──────────────────────────────────┘
                ▲                                                                                      ▲
                │                                                                                      │
                │                        ┌──────────────────────────────────────────┐                  │
                └────────────────────────┤         libcsi (Interface Crate)         ├──────────────────┘
                                         ├──────────────────────────────────────────┤
                                         │                                          │
                                         │  • CsiController / CsiNode Traits        │
                                         │  • CsiIdentity Trait                     │
                                         │  • CsiMessage Enum (~20 variants)        │
                                         │  • Types: Volume, VolumeId, VolumeState  │
                                         │                                          │
                                         └──────────────────────────────────────────┘

Deploy a complete rk8s cluster on a single machine with 4 pods(nginx + 3 busybox) and SlayerFS persistent volumes using rk8s-single skill. ✅

Ricky-Daxia and others added 7 commits March 21, 2026 15:50
- 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>
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +253 to +255
let volume = orchestrator
.provision_and_mount(req, node_id, &target_path)
.await

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment on lines +131 to +132
if m.propagation != 0 {
opts.push("rprivate".to_string());

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +72 to +74
// Rollback: delete volume metadata
if let Err(del_err) = self.controller.delete_volume(vol_id).await {
log::error!(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment on lines +253 to +256
let volume = orchestrator
.provision_and_mount(req, node_id, &target_path)
.await
.map_err(|e| {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 slayerFs volumes.
  • 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.

Comment on lines +123 to +148
// 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));
}
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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\").

Copilot uses AI. Check for mistakes.
Comment on lines +32 to +45
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}"
);
}
}
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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'.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +19
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
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants