- /* LU-10048: disable synchronous chgrp operation for it will
- * cause deadlock between MDT and OST.
- la_copy->la_valid |= LA_FLAGS;
- la_copy->la_flags |= LUSTRE_SET_SYNC_FL;
- */
+ CDEBUG(D_QUOTA, "%s: reserve quota for changing group: gid=%u size=%llu\n",
+ mdd2obd_dev(mdd)->obd_name, la->la_gid, la->la_size);
+
+ if (la->la_valid & LA_BLOCKS)
+ qi.lqi_space = la->la_blocks << 9;
+ else if (la->la_valid & LA_SIZE)
+ qi.lqi_space = la->la_size;
+ /* use local attr gotten above */
+ else if (attr->la_valid & LA_BLOCKS)
+ qi.lqi_space = attr->la_blocks << 9;
+ else if (attr->la_valid & LA_SIZE)
+ qi.lqi_space = attr->la_size;
+
+ if (qi.lqi_space > 0) {
+ qi.lqi_id.qid_gid = la->la_gid;
+ qi.lqi_type = GRPQUOTA;
+ qi.lqi_space = toqb(qi.lqi_space);
+ qi.lqi_is_blk = true;
+ rc = dt_reserve_or_free_quota(env, mdd->mdd_bottom,
+ &qi);
+
+ if (rc) {
+ CDEBUG(D_QUOTA, "%s: failed to reserve quota for gid %d size %llu\n",
+ mdd2obd_dev(mdd)->obd_name,
+ la->la_gid, qi.lqi_space);
+
+ GOTO(out, rc);
+ }
+
+ quota_reserved = true;
+ la_copy->la_valid |= LA_FLAGS;
+ }
+