Skip to content

DAOS-19249 dfs: support xattr operations on hardlinks#18611

Open
sherintg wants to merge 1 commit into
feature/dfs_hardlinksfrom
sherintg/dfs_hardlinks/DAOS-19249
Open

DAOS-19249 dfs: support xattr operations on hardlinks#18611
sherintg wants to merge 1 commit into
feature/dfs_hardlinksfrom
sherintg/dfs_hardlinks/DAOS-19249

Conversation

@sherintg

@sherintg sherintg commented Jul 3, 2026

Copy link
Copy Markdown
Collaborator

Store extended attributes for hardlinked files in the Global Inode Table (GIT) keyed by OID so all links share a single set of xattrs. dfs_setxattr, dfs_getxattr, dfs_removexattr and dfs_listxattr now detect when a dfs_obj carries a stale mode (opened while the entry was still a regular file) and transparently retry against GIT once the on-disk entry has been converted to a hardlink.

dfs_setxattr additionally serializes concurrent hardlink conversion and xattr updates using a balanced-mode DTX when enabled, performing an explicit existence check in place of conditional akey updates.

Add DFS_UNIT_TEST30 covering get/set/list/remove across stale handles and multiple links, flag semantics, persistence and post-unlink behavior.
Allow-unstable-test: true

Steps for the author:

  • Commit message follows the guidelines.
  • Appropriate Features or Test-tag pragmas were used.
  • Appropriate Functional Test Stages were run.
  • At least two positive code reviews including at least one code owner from each category referenced in the PR.
  • Testing is complete. If necessary, forced-landing label added and a reason added in a comment.

After all prior steps are complete:

  • Gatekeeper requested (daos-gatekeeper added as a reviewer).

Store extended attributes for hardlinked files in the Global Inode
Table (GIT) keyed by OID so all links share a single set of xattrs.
dfs_setxattr, dfs_getxattr, dfs_removexattr and dfs_listxattr now
detect when a dfs_obj carries a stale mode (opened while the entry
was still a regular file) and transparently retry against GIT once
the on-disk entry has been converted to a hardlink.

dfs_setxattr additionally serializes concurrent hardlink conversion
and xattr updates using a balanced-mode DTX when enabled, performing
an explicit existence check in place of conditional akey updates.

Add DFS_UNIT_TEST30 covering get/set/list/remove across stale handles
and multiple links, flag semantics, persistence and post-unlink
behavior.
Allow-unstable-test: true

Signed-off-by: Sherin T George <sherin-t.george@hpe.com>
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

Ticket title is 'Add hardlink support to DFS xattr APIs'
Status is 'Open'
https://daosio.atlassian.net/browse/DAOS-19249

@sherintg sherintg marked this pull request as ready for review July 3, 2026 11:19
@sherintg sherintg requested review from a team as code owners July 3, 2026 11:19
@sherintg sherintg requested review from knard38 and mchaarawi July 3, 2026 11:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant