return r;
}
-int Client::ll_walk(const char* name, Inode **out, struct stat *attr)
+int Client::ll_walk(const char* name, Inode **out, struct stat *attr,
+ const UserPerm& perms)
{
Mutex::Locker lock(client_lock);
filepath fp(name, 0);
tout(cct) << "ll_walk" << std::endl;
tout(cct) << name << std::endl;
- rc = path_walk(fp, &in, false);
+ rc = path_walk(fp, &in, perms, false);
if (rc < 0) {
attr->st_ino = 0;
*out = NULL;
int ll_commit_blocks(Inode *in, uint64_t offset, uint64_t length);
int ll_statfs(Inode *in, struct statvfs *stbuf, const UserPerm& perms);
- int ll_walk(const char* name, Inode **i, struct stat *attr); // XXX in?
+ int ll_walk(const char* name, Inode **i, struct stat *attr,
+ const UserPerm& perms); // XXX in?
uint32_t ll_stripe_unit(Inode *in);
int ll_file_layout(Inode *in, file_layout_t *layout);
uint64_t ll_snap_seq(Inode *in);
struct Inode **i,
struct stat *attr)
{
- return(cmount->get_client()->ll_walk(name, i, attr));
+ UserPerm perms = cmount->get_client()->pick_my_perms();
+ return (cmount->get_client()->ll_walk(name, i, attr, perms));
}
extern "C" int ceph_ll_getattr(class ceph_mount_info *cmount,