Whamcloud - gitweb
- buffer checks are different for non-intent
authorbraam <braam>
Sat, 19 Oct 2002 22:43:14 +0000 (22:43 +0000)
committerbraam <braam>
Sat, 19 Oct 2002 22:43:14 +0000 (22:43 +0000)
- remove a it = ->d_it assignment
- set the intent at the end of lookup2

lustre/lib/mds_updates.c
lustre/llite/dcache.c
lustre/llite/namei.c

index b1393bb..6d64cea 100644 (file)
@@ -325,7 +325,7 @@ static int mds_create_unpack(struct ptlrpc_request *req, int offset,
         struct mds_rec_create *rec = lustre_msg_buf(req->rq_reqmsg, offset);
         ENTRY;
 
-        if (req->rq_reqmsg->bufcount != offset + 3 ||
+        if (req->rq_reqmsg->bufcount < offset + 2 ||
             req->rq_reqmsg->buflens[offset] != sizeof(*rec))
                 RETURN(-EFAULT);
 
@@ -341,8 +341,13 @@ static int mds_create_unpack(struct ptlrpc_request *req, int offset,
         r->ur_name = lustre_msg_buf(req->rq_reqmsg, offset + 1);
         r->ur_namelen = req->rq_reqmsg->buflens[offset + 1];
 
-        r->ur_tgt = lustre_msg_buf(req->rq_reqmsg, offset + 2);
-        r->ur_tgtlen = req->rq_reqmsg->buflens[offset + 2];
+        if (req->rq_reqmsg->bufcount == offset + 3) { 
+                r->ur_tgt = lustre_msg_buf(req->rq_reqmsg, offset + 2);
+                r->ur_tgtlen = req->rq_reqmsg->buflens[offset + 2];
+        } else { 
+                r->ur_tgt = NULL;
+                r->ur_tgtlen = 0;
+        }
         RETURN(0);
 }
 
index 5a6b715..0b4f9c6 100644 (file)
@@ -124,7 +124,7 @@ int ll_revalidate2(struct dentry *de, int flags, struct lookup_intent *it)
                 ll_set_dd(de);
         }
         //down(&ll_d2d(de)->lld_it_sem);
-        // de->d_it = it;
+        de->d_it = it;
 
         RETURN(rc);
 }
index 195a749..ff5c14b 100644 (file)
@@ -290,9 +290,10 @@ static struct dentry *ll_lookup2(struct inode *dir, struct dentry *dentry,
  negative:
         dentry->d_op = &ll_d_ops;
         if (ll_d2d(dentry) == NULL) {
-                CERROR("allocating fsdata\n");
                 ll_set_dd(dentry);
-        }
+        } else
+                CERROR("NOT allocating fsdata - already set\n");
+
         d_add(dentry, inode);
 
         if (it->it_status == 0) {
@@ -607,9 +608,6 @@ static int ll_mkdir(struct inode *dir, struct dentry *dentry, int mode)
                 goto out;
 
         ext2_inc_count(dir);
-
-        it = dentry->d_it;
-
         inode = ll_create_node(dir, dentry->d_name.name, dentry->d_name.len,
                                NULL, 0, S_IFDIR | mode, 0, it, NULL);
         err = PTR_ERR(inode);