From: Greg Farnum Date: Sat, 30 Jul 2016 02:02:56 +0000 (-0700) Subject: client: pass UserPerm to lookup_ino() X-Git-Tag: v11.0.1~36^2~52 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=193fb0af4ac5844176e28df9e2561141f1e15417;p=ceph.git client: pass UserPerm to lookup_ino() Signed-off-by: Greg Farnum --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 5219cb60c9f4..5f441fb4c47b 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -7606,7 +7606,7 @@ int Client::lookup_hash(inodeno_t ino, inodeno_t dirino, const char *name, * the resulting Inode object in one operation, so that caller * can safely assume inode will still be there after return. */ -int Client::lookup_ino(inodeno_t ino, Inode **inode) +int Client::lookup_ino(inodeno_t ino, const UserPerm& perms, Inode **inode) { Mutex::Locker lock(client_lock); ldout(cct, 3) << "lookup_ino enter(" << ino << ") = " << dendl; @@ -7615,7 +7615,6 @@ int Client::lookup_ino(inodeno_t ino, Inode **inode) filepath path(ino); req->set_filepath(path); - UserPerm perms(get_uid(), get_gid()); // FIXME int r = make_request(req, perms, NULL, NULL, rand() % mdsmap->get_num_in_mds()); if (r == 0 && inode != NULL) { vinodeno_t vino(ino, CEPH_NOSNAP); diff --git a/src/client/Client.h b/src/client/Client.h index 96dda3d30af2..bf0e51cbdf37 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -1123,7 +1123,7 @@ public: int open(const char *path, int flags, mode_t mode, int stripe_unit, int stripe_count, int object_size, const char *data_pool); int lookup_hash(inodeno_t ino, inodeno_t dirino, const char *name, const UserPerm& perms); - int lookup_ino(inodeno_t ino, Inode **inode=NULL); + int lookup_ino(inodeno_t ino, const UserPerm& perms, Inode **inode=NULL); int lookup_parent(Inode *in, Inode **parent=NULL); int lookup_name(Inode *in, Inode *parent); int close(int fd); diff --git a/src/client/SyntheticClient.cc b/src/client/SyntheticClient.cc index 434418193de5..f525b95efd83 100644 --- a/src/client/SyntheticClient.cc +++ b/src/client/SyntheticClient.cc @@ -887,7 +887,7 @@ int SyntheticClient::run() string iname = get_sarg(0); sscanf(iname.c_str(), "%llx", (long long unsigned*)&ino.val); if (run_me()) { - lookup_ino(ino); + lookup_ino(ino, perms); } } break; @@ -3344,9 +3344,9 @@ int SyntheticClient::lookup_hash(inodeno_t ino, inodeno_t dirino, return r; } -int SyntheticClient::lookup_ino(inodeno_t ino) +int SyntheticClient::lookup_ino(inodeno_t ino, const UserPerm& perms) { - int r = client->lookup_ino(ino); + int r = client->lookup_ino(ino, perms); dout(0) << "lookup_ino(" << ino << ") = " << r << dendl; return r; } diff --git a/src/client/SyntheticClient.h b/src/client/SyntheticClient.h index dadbbd08df74..755f5e0ef093 100644 --- a/src/client/SyntheticClient.h +++ b/src/client/SyntheticClient.h @@ -267,7 +267,7 @@ class SyntheticClient { int lookup_hash(inodeno_t ino, inodeno_t dirino, const char *name, const UserPerm& perms); - int lookup_ino(inodeno_t ino); + int lookup_ino(inodeno_t ino, const UserPerm& perms); int chunk_file(string &filename); diff --git a/src/libcephfs.cc b/src/libcephfs.cc index 527ba44672e2..12a5d9ed0341 100644 --- a/src/libcephfs.cc +++ b/src/libcephfs.cc @@ -1373,7 +1373,8 @@ extern "C" int ceph_ll_lookup_inode( struct inodeno_t ino, Inode **inode) { - int r = (cmount->get_client())->lookup_ino(ino, inode); + UserPerm perms = cmount->get_client()->pick_my_perms(); + int r = (cmount->get_client())->lookup_ino(ino, perms, inode); if (r) { return r; }