Whamcloud - gitweb
- lookup2: drop a lock in an unlikely error case; clarify interrupt
authorbraam <braam>
Sun, 14 Jul 2002 17:26:49 +0000 (17:26 +0000)
committerbraam <braam>
Sun, 14 Jul 2002 17:26:49 +0000 (17:26 +0000)
  handling in lookup2
- osc_request.c: bring connection level to full after connect
- mds_reint.c: in unlink, don't cancel locks that you don't have for
  negative dentries (bug fix).

lustre/llite/namei.c
lustre/osc/osc_request.c

index 30dac44..3760033 100644 (file)
@@ -155,7 +155,9 @@ static struct dentry *ll_lookup2(struct inode * dir, struct dentry *dentry,
 
         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));
         }
@@ -200,16 +202,17 @@ static struct dentry *ll_lookup2(struct inode * dir, struct dentry *dentry,
         } 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;
index a65f2cf..89f981f 100644 (file)
@@ -74,6 +74,9 @@ static int osc_connect(struct lustre_handle *conn, struct obd_device *obd)
                 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;