Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3adf654d authored by Sage Weil's avatar Sage Weil
Browse files

ceph: pass unhandled ceph.* setxattrs through to MDS



If we do not specifically understand a setxattr on a ceph.* virtual
xattr, send it through to the MDS.  This allows us to implement new
functionality via the MDS without direct support on the client side.

Signed-off-by: default avatarSage Weil <sage@inktank.com>
Reviewed-by: default avatarSam Lang <sam.lang@inktank.com>
parent 8860147a
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -777,6 +777,10 @@ int ceph_setxattr(struct dentry *dentry, const char *name,
	if (vxattr && vxattr->readonly)
		return -EOPNOTSUPP;

	/* pass any unhandled ceph.* xattrs through to the MDS */
	if (!strncmp(name, XATTR_CEPH_PREFIX, XATTR_CEPH_PREFIX_LEN))
		goto do_sync_unlocked;

	/* preallocate memory for xattr name, value, index node */
	err = -ENOMEM;
	newname = kmemdup(name, name_len + 1, GFP_NOFS);
@@ -833,6 +837,7 @@ retry:

do_sync:
	spin_unlock(&ci->i_ceph_lock);
do_sync_unlocked:
	err = ceph_sync_setxattr(dentry, name, value, size, flags);
out:
	kfree(newname);