Project

General

Profile

Actions

Bug #63099

closed

cephfs-mirror: ceph_getxattr call always return -61 (ENODATA) in PeerReplayer::synchronize

Added by Jos Collin 7 months ago. Updated 3 months ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
Correctness/Safety
Target version:
-
% Done:

0%

Source:
Community (dev)
Tags:
backport_processed
Backport:
reef, quincy
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Component(FS):
cephfs-mirror
Labels (FS):
snapshots
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

ceph_getxattr() call always return -61 (ENODATA) in PeerReplayer::synchronize, which results in 'prev' snapshot always coming in as boost::none in PeerReplayer::do_synchronize function. Even if the ceph_fsetxattr seems successfully setting (returns 0) the 'ceph.mirror.dirty_snap_id' in the first pass, the ceph_getxattr() call always returns ENODATA in the following passes (and in further snapshot creations) for the same dir_root. It never retrieves the xattr value from the dir_root.

As the prev snapshot is always none, this issue blocks the implementation of https://tracker.ceph.com/issues/61334.

The ceph_getxattr() call eventually hits Server::handle_client_getvxattr(). But the is_ceph_vxattr call in it doesn't check for 'ceph.mirror.dirty_snap_id' and so it responds -CEPHFS_ENODATA (see the attachment). In addition to that, Server::handle_client_getvxattr() does nothing in particular for the 'ceph.mirror.dirty_snap_id' attribute. So these two things needs fix.

See the discussion about the fix here: https://github.com/ceph/ceph/pull/53912#pullrequestreview-1673118054


Files

image.png (55 KB) image.png Jos Collin, 10/09/2023 12:27 PM

Related issues 3 (1 open2 closed)

Blocks CephFS - Feature #61334: cephfs-mirror: use snapdiff api for efficient tree traversalPending BackportJos Collin

Actions
Copied to CephFS - Backport #63474: reef: cephfs-mirror: ceph_getxattr call always return -61 (ENODATA) in PeerReplayer::synchronizeResolvedJos CollinActions
Copied to CephFS - Backport #63475: quincy: cephfs-mirror: ceph_getxattr call always return -61 (ENODATA) in PeerReplayer::synchronizeResolvedJos CollinActions
Actions #1

Updated by Jos Collin 7 months ago

  • Blocks Feature #61334: cephfs-mirror: use snapdiff api for efficient tree traversal added
Actions #2

Updated by Jos Collin 7 months ago

  • Subject changed from cephfs-mirror: ceph_getxattr call always return -61 (ENODATA) in PeerReplayer::synchronize to cephfs-mirror: ceph_getxattr call always return -61 (ENODATA) in PeerReplayer::synchronize
  • Description updated (diff)
  • Status changed from New to In Progress
  • Assignee set to Jos Collin
Actions #3

Updated by Jos Collin 7 months ago

Actions #4

Updated by Jos Collin 7 months ago

  • Status changed from In Progress to Fix Under Review
  • Pull request ID set to 53912
Actions #5

Updated by Jos Collin 7 months ago

  • Description updated (diff)
Actions #6

Updated by Jos Collin 6 months ago

  • Backport set to reef, quincy
Actions #7

Updated by Rishabh Dave 6 months ago

  • Status changed from Fix Under Review to Pending Backport
Actions #8

Updated by Backport Bot 6 months ago

  • Copied to Backport #63474: reef: cephfs-mirror: ceph_getxattr call always return -61 (ENODATA) in PeerReplayer::synchronize added
Actions #9

Updated by Backport Bot 6 months ago

  • Copied to Backport #63475: quincy: cephfs-mirror: ceph_getxattr call always return -61 (ENODATA) in PeerReplayer::synchronize added
Actions #10

Updated by Backport Bot 6 months ago

  • Tags set to backport_processed
Actions #11

Updated by Jos Collin 3 months ago

  • Status changed from Pending Backport to Resolved
Actions

Also available in: Atom PDF