Merge tag 'io_uring-5.15-2021-09-11' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / fs / ceph / xattr.c
index 1242db8..159a1ff 100644 (file)
@@ -340,6 +340,18 @@ static ssize_t ceph_vxattrcb_caps(struct ceph_inode_info *ci, char *val,
                              ceph_cap_string(issued), issued);
 }
 
+static ssize_t ceph_vxattrcb_auth_mds(struct ceph_inode_info *ci,
+                                      char *val, size_t size)
+{
+       int ret;
+
+       spin_lock(&ci->i_ceph_lock);
+       ret = ceph_fmt_xattr(val, size, "%d",
+                            ci->i_auth_cap ? ci->i_auth_cap->session->s_mds : -1);
+       spin_unlock(&ci->i_ceph_lock);
+       return ret;
+}
+
 #define CEPH_XATTR_NAME(_type, _name)  XATTR_CEPH_PREFIX #_type "." #_name
 #define CEPH_XATTR_NAME2(_type, _name, _name2) \
        XATTR_CEPH_PREFIX #_type "." #_name "." #_name2
@@ -473,6 +485,13 @@ static struct ceph_vxattr ceph_common_vxattrs[] = {
                .exists_cb = NULL,
                .flags = VXATTR_FLAG_READONLY,
        },
+       {
+               .name = "ceph.auth_mds",
+               .name_size = sizeof("ceph.auth_mds"),
+               .getxattr_cb = ceph_vxattrcb_auth_mds,
+               .exists_cb = NULL,
+               .flags = VXATTR_FLAG_READONLY,
+       },
        { .name = NULL, 0 }     /* Required table terminator */
 };