Whamcloud - gitweb
- warn if HMAC's don't match
[fs/lustre-release.git] / lustre / mdc / mdc_reint.c
index 88ec501..09d915f 100644 (file)
@@ -71,13 +71,15 @@ static int mdc_reint(struct ptlrpc_request *request,
  * setattr portal. */
 int mdc_setattr(struct obd_export *exp, struct mdc_op_data *data,
                 struct iattr *iattr, void *ea, int ealen, void *ea2,
-                int ea2len, struct ptlrpc_request **request)
+                int ea2len, void *ea3, int ea3len, 
+                struct ptlrpc_request **request)
 {
         struct ptlrpc_request *req;
         struct mds_rec_setattr *rec;
         struct mdc_rpc_lock *rpc_lock;
         struct obd_device *obd = exp->exp_obd;
-        int rc, bufcount = 2, size[4] = {0, sizeof(*rec), ealen, ea2len};
+        int rc, bufcount = 2, size[5] = {0, sizeof(*rec), ealen, ea2len, 
+                                         ea3len};
         ENTRY;
 
         LASSERT(iattr != NULL);
@@ -87,6 +89,8 @@ int mdc_setattr(struct obd_export *exp, struct mdc_op_data *data,
                 bufcount++;
                 if (ea2len > 0)
                         bufcount++;
+                if (ea3len > 0)
+                        bufcount++;
         }
 
         req = ptlrpc_prep_req(class_exp2cliimp(exp), LUSTRE_MDS_VERSION,
@@ -107,7 +111,7 @@ int mdc_setattr(struct obd_export *exp, struct mdc_op_data *data,
                 CDEBUG(D_INODE, "setting mtime %lu, ctime %lu\n",
                        LTIME_S(iattr->ia_mtime), LTIME_S(iattr->ia_ctime));
         mdc_setattr_pack(req->rq_reqmsg, 1, data, iattr, ea, ealen,
-                         ea2, ea2len);
+                         ea2, ea2len, ea3, ea3len);
 
         /* prepare the reply buffer
          */
@@ -118,6 +122,8 @@ int mdc_setattr(struct obd_export *exp, struct mdc_op_data *data,
         if (ealen == sizeof(XATTR_NAME_LUSTRE_ACL) &&
             !strncmp((char *) ea, XATTR_NAME_LUSTRE_ACL, ealen)) {
                 size[bufcount++] = LUSTRE_ACL_SIZE_MAX;
+        } else if (iattr->ia_valid & ATTR_SIZE) {
+                size[bufcount++] = sizeof(struct lustre_capa);
         }
 
         req->rq_replen = lustre_msg_size(bufcount, size);