Skip to content

Correct the subtree restore section from a FlashBlade check - #57

Merged
robertcantu-pure merged 1 commit into
mainfrom
docs/snapshot-subtree-fb-findings
Nov 13, 2026
Merged

robertcantu-pure merged 1 commit into
mainfrom
docs/snapshot-subtree-fb-findings

Conversation

@robertcantu-pure

Copy link
Copy Markdown
Collaborator

A FlashBlade check of the .snapshot subtree restore section added in #53 (Purity//FB 4.8.7, Linux kernel NFSv4.1, a 679-object subtree repaired with v0.10.0-rc4) found that the procedure works but the text was wrong in places. This corrects docs/field-preview/snapshot-runbook.md to match.

  • Listing: .snapshot does appear in ls -a at the file system root, but not in a plain ls or in subdirectories. Each snapshot directory is named <file system>.<suffix>.
  • ACL loop: it puts back what nfs4_getfacl shows, not the stored bytes. File ACEs lose ACE4_DELETE_CHILD (421 of 673 files in the check). Over NFS that changes nothing, but SMB clients see a different mask, and an nfs4_getfacl comparison can't detect it. The section now says so and tells readers with data that SMB clients use to check from an SMB client, or to copy the subtree back. A byte-for-byte restore mode is tracked in Restore ACLs byte for byte from a snapshot path #56.
  • Copy tools: cp -a / cp -r --preserve=all carried every ACL byte, audit entries included. rsync -aX carried none and failed partway. The section now also says the loop writes to $LIVE/$SUB, so a copy made elsewhere needs those pointed at it.
  • Verify: adds a raw getfattr -n system.nfs4_acl -e hex comparison.
  • CHANGELOG entry under Unreleased.

Verification

  • Documentation only; no code or behavior change.
  • Public scan of the tree and origin/main..HEAD commits: clean.
  • The corrections follow the lab check (passed: listing, ACL fidelity in .snapshot, the loop's skip and new-object handling, cp -a; failed: rsync -aX; not run: the identity-without-audit-bypass case). Detailed evidence is kept internally.
  • Not run: the getfattr command as written. The lab compared raw attributes, but this exact command line wasn't run. It only reads.

🤖 Generated with Claude Code

A FlashBlade check of the subtree restore section (Purity//FB 4.8.7)
found the procedure works but the text was off in places:

- .snapshot shows in ls -a at the file system root, and each snapshot
  directory carries the snapshot's full name.
- The nfs4_getfacl/nfs4_setfacl loop drops ACE4_DELETE_CHILD from file
  ACEs. That is invisible over NFS and to an nfs4_getfacl comparison,
  but SMB clients see a changed mask. Say so, and give a raw-attribute
  comparison for Verify.
- cp -a carried every ACL byte, audit entries included; rsync -aX
  carried none and failed partway. Name both, and note the loop writes
  to LIVE/SUB, so a copy elsewhere needs those pointed at it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@robertcantu-pure robertcantu-pure added the documentation Improvements or additions to documentation label Nov 13, 2026
@robertcantu-pure
robertcantu-pure merged commit d81c4ee into main Nov 13, 2026
16 checks passed
@robertcantu-pure
robertcantu-pure deleted the docs/snapshot-subtree-fb-findings branch November 13, 2026 03:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant