<< " got_ino " << got_created_ino
<< " ino " << created_ino
<< dendl;
- r = _do_lookup(d->dir->parent_inode, d->name, &target, uid, gid);
+ r = _do_lookup(d->dir->parent_inode, d->name, request->regetattr_mask, &target, uid, gid);
} else {
// if the dentry is not linked, just do our best. see #5021.
assert(0 == "how did this happen? i want logs!");
// ===============================================================
// high level (POSIXy) interface
-int Client::_do_lookup(Inode *dir, const string& name, InodeRef *target,
+int Client::_do_lookup(Inode *dir, const string& name, int mask, InodeRef *target,
int uid, int gid)
{
int op = dir->snapid == CEPH_SNAPDIR ? CEPH_MDS_OP_LOOKUPSNAP : CEPH_MDS_OP_LOOKUP;
req->set_filepath(path);
req->set_inode(dir);
if (cct->_conf->client_debug_getattr_caps && op == CEPH_MDS_OP_LOOKUP)
- req->head.args.getattr.mask = DEBUG_GETATTR_CAPS;
- else
- req->head.args.getattr.mask = 0;
+ mask |= DEBUG_GETATTR_CAPS;
+ req->head.args.getattr.mask = mask;
ldout(cct, 10) << "_do_lookup on " << path << dendl;
}
}
- r = _do_lookup(dir, dname, target, uid, gid);
+ r = _do_lookup(dir, dname, 0, target, uid, gid);
goto done;
hit_dn:
// internal interface
// call these with client_lock held!
- int _do_lookup(Inode *dir, const string& name, InodeRef *target, int uid, int gid);
+ int _do_lookup(Inode *dir, const string& name, int mask, InodeRef *target, int uid, int gid);
int _lookup(Inode *dir, const string& dname, InodeRef *target, int uid, int gid);
int _link(Inode *in, Inode *dir, const char *name, int uid=-1, int gid=-1, InodeRef *inp = 0);