Project

General

Profile

Bug #63099

Updated by Jos Collin 7 months ago

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). -CEPHFS_ENODATA. 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.

Back