Skip to content

Conversation

@wonwuakpa-msft
Copy link
Member

@wonwuakpa-msft wonwuakpa-msft commented Dec 9, 2025

Description

Added a new flag --posix-properties-style that will toggle AMLFS style attributes. Specifically, mode is saved in octal and modTime is saved in a new Time format.

Related Links

  • Item
  • [Email: [Br] Dependency submissions for Storage SDKs and Tools]

Type of Change

  • Bug fix
  • New feature
  • Documentation update required
  • Code quality improvement
  • Other (describe):

How Has This Been Tested?

Thank you for your contribution to AzCopy!

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

This PR adds support for Azure Managed Lustre File System (AMLFS) style POSIX metadata properties, enabling compatibility with AMLFS when preserving POSIX properties during copy operations. The implementation introduces a new --posix-properties-style flag that allows users to specify whether to use 'standard' or 'amlfs' formatting for POSIX metadata attributes.

Key changes:

  • Introduces PosixPropertiesStyle enum type with Standard (default) and AMLFS variants
  • AMLFS style uses octal formatting for file permissions and a new timestamp format for modification times
  • Updates metadata read/write logic to support both standard and AMLFS formatting styles

Reviewed changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
common/fe-ste-models.go Defines new PosixPropertiesStyle enum with Standard and AMLFS variants, adds AMLFS timestamp format constant
common/unixStatAdapter.go Updates metadata read/write functions to handle AMLFS-style owner/group/permissions/modtime formatting, adds logic to detect and parse octal permissions
common/unixStatAdapter_test.go Adds test coverage for AMLFS-style metadata serialization and deserialization
ste/JobPartPlan.go Increments data schema version to 20, adds PosixPropertiesStyle field to job part plan header
ste/mgr-JobPartTransferMgr.go Threads PosixPropertiesStyle through transfer info structure
ste/sender-*.go Updates all blob sender implementations to pass PosixPropertiesStyle to metadata functions
ste/xfer-anyToRemote-fileProperties.go Code formatting cleanup (brace alignment)
common/rpc-models.go Adds PosixPropertiesStyle field to copy job part order request
cmd/copy.go Adds --posix-properties-style CLI flag with standard/amlfs options
cmd/copyEnumeratorInit.go Propagates posixPropertiesStyle to job part order
cmd/copyValidation.go Updates validation call to include posixPropertiesStyle parameter
azcopy/validationUtil.go Adds validation to ensure --posix-properties-style is used with --preserve-posix-properties
azcopy/syncOptions.go Adds posixPropertiesStyle field and updates validation for sync operations
azcopy/syncEnumerator.go Propagates posixPropertiesStyle to sync job initialization
ste/md5Comparer.go Adds author name to TODO comment (unrelated change)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

s.accessTime = time.Unix(0, at)
}

// Always store ModTime in standard POSIX style
Copy link

Copilot AI Dec 9, 2025

Choose a reason for hiding this comment

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

The comment is misleading. This code reads ModTime from metadata and attempts to parse it in either standard (Unix nanoseconds) or AMLFS (formatted string) style. A better comment would be:

// ModTime can be stored in either standard (nanoseconds) or AMLFS (formatted string) format
Suggested change
// Always store ModTime in standard POSIX style
// ModTime can be stored in either standard (nanoseconds) or AMLFS (formatted string) format

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