diff options
author | Greg Farnum <greg@inktank.com> | 2013-10-22 16:52:18 -0700 |
---|---|---|
committer | Greg Farnum <greg@inktank.com> | 2013-10-22 16:52:18 -0700 |
commit | 65cc4c7981c596dd7e614177f8029d10c1c5f40e (patch) | |
tree | a608fbc592f9e7cdb2e5f5b15635238922d3c7bb | |
parent | f1cc48d76f0900ba4de743ec956350b87da61338 (diff) | |
download | ceph-65cc4c7981c596dd7e614177f8029d10c1c5f40e.tar.gz |
PG: clear out the waiting_for_missing_object list properly
We were previously not erasing empty entries, which was confusing
the rw_manager recovery locking.
Signed-off-by: Greg Farnum <greg@inktank.com>
-rw-r--r-- | src/osd/PG.cc | 1 | ||||
-rw-r--r-- | src/osd/ReplicatedPG.cc | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 539fb3284cb..a2d33975682 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -404,6 +404,7 @@ bool PG::search_for_missing(const pg_info_t &oinfo, const pg_missing_t *omissing if (wmo != waiting_for_missing_object.end()) { get_pgbackend()->get_parent()->drop_object_recovery_locks(wmo->first); requeue_ops(wmo->second); + waiting_for_missing_object.erase(wmo); } stats_updated = true; missing_loc[soid].insert(fromosd); diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index b6e3a0de3cd..6d0642ee4c6 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -7079,6 +7079,7 @@ ObjectContextRef ReplicatedPG::mark_object_lost(ObjectStore::Transaction *t, if (wmo != waiting_for_missing_object.end()) { drop_object_recovery_locks(wmo->first); requeue_ops(wmo->second); + waiting_for_missing_object.erase(wmo); } // Add log entry |