diff options
Diffstat (limited to 'fs/ceph')
-rw-r--r-- | fs/ceph/xattr.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c index edc47de77fed..234270f00c2a 100644 --- a/fs/ceph/xattr.c +++ b/fs/ceph/xattr.c | |||
@@ -892,6 +892,10 @@ int ceph_removexattr(struct dentry *dentry, const char *name) | |||
892 | if (vxattr && vxattr->readonly) | 892 | if (vxattr && vxattr->readonly) |
893 | return -EOPNOTSUPP; | 893 | return -EOPNOTSUPP; |
894 | 894 | ||
895 | /* pass any unhandled ceph.* xattrs through to the MDS */ | ||
896 | if (!strncmp(name, XATTR_CEPH_PREFIX, XATTR_CEPH_PREFIX_LEN)) | ||
897 | goto do_sync_unlocked; | ||
898 | |||
895 | err = -ENOMEM; | 899 | err = -ENOMEM; |
896 | spin_lock(&ci->i_ceph_lock); | 900 | spin_lock(&ci->i_ceph_lock); |
897 | retry: | 901 | retry: |
@@ -931,6 +935,7 @@ retry: | |||
931 | return err; | 935 | return err; |
932 | do_sync: | 936 | do_sync: |
933 | spin_unlock(&ci->i_ceph_lock); | 937 | spin_unlock(&ci->i_ceph_lock); |
938 | do_sync_unlocked: | ||
934 | err = ceph_send_removexattr(dentry, name); | 939 | err = ceph_send_removexattr(dentry, name); |
935 | out: | 940 | out: |
936 | return err; | 941 | return err; |