From 13babca354d9fbe255de8bae9608a0c158bf6c40 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 18 Jan 2013 17:21:37 -0800 Subject: [PATCH] client: move xattr namespace enforcement into internal method This captures libcephfs users now too. Signed-off-by: Sage Weil (cherry picked from commit febb96509559084357bfaabf7e4d28e494c274aa) --- src/client/Client.cc | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index 742ca837092f7..c682afb7d4f65 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -6469,6 +6469,13 @@ int Client::_setxattr(Inode *in, const char *name, const void *value, size_t siz return -EROFS; } + // same xattrs supported by kernel client + if (strncmp(name, "user.", 5) && + strncmp(name, "security.", 9) && + strncmp(name, "trusted.", 8) && + strncmp(name, "ceph.", 5)) + return -EOPNOTSUPP; + MetaRequest *req = new MetaRequest(CEPH_MDS_OP_SETXATTR); filepath path; in->make_nosnap_relative_path(path); @@ -6497,13 +6504,6 @@ int Client::ll_setxattr(vinodeno_t vino, const char *name, const void *value, si tout(cct) << vino.ino.val << std::endl; tout(cct) << name << std::endl; - // same xattrs supported by kernel client - if (strncmp(name, "user.", 5) && - strncmp(name, "security.", 9) && - strncmp(name, "trusted.", 8) && - strncmp(name, "ceph.", 5)) - return -EOPNOTSUPP; - Inode *in = _ll_get_inode(vino); return _setxattr(in, name, value, size, flags, uid, gid); } @@ -6514,6 +6514,13 @@ int Client::_removexattr(Inode *in, const char *name, int uid, int gid) return -EROFS; } + // same xattrs supported by kernel client + if (strncmp(name, "user.", 5) && + strncmp(name, "security.", 9) && + strncmp(name, "trusted.", 8) && + strncmp(name, "ceph.", 5)) + return -EOPNOTSUPP; + MetaRequest *req = new MetaRequest(CEPH_MDS_OP_RMXATTR); filepath path; in->make_nosnap_relative_path(path); @@ -6537,13 +6544,6 @@ int Client::ll_removexattr(vinodeno_t vino, const char *name, int uid, int gid) tout(cct) << vino.ino.val << std::endl; tout(cct) << name << std::endl; - // same xattrs supported by kernel client - if (strncmp(name, "user.", 5) && - strncmp(name, "security.", 9) && - strncmp(name, "trusted.", 8) && - strncmp(name, "ceph.", 5)) - return -EOPNOTSUPP; - Inode *in = _ll_get_inode(vino); return _removexattr(in, name, uid, gid); } -- 2.39.5