err = ll_lock(dir, dentry, it, &lockh);
if (err < 0) {
- /* FIXME: Mike handle EINTR here */
+ /* FIXME: Mike LBUG() can disappear the moment that
+ * ll_lock has sane interrupt behavior
+ */
LBUG();
RETURN(ERR_PTR(err));
}
} else
md.md = NULL;
+ /* No rpc's happen during iget4, -ENOMEM's are possible */
inode = iget4(dir->i_sb, ino, ll_find_inode, &md);
-
if (it->it_op & IT_RENAME)
it->it_data = dentry;
out_req:
ptlrpc_free_req(request);
- if (!inode)
+ if (!inode || IS_ERR(inode)) {
+ ll_intent_release(dentry);
RETURN(ERR_PTR(-ENOMEM));
-
+ }
EXIT;
negative:
dentry->d_op = &ll_d_ops;
GOTO(out, rc);
}
+ /* XXX eventually maybe more refinement */
+ osc->osc_conn->c_level = LUSTRE_CONN_FULL;
+
/* XXX: Make this a handle */
osc->osc_connh.addr = request->rq_repmsg->addr;
osc->osc_connh.cookie = request->rq_repmsg->cookie;