+
+ if (!(body->valid & OBD_MD_FLEASIZE))
+ RETURN(0);
+
+ if (body->eadatasize == 0) {
+ CERROR("OBD_MD_FLEASIZE is set but eadatasize is zero\n");
+ RETURN(-EPROTO);
+ }
+
+ lov = lustre_swab_repbuf(req, REPLY_REC_OFF + 1,
+ body->eadatasize, NULL);
+ if (lov == NULL) {
+ CERROR("Can't unpack MDS EA data\n");
+ RETURN(-EPROTO);
+ }
+
+ LASSERT(ma->ma_lmm != NULL);
+ LASSERT(ma->ma_lmm_size >= body->eadatasize);
+ ma->ma_lmm_size = body->eadatasize;
+ memcpy(ma->ma_lmm, lov, ma->ma_lmm_size);
+ ma->ma_valid |= MA_LOV;
+ if (!(body->valid & OBD_MD_FLCOOKIE))
+ RETURN(0);
+
+ if (body->aclsize == 0) {
+ CERROR("OBD_MD_FLCOOKIE is set but cookie size is zero\n");
+ RETURN(-EPROTO);
+ }
+
+ cookie = lustre_msg_buf(req->rq_repmsg,
+ REPLY_REC_OFF + 2, body->aclsize);
+ if (cookie == NULL) {
+ CERROR("Can't unpack unlink cookie data\n");
+ RETURN(-EPROTO);
+ }
+
+ LASSERT(ma->ma_cookie != NULL);
+ LASSERT(ma->ma_cookie_size == body->aclsize);
+ memcpy(ma->ma_cookie, cookie, ma->ma_cookie_size);
+ ma->ma_valid |= MA_COOKIE;
+ RETURN(0);