/* We already got it in mdt_handle. But we have to do it again*/
info = lu_context_key_get(req->rq_svc_thread->t_ctx, &mdt_thread_key);
+ LASSERT(info != NULL);
mdt_thread_info_init(info);
if (req->rq_reqmsg->bufcount <= MDS_REQ_INTENT_IT_OFF) {
/* No intent was provided */
- int size = sizeof(struct ldlm_reply);
- rc = lustre_pack_reply(req, 1, &size, NULL);
+ info->mti_rep_buf_size[0] = sizeof(struct ldlm_reply);
+ rc = lustre_pack_reply(req, 1, info->mti_rep_buf_size, NULL);
LASSERT(rc == 0);
+ mdt_thread_info_fini(info);
RETURN(0);
}
lustre_swab_ldlm_intent);
if (it == NULL) {
CERROR("Intent missing\n");
+ mdt_thread_info_fini(info);
RETURN(req->rq_status = -EFAULT);
}
rc = lustre_pack_reply(req, info->mti_rep_buf_nr,
info->mti_rep_buf_size, NULL);
- if (rc)
+ if (rc){
+ mdt_thread_info_fini(info);
RETURN(req->rq_status = rc);
+ }
rep = lustre_msg_buf(req->rq_repmsg, 0, sizeof (*rep));
intent_set_disposition(rep, DISP_IT_EXECD);
/* object operations */
-static int mdt_md_mkdir(struct mdt_thread_info *info)
+static int mdt_md_mkdir(struct mdt_thread_info *info, struct lustre_handle *lockh)
{
struct mdt_device *mdt = info->mti_mdt;
struct mdt_object *parent;
static int mdt_reint_setattr(struct mdt_thread_info *info,
- struct lustre_handle *lh)
+ struct lustre_handle *lockh)
{
ENTRY;
RETURN(-EOPNOTSUPP);
static int mdt_reint_create(struct mdt_thread_info *info,
- struct lustre_handle *lh)
+ struct lustre_handle *lockh)
{
int rc;
ENTRY;
break;
}
case S_IFDIR:{
- rc = mdt_md_mkdir(info);
+ rc = mdt_md_mkdir(info,lockh);
break;
}
case S_IFLNK:{
static int mdt_reint_unlink(struct mdt_thread_info *info,
- struct lustre_handle *lh)
+ struct lustre_handle *lockh)
{
ENTRY;
RETURN(-EOPNOTSUPP);
}
static int mdt_reint_link(struct mdt_thread_info *info,
- struct lustre_handle *lh)
+ struct lustre_handle *lockh)
{
ENTRY;
RETURN(-EOPNOTSUPP);