From: Yan, Zheng Date: Fri, 14 Aug 2015 07:21:17 +0000 (+0800) Subject: client: allow specifying default caller_{uid,gid} of MClientRequest X-Git-Tag: v10.0.0~123^2~34 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=74e05c6cfb0e18b189d97258867f0766191bb94f;p=ceph.git client: allow specifying default caller_{uid,gid} of MClientRequest Signed-off-by: Yan, Zheng --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 1b8849ee45d4..9404d8f22233 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -1543,10 +1543,11 @@ int Client::make_request(MetaRequest *request, if (oldest_tid == 0 && request->get_op() != CEPH_MDS_OP_SETFILELOCK)\ oldest_tid = tid; - if (uid < 0) { - uid = geteuid(); - gid = getegid(); - } + if (uid < 0) + uid = user_id >= 0 ? user_id : getuid(); + if (gid < 0) + gid = group_id >= 0 ? group_id : getgid(); + request->set_caller_uid(uid); request->set_caller_gid(gid); @@ -8931,7 +8932,7 @@ int Client::getxattr(const char *path, const char *name, void *value, size_t siz int r = Client::path_walk(path, &in, true); if (r < 0) return r; - return Client::_getxattr(in.get(), name, value, size, getuid(), getgid()); + return Client::_getxattr(in.get(), name, value, size); } int Client::lgetxattr(const char *path, const char *name, void *value, size_t size) @@ -8941,7 +8942,7 @@ int Client::lgetxattr(const char *path, const char *name, void *value, size_t si int r = Client::path_walk(path, &in, false); if (r < 0) return r; - return Client::_getxattr(in.get(), name, value, size, getuid(), getgid()); + return Client::_getxattr(in.get(), name, value, size); } int Client::fgetxattr(int fd, const char *name, void *value, size_t size) @@ -8950,7 +8951,7 @@ int Client::fgetxattr(int fd, const char *name, void *value, size_t size) Fh *f = get_filehandle(fd); if (!f) return -EBADF; - return Client::_getxattr(f->inode.get(), name, value, size, getuid(), getgid()); + return Client::_getxattr(f->inode.get(), name, value, size); } int Client::listxattr(const char *path, char *list, size_t size) @@ -8960,7 +8961,7 @@ int Client::listxattr(const char *path, char *list, size_t size) int r = Client::path_walk(path, &in, true); if (r < 0) return r; - return Client::_listxattr(in.get(), list, size, getuid(), getgid()); + return Client::_listxattr(in.get(), list, size); } int Client::llistxattr(const char *path, char *list, size_t size) @@ -8970,7 +8971,7 @@ int Client::llistxattr(const char *path, char *list, size_t size) int r = Client::path_walk(path, &in, false); if (r < 0) return r; - return Client::_listxattr(in.get(), list, size, getuid(), getgid()); + return Client::_listxattr(in.get(), list, size); } int Client::flistxattr(int fd, char *list, size_t size) @@ -8979,7 +8980,7 @@ int Client::flistxattr(int fd, char *list, size_t size) Fh *f = get_filehandle(fd); if (!f) return -EBADF; - return Client::_listxattr(f->inode.get(), list, size, getuid(), getgid()); + return Client::_listxattr(f->inode.get(), list, size); } int Client::removexattr(const char *path, const char *name) @@ -8989,7 +8990,7 @@ int Client::removexattr(const char *path, const char *name) int r = Client::path_walk(path, &in, true); if (r < 0) return r; - return Client::_removexattr(in.get(), name, getuid(), getgid()); + return Client::_removexattr(in.get(), name); } int Client::lremovexattr(const char *path, const char *name) @@ -8999,7 +9000,7 @@ int Client::lremovexattr(const char *path, const char *name) int r = Client::path_walk(path, &in, false); if (r < 0) return r; - return Client::_removexattr(in.get(), name, getuid(), getgid()); + return Client::_removexattr(in.get(), name); } int Client::fremovexattr(int fd, const char *name) @@ -9008,7 +9009,7 @@ int Client::fremovexattr(int fd, const char *name) Fh *f = get_filehandle(fd); if (!f) return -EBADF; - return Client::_removexattr(f->inode.get(), name, getuid(), getgid()); + return Client::_removexattr(f->inode.get(), name); } int Client::setxattr(const char *path, const char *name, const void *value, size_t size, int flags) @@ -9018,7 +9019,7 @@ int Client::setxattr(const char *path, const char *name, const void *value, size int r = Client::path_walk(path, &in, true); if (r < 0) return r; - return Client::_setxattr(in.get(), name, value, size, flags, getuid(), getgid()); + return Client::_setxattr(in.get(), name, value, size, flags); } int Client::lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags) @@ -9028,7 +9029,7 @@ int Client::lsetxattr(const char *path, const char *name, const void *value, siz int r = Client::path_walk(path, &in, false); if (r < 0) return r; - return Client::_setxattr(in.get(), name, value, size, flags, getuid(), getgid()); + return Client::_setxattr(in.get(), name, value, size, flags); } int Client::fsetxattr(int fd, const char *name, const void *value, size_t size, int flags) @@ -9037,7 +9038,7 @@ int Client::fsetxattr(int fd, const char *name, const void *value, size_t size, Fh *f = get_filehandle(fd); if (!f) return -EBADF; - return Client::_setxattr(f->inode.get(), name, value, size, flags, getuid(), getgid()); + return Client::_setxattr(f->inode.get(), name, value, size, flags); } int Client::_getxattr(Inode *in, const char *name, void *value, size_t size,