diff options
author | Sage Weil <sage@redhat.com> | 2015-04-06 08:07:28 -0700 |
---|---|---|
committer | Sage Weil <sage@redhat.com> | 2015-04-06 08:07:28 -0700 |
commit | 97dfde8dc7a64bb44a32ac2966fd71dab5ab45e8 (patch) | |
tree | 101d5fb12e3be983446908dfaae69a9a5616d5fa | |
parent | ad8481b7084cb61bdac5f600b54f3083788c048e (diff) | |
parent | bdc664fb3d2d363ca55b0761c9054294315f054f (diff) | |
download | ceph-97dfde8dc7a64bb44a32ac2966fd71dab5ab45e8.tar.gz |
Merge pull request #4250 from athanatos/wip-11265
ECTransaction: write out the hinfo key on touch as well
Reviewed-by: Sage Weil <sage@redhat.com>
-rw-r--r-- | src/osd/ECTransaction.cc | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/osd/ECTransaction.cc b/src/osd/ECTransaction.cc index 0a2af7d9bd7..e1cf3868dfb 100644 --- a/src/osd/ECTransaction.cc +++ b/src/osd/ECTransaction.cc @@ -28,7 +28,9 @@ struct AppendObjectsGenerator: public boost::static_visitor<void> { void operator()(const ECTransaction::AppendOp &op) { out->insert(op.oid); } - void operator()(const ECTransaction::TouchOp &op) {} + void operator()(const ECTransaction::TouchOp &op) { + out->insert(op.oid); + } void operator()(const ECTransaction::CloneOp &op) { out->insert(op.source); out->insert(op.target); @@ -114,6 +116,20 @@ struct TransGenerator : public boost::static_visitor<void> { i->second.touch( get_coll_ct(i->first, op.oid), ghobject_t(op.oid, ghobject_t::NO_GEN, i->first)); + + /* No change, but write it out anyway in case the object did not + * previously exist. */ + assert(hash_infos.count(op.oid)); + ECUtil::HashInfoRef hinfo = hash_infos[op.oid]; + bufferlist hbuf; + ::encode( + *hinfo, + hbuf); + i->second.setattr( + get_coll_ct(i->first, op.oid), + ghobject_t(op.oid, ghobject_t::NO_GEN, i->first), + ECUtil::get_hinfo_key(), + hbuf); } } void operator()(const ECTransaction::AppendOp &op) { |