}
if (in->caps_issued_mask(CEPH_CAP_AUTH_EXCL)) {
- bool kill_sguid = mask & CEPH_SETATTR_KILL_SGUID;
+ bool kill_sguid = mask & (CEPH_SETATTR_SIZE|CEPH_SETATTR_KILL_SGUID);
mask &= ~CEPH_SETATTR_KILL_SGUID;
mask &= ~CEPH_SETATTR_BTIME;
ldout(cct,10) << "changing btime to " << in->btime << dendl;
}
+ } else if (mask & CEPH_SETATTR_SIZE) {
+ /* If we don't have Ax, then we must ask the server to clear them on truncate */
+ mask |= CEPH_SETATTR_KILL_SGUID;
}
+
if (in->caps_issued_mask(CEPH_CAP_FILE_EXCL)) {
if (mask & (CEPH_SETATTR_MTIME|CEPH_SETATTR_ATIME)) {
if (mask & CEPH_SETATTR_MTIME)