Repository navigation
Add a physical-only engine for dehydrate backup deletion - #2149
Draft
Tyrie Vella (tyrielv) wants to merge 1 commit into
Draft
Tyrie Vella (tyrielv) wants to merge 1 commit into
Tyrie Vella (tyrielv) wants to merge 1 commit into
Conversation
Enumerate on-disk entries through native handles so projected-only names cannot block backup deletion while the original provider remains active. Pin the selected backup, reject replaced entries and unrelated reparse points, and preserve explicit cancellation and retry results. Preserve raw UTF-16 names and report progress after handles close. Propagate callback errors, reject reentrant operations, and delete names despite compatible readers. Add separate white-box functional fixtures for filesystem and provider integration. Run client operations in a separate test process and verify notification delivery with a live-file control. Exercise cold reads, file and directory tombstones, scope guards, and bounded failure samples. Pin control-file handles before deletion to reject fixture aliases. Document the white-box boundary and the backup-parent contract. Keep the engine dormant until a separate product caller exposes cleanup. Assisted-by: GPT-6.1 Sol Signed-off-by: Tyrie Vella <tyrielv@gmail.com>
Tyrie Vella (tyrielv)
force-pushed
the
tyrielv/backup-physical-delete
branch
from
October 30, 2026 21:34
591f291 to
e142c66
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem and Context
After dehydrate moves placeholders into a backup, ordinary directory enumeration can still return projected-only names from the active provider. An attempt to open these names fails with Windows error 369. A normal recursive delete can stop before it deletes the physical backup.
This PR adds a shared Windows deletion engine without a product caller. It does not expose a cleanup command or change dehydrate, mount, or provider behavior. Callers remain responsible for user consent and eligibility after successful dehydrate.
Changes
WindowsDehydrateBackupto select one timestamped backup, including the legacy timestamp format and the worktree layout.NtQueryDirectoryFileExandSL_RETURN_ON_DISK_ENTRIES_ONLY. Delete entries by handle without file-data access or attribute changes.Tests.WhiteBoxwith theWhiteBoxcategory and explicit product references. Document the white-box boundary separately from black-box functional tests.Known gaps and deliberate decisions