]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: call _getattr() for -ENODATA returned _getvxattr() calls
authorJos Collin <jcollin@redhat.com>
Wed, 18 Oct 2023 12:59:06 +0000 (18:29 +0530)
committerJos Collin <jcollin@redhat.com>
Wed, 8 Nov 2023 02:19:34 +0000 (07:49 +0530)
_getvxattr rpc doesn't handle ceph.mirror.* attributes and always
returns -ENODATA for ceph.mirror.* attributes. This prevents
incremental syncing of snapshots. So let them call _getattr()
and proceed.

Fixes: https://tracker.ceph.com/issues/63099
Signed-off-by: Jos Collin <jcollin@redhat.com>
(cherry picked from commit a36f5ed185cbcd788e36ad22a00cfe9dcdfdfe7f)

src/client/Client.cc

index 47d4ab6b5c34756a28d889b1ae9a6b2ab16ca5c4..ee7e58dd697f32262af50ba515e31cf9e055852f 100644 (file)
@@ -12697,7 +12697,9 @@ int Client::_getxattr(Inode *in, const char *name, void *value, size_t size,
 
   if (!strncmp(name, "ceph.", 5)) {
     r = _getvxattr(in, perms, name, size, value, MDS_RANK_NONE);
-    goto out;
+    if (r != -ENODATA) {
+      goto out;
+    }
   }
 
   if (acl_type == NO_ACL && !strncmp(name, "system.", 7)) {