* 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;
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);
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);
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;
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;
}
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);
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;
}