diff options
author | Greg Farnum <greg@inktank.com> | 2013-10-22 14:54:00 -0700 |
---|---|---|
committer | Greg Farnum <greg@inktank.com> | 2013-10-22 14:54:00 -0700 |
commit | ecbbbdfc7f6e10ad713d7b5b0db92f5bcef77b0f (patch) | |
tree | f6dc12ad3dbf9df90e113b95621844bf080b7cbc | |
parent | f915eec60b32262f2028b83441302dfca1814dd3 (diff) | |
download | ceph-ecbbbdfc7f6e10ad713d7b5b0db92f5bcef77b0f.tar.gz |
ReplicatedPG: take recovery locks in wait_for_missing_object()
Need them here too.
Signed-off-by: Greg Farnum <greg@inktank.com>
-rw-r--r-- | src/osd/ReplicatedPG.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 01dfaea5bbf..e06b7793c42 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -280,6 +280,8 @@ void ReplicatedPG::wait_for_missing_object(const hobject_t& soid, OpRequestRef o } else { dout(7) << "missing " << soid << " v " << v << ", recovering." << dendl; + // nobody can have locks on a missing object, so we must be uncontended + assert(rw_manager.get_backfill_read(soid)); PGBackend::RecoveryHandle *h = pgbackend->open_recovery_op(); recover_missing(soid, v, cct->_conf->osd_client_op_priority, h); pgbackend->run_recovery_op(h, cct->_conf->osd_client_op_priority); |