return -ENOTCONN;
// Num1: get inode and *inode
- int r = _lookup_ino(ino, perms, inode);
- if (r)
- return r;
-
- ceph_assert(*inode != NULL);
-
- if (!(*inode)->dentries.empty()) {
- ldout(cct, 8) << __func__ << " dentry already present" << dendl;
- return 0;
- }
-
- if ((*inode)->is_root()) {
- ldout(cct, 8) << "ino is root, no parent" << dendl;
- return 0;
- }
-
- // Num2: Request the parent inode, so that we can look up the name
- Inode *parent;
- r = _lookup_parent(*inode, perms, &parent);
- if (r) {
- _ll_forget(*inode, 1);
- return r;
- }
-
- ceph_assert(parent != NULL);
-
- // Num3: Finally, get the name (dentry) of the requested inode
- r = _lookup_name(*inode, parent, perms);
- if (r) {
- // Unexpected error
- _ll_forget(parent, 1);
- _ll_forget(*inode, 1);
- return r;
- }
-
- _ll_forget(parent, 1);
- return 0;
+ return _lookup_ino(ino, perms, inode);
}
int Client::ll_lookupx(Inode *parent, const char *name, Inode **out,