mirror of
https://github.com/kvcache-ai/AgentENV.git
synced 2026-11-05 01:17:36 +00:00
[GH-ISSUE #140] refactor(ublk): remove the legacy CoW target #48
Labels
No labels
bug
documentation
enhancement
enhancement
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/AgentENV#48
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @yingdi-shan on GitHub (Aug 7, 2026).
Original GitHub issue: https://github.com/kvcache-ai/AgentENV/issues/140
Affected component
ublk / ublk-daemon
Problem statement
AgentENV's production block-device path uses OverlayBD, but
uvm-ublkstill maintains the separateBasicCowTargetimplementation.The CoW target has no production caller in AgentENV. However, it remains exposed through the Rust API, standalone CLI, daemon protocol, configuration, tests, and documentation. This creates a second concurrency-sensitive I/O path that must be maintained despite no longer supporting current sandbox, snapshot, or resume workflows.
The configuration is also misleading:
ublk.device_type = "cow"is accepted even though current sandbox creation and snapshot restoration depend on OverlayBD.Use case
Maintainers changing ublk queues, I/O buffers, daemon lifecycle handling, or snapshot behavior currently need to account for an unused target and its protocol branches. Every build and release also continues to expose and test this unsupported path.
Operators need the configuration and CLI to reflect the storage backend AgentENV actually supports.
Current behavior and workarounds
BasicCowTargetis currently exposed through:storage/ublk/src/impls/cow.rsuvm-ublk create cowCLI subcommandCreateCowrequestUblkDaemonClient::create_cowManagedDevice::CowUblkBackend::CowandUblkConfig::cow()ublk.device_type = "cow"AgentENV production code does not call
create_cow; fresh sandbox and snapshot paths create OverlayBD devices.There is no useful workaround other than continuing to maintain these dormant interfaces.
Desired behavior
ublk.device_type = "cow", when AgentENV starts, then it fails with an actionable message directing the operator to OverlayBD.uvm-ublkCLI, when listing target types, then nocowsubcommand is exposed.CreateCowrequest or CoW-managed device exists.BasicCowTarget,BasicCowConfig,UblkBackend::Cow, and their tests are removed.Proposed approach
BasicCowTargetimplementation and its tests.uvm-ublk.cowtarget and now-unused--zero-copyoption.CreateCowfrom the daemon protocol.UblkDaemonClient::create_cow, the server handler, andManagedDevice::Cow.UblkBackend::CowandUblkConfig::cow().device_typeas an OverlayBD-only compatibility setting for now, but rejectcowexplicitly.futures-util,dashmap, and theranddev dependency when no other consumer remains.Validation should include:
Compatibility and operational impact
API/config changes:
The
BasicCowTargetRust API,uvm-ublk create cowcommand, and internalCreateCowdaemon request are removed. Explicitdevice_type = "cow"configurations are rejected.Snapshot or storage format changes:
No OverlayBD or snapshot artifact formats change. Persisted sandbox state containing
UblkBackend::Cowcannot be resumed and should produce a clear migration error.New host/runtime requirements:
None.
Pre-submission checklist
@xiecl666 commented on GitHub (Aug 8, 2026):
I'd like to take this one.
@yingdi-shan commented on GitHub (Aug 8, 2026):
Thanks, but we have implemented it in PR #142.