posix: add --same-dir-tmp for atomic writes on filesystems without cross-dir rename#1
Open
riaarora-boop wants to merge 1 commit into
Open
posix: add --same-dir-tmp for atomic writes on filesystems without cross-dir rename#1riaarora-boop wants to merge 1 commit into
riaarora-boop wants to merge 1 commit into
Conversation
…oss-dir rename Some filesystems (e.g. Rubrik SDFS) reject rename() across directories with EACCES. --same-dir-tmp places the atomic-write temp file in the object's own directory so the commit rename is always same-directory. The temp file gets a hidden ".sgwtmp." prefix to stay out of object listings. Adds tmpDir/tmpDirFor/tmpFilePrefix helpers and updates all six openTmpFile call sites to route through them. --disableotmp should be used alongside this flag on SDFS (O_TMPFILE is not supported there). Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
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.
Summary:
Adds
--same-dir-tmpflag to the posix backend. When set, the atomic-write temp file is created in the object's own directory instead of the per-bucket.sgwtmp/staging dir, so the commitrename()is always same-directory.Required for Rubrik SDFS, which returns
EACCESon cross-directory rename. The temp file gets a hidden.sgwtmp.<hash>.prefix so it is excluded from object listings.Adds
tmpDir/tmpDirFor/tmpFilePrefixhelpers and updates all sixopenTmpFilecall sites to route through them. Also fixeswithout_otmpfile.goto useerrors.Is(err, syscall.ENOENT)and properly surfaceMkdirAllerrors.Test Plan:
go build ./backend/... ./cmd/...passesEACCESJIRA Issues:
CDM-557242 (subtask of CDM-557238)
Revert Plan:
Revert this PR. No data migration needed — the flag defaults to false and existing deployments are unaffected.