CDEBUG(D_OTHER, "get mea for "DLID4" and create lmv obj\n",
OLID4(id));
- if (!mea) {
- unsigned long valid;
+ md.mea = NULL;
+
+ if (mea == NULL) {
+ __u64 valid;
CDEBUG(D_OTHER, "mea isn't passed in, get it now\n");
mealen = MEA_SIZE_LMV(lmv);
/* time to update mea of parent id */
md.mea = NULL;
- valid = OBD_MD_FLEASIZE | OBD_MD_FLDIREA;
+ valid = OBD_MD_FLEASIZE | OBD_MD_FLDIREA | OBD_MD_MEA;
rc = md_getattr(lmv->tgts[id_group(id)].ltd_exp,
- id, valid, mealen, &req);
+ id, valid, NULL, 0, mealen, &req);
if (rc) {
CERROR("md_getattr() failed, error %d\n", rc);
GOTO(cleanup, obj = ERR_PTR(rc));
GOTO(cleanup, obj = ERR_PTR(rc));
}
- if (!md.mea)
+ if (md.mea == NULL)
GOTO(cleanup, obj = ERR_PTR(-ENODATA));
mea = md.mea;
OLID4(id));
GOTO(cleanup, obj = ERR_PTR(-ENOMEM));
}
- EXIT;
+
+ if (md.mea != NULL)
+ obd_free_memmd(exp, (struct lov_stripe_md **)&md.mea);
+
+ EXIT;
cleanup:
if (req)
ptlrpc_req_finished(req);