From: Jos Collin Date: Wed, 18 Oct 2023 12:59:06 +0000 (+0530) Subject: client: call _getattr() for -ENODATA returned _getvxattr() calls X-Git-Tag: v17.2.8~619^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=146110820cf35fb0d9c85b31ccd7d39634d64dbd;p=ceph.git client: call _getattr() for -ENODATA returned _getvxattr() calls _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 (cherry picked from commit a36f5ed185cbcd788e36ad22a00cfe9dcdfdfe7f) --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 47d4ab6b5c34..ee7e58dd697f 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -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)) {