From: David Zafman Date: Fri, 10 Nov 2017 00:11:14 +0000 (-0800) Subject: ceph-objectstore-tool: Fix set-size to clear data_digest if changing disk size X-Git-Tag: v13.0.1~218^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F18885%2Fhead;p=ceph.git ceph-objectstore-tool: Fix set-size to clear data_digest if changing disk size Signed-off-by: David Zafman --- diff --git a/src/tools/ceph_objectstore_tool.cc b/src/tools/ceph_objectstore_tool.cc index 754827e2346..afd75e3d06a 100644 --- a/src/tools/ceph_objectstore_tool.cc +++ b/src/tools/ceph_objectstore_tool.cc @@ -2133,12 +2133,15 @@ int set_size(ObjectStore *store, coll_t coll, ghobject_t &ghobj, uint64_t setsiz 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();