From: braam Date: Sat, 19 Oct 2002 22:43:14 +0000 (+0000) Subject: - buffer checks are different for non-intent X-Git-Tag: v1_7_100~4459 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=2dce26d43018873883e320a8eae0200b8c73123f;p=fs%2Flustre-release.git - buffer checks are different for non-intent - remove a it = ->d_it assignment - set the intent at the end of lookup2 --- diff --git a/lustre/lib/mds_updates.c b/lustre/lib/mds_updates.c index b1393bb..6d64cea 100644 --- a/lustre/lib/mds_updates.c +++ b/lustre/lib/mds_updates.c @@ -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); } diff --git a/lustre/llite/dcache.c b/lustre/llite/dcache.c index 5a6b715..0b4f9c6 100644 --- a/lustre/llite/dcache.c +++ b/lustre/llite/dcache.c @@ -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); } diff --git a/lustre/llite/namei.c b/lustre/llite/namei.c index 195a749..ff5c14b 100644 --- a/lustre/llite/namei.c +++ b/lustre/llite/namei.c @@ -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);