summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Just <sam.just@inktank.com>2013-09-24 13:19:17 -0700
committerSamuel Just <sam.just@inktank.com>2013-09-24 13:19:20 -0700
commitaec5b7b766e1d150d872913e4ac08ddad5132f47 (patch)
treea41ea495dbf47d97aa855729b167ddb33c1e4e22
parentebf8f52d92c11513e6144236d37893d498e71d8c (diff)
downloadceph-wip-5857-8.tar.gz
ReplicatedPG: we need to update recovery_info in on_local_recoverwip-5857-8
For lost_unfound. Signed-off-by: Samuel Just <sam.just@inktank.com>
-rw-r--r--src/osd/PGBackend.h7
-rw-r--r--src/osd/ReplicatedPG.cc3
-rw-r--r--src/osd/ReplicatedPG.h2
3 files changed, 8 insertions, 4 deletions
diff --git a/src/osd/PGBackend.h b/src/osd/PGBackend.h
index e3cc05bf345..64b018cd129 100644
--- a/src/osd/PGBackend.h
+++ b/src/osd/PGBackend.h
@@ -46,13 +46,18 @@
virtual void on_local_recover_start(
const hobject_t &oid,
ObjectStore::Transaction *t) = 0;
+
/**
* Called with the transaction recovering oid
+ *
+ * FIXME: recovery_info is a mutable reference because in the
+ * lost_unfound case, we need to adjust the version of the object
+ * which we intend to push to the replicas. This is not ideal.
*/
virtual void on_local_recover(
const hobject_t &oid,
const object_stat_sum_t &stat_diff,
- const ObjectRecoveryInfo &recovery_info,
+ ObjectRecoveryInfo &recovery_info,
ObjectContextRef obc,
ObjectStore::Transaction *t
) = 0;
diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc
index 4f045e58f1d..07ea4d7291e 100644
--- a/src/osd/ReplicatedPG.cc
+++ b/src/osd/ReplicatedPG.cc
@@ -116,12 +116,11 @@ void ReplicatedPG::on_local_recover_start(
void ReplicatedPG::on_local_recover(
const hobject_t &hoid,
const object_stat_sum_t &stat_diff,
- const ObjectRecoveryInfo &_recovery_info,
+ ObjectRecoveryInfo &recovery_info,
ObjectContextRef obc,
ObjectStore::Transaction *t
)
{
- ObjectRecoveryInfo recovery_info(_recovery_info);
if (recovery_info.soid.snap < CEPH_NOSNAP) {
assert(recovery_info.oi.snaps.size());
OSDriver::OSTransaction _t(osdriver.get_transaction(t));
diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h
index a4e5ac1e1a1..d39003f93ef 100644
--- a/src/osd/ReplicatedPG.h
+++ b/src/osd/ReplicatedPG.h
@@ -134,7 +134,7 @@ public:
void on_local_recover(
const hobject_t &oid,
const object_stat_sum_t &stat_diff,
- const ObjectRecoveryInfo &recovery_info,
+ ObjectRecoveryInfo &recovery_info,
ObjectContextRef obc,
ObjectStore::Transaction *t
);