]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Fixes for mark_unfound_lost
authorDavid Zafman <dzafman@redhat.com>
Thu, 19 Oct 2017 01:07:41 +0000 (18:07 -0700)
committerDavid Zafman <dzafman@redhat.com>
Fri, 20 Oct 2017 15:05:20 +0000 (08:05 -0700)
Let recovery requeue operations and release backoff
For "delete" mark object context, if present, to non-existent

Signed-off-by: David Zafman <dzafman@redhat.com>
src/osd/PrimaryLogPG.cc

index a8c877f1b2af10605285f5838954e69a9adc48bb..05107298d988a6555db0dc429f216fd948dc4695 100644 (file)
@@ -10550,6 +10550,13 @@ void PrimaryLogPG::mark_all_unfound_lost(
        log_entries.push_back(e);
         oids.push_back(oid);
 
+       // If context found mark object as deleted in case
+       // of racing with new creation.  This can happen if
+       // object lost and EIO at primary.
+       obc = object_contexts.lookup(oid);
+       if (obc)
+         obc->obs.exists = false;
+
        ++v.version;
        ++m;
       }
@@ -10576,10 +10583,6 @@ void PrimaryLogPG::mark_all_unfound_lost(
          }
        }
 
-       for (auto& p : waiting_for_unreadable_object) {
-         release_backoffs(p.first);
-       }
-       requeue_object_waiters(waiting_for_unreadable_object);
        if (is_recovery_unfound()) {
          queue_peering_event(
            CephPeeringEvtRef(