summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@redhat.com>2015-04-06 08:07:28 -0700
committerSage Weil <sage@redhat.com>2015-04-06 08:07:28 -0700
commit97dfde8dc7a64bb44a32ac2966fd71dab5ab45e8 (patch)
tree101d5fb12e3be983446908dfaae69a9a5616d5fa
parentad8481b7084cb61bdac5f600b54f3083788c048e (diff)
parentbdc664fb3d2d363ca55b0761c9054294315f054f (diff)
downloadceph-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.cc18
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) {