From aec5b7b766e1d150d872913e4ac08ddad5132f47 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Tue, 24 Sep 2013 13:19:17 -0700 Subject: ReplicatedPG: we need to update recovery_info in on_local_recover For lost_unfound. Signed-off-by: Samuel Just --- src/osd/PGBackend.h | 7 ++++++- src/osd/ReplicatedPG.cc | 3 +-- src/osd/ReplicatedPG.h | 2 +- 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 ); -- cgit v1.2.1