- remove a it = ->d_it assignment
- set the intent at the end of lookup2
struct mds_rec_create *rec = lustre_msg_buf(req->rq_reqmsg, offset);
ENTRY;
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);
req->rq_reqmsg->buflens[offset] != sizeof(*rec))
RETURN(-EFAULT);
r->ur_name = lustre_msg_buf(req->rq_reqmsg, offset + 1);
r->ur_namelen = req->rq_reqmsg->buflens[offset + 1];
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;
+ }
ll_set_dd(de);
}
//down(&ll_d2d(de)->lld_it_sem);
ll_set_dd(de);
}
//down(&ll_d2d(de)->lld_it_sem);
negative:
dentry->d_op = &ll_d_ops;
if (ll_d2d(dentry) == NULL) {
negative:
dentry->d_op = &ll_d_ops;
if (ll_d2d(dentry) == NULL) {
- CERROR("allocating fsdata\n");
+ } else
+ CERROR("NOT allocating fsdata - already set\n");
+
d_add(dentry, inode);
if (it->it_status == 0) {
d_add(dentry, inode);
if (it->it_status == 0) {
goto out;
ext2_inc_count(dir);
goto out;
ext2_inc_count(dir);
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);
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);