tgt = it->it_data;
tgtlen = strlen(tgt);
it->it_data = NULL;
- } else if (it->it_op & IT_LOOKUP) {
+ } else if (it->it_op & IT_LOOKUP)
lock_mode = LCK_CR;
- } else {
+ else {
LBUG();
RETURN(-EINVAL);
}
int err, rc = 0;
struct obdo oa;
struct inode *inode;
- struct lov_stripe_md *smd;
+ struct lov_stripe_md *smd = NULL;
struct ll_inode_info *ii = NULL;
ENTRY;
rc = PTR_ERR(inode);
CERROR("error creating MDS object for id %Ld: rc = %d\n",
(unsigned long long)oa.o_id, rc);
-#warning FIXME: 'ii' needs to be set before this goto
GOTO(out_destroy, rc);
}
RETURN(rc);
out_destroy:
- oa.o_easize = ii->lli_smd->lmd_easize;
- err = obd_destroy(ll_i2obdconn(dir), &oa, ii->lli_smd);
- if (err)
- CERROR("error destroying object %Ld in error path: err = %d\n",
+#warning AED: verify that smd is set here
+ if (smd) {
+ oa.o_easize = smd->lmd_easize;
+ err = obd_destroy(ll_i2obdconn(dir), &oa, smd);
+ if (err)
+ CERROR("error destroying objid %Ld on error: err %d\n",
(unsigned long long)oa.o_id, err);
+ }
+
return rc;
}
RETURN(PTR_ERR(inode));
/* no directory data updates when intents rule */
- if (dentry->d_it->it_disposition == 0)
- err = ext2_add_nondir(dentry, inode);
- else
+ if (dentry->d_it && dentry->d_it->it_disposition)
d_instantiate(dentry, inode);
+ else
+ err = ext2_add_nondir(dentry, inode);
return err;
}
unsigned l = strlen(symname);
struct inode *inode;
struct ll_inode_info *oinfo;
- int err;
-
- if (dentry->d_it && dentry->d_it->it_disposition) {
- err = dentry->d_it->it_status;
- inode = dentry->d_inode;
- } else {
- inode = ll_create_node(dir, dentry->d_name.name,
- dentry->d_name.len, symname, l,
- S_IFLNK | S_IRWXUGO, 0, dentry->d_it,
- NULL);
- if (IS_ERR(inode))
- RETURN(PTR_ERR(inode));
-
- err = ext2_add_nondir(dentry, inode);
- }
+ int err = 0;
- if (err)
- GOTO(out, err);
+ inode = ll_create_node(dir, dentry->d_name.name, dentry->d_name.len,
+ symname, l, S_IFLNK | S_IRWXUGO, 0,
+ dentry->d_it, NULL);
+ if (IS_ERR(inode))
+ RETURN(PTR_ERR(inode));
oinfo = ll_i2info(inode);
memcpy(oinfo->lli_symlink_name, symname, l + 1);
inode->i_size = l;
-out:
+ /* no directory data updates when intents rule */
+ if (dentry->d_it && dentry->d_it->it_disposition)
+ d_instantiate(dentry, inode);
+ else
+ err = ext2_add_nondir(dentry, inode);
+
return err;
}