if (!dry_run) {
attr.clear();
oi.size = setsize;
- ::encode(oi, attr, -1); /* fixme: using full features */
ObjectStore::Transaction t;
- t.setattr(coll, ghobj, OI_ATTR, attr);
// Only modify object info if we want to corrupt it
- if (!corrupt)
+ if (!corrupt && (uint64_t)st.st_size != setsize) {
t.truncate(coll, ghobj, setsize);
+ // Changing objectstore size will invalidate data_digest, so clear it.
+ oi.clear_data_digest();
+ }
+ ::encode(oi, attr, -1); /* fixme: using full features */
+ t.setattr(coll, ghobj, OI_ATTR, attr);
if (is_snap) {
bufferlist snapattr;
snapattr.clear();