]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/osd/PrimaryLogPG.cc
update sources to v12.2.1
[ceph.git] / ceph / src / osd / PrimaryLogPG.cc
index 6e50990addda35bb1b3d0d5ec2c3d8dfb0e5119c..2877c28d67a618da2577b9b744aee684a599c3b9 100644 (file)
@@ -1655,6 +1655,7 @@ void PrimaryLogPG::do_request(
             << ", queue on waiting_for_map " << op->get_source() << dendl;
     waiting_for_map[op->get_source()].push_back(op);
     op->mark_delayed("op must wait for map");
+    osd->request_osdmap_update(op->min_epoch);
     return;
   }
 
@@ -4918,9 +4919,6 @@ int PrimaryLogPG::do_sparse_read(OpContext *ctx, OSDOp& osd_op) {
         bufferlist t;
         uint64_t len = miter->first - last;
         r = pgbackend->objects_read_sync(soid, last, len, op.flags, &t);
-       if (r == -EIO) {
-         r = rep_repair_primary_object(soid, ctx->op);
-       }
         if (r < 0) {
           osd->clog->error() << coll << " " << soid
                             << " sparse-read failed to read: "
@@ -4935,6 +4933,9 @@ int PrimaryLogPG::do_sparse_read(OpContext *ctx, OSDOp& osd_op) {
       bufferlist tmpbl;
       r = pgbackend->objects_read_sync(soid, miter->first, miter->second,
                                       op.flags, &tmpbl);
+      if (r == -EIO) {
+        r = rep_repair_primary_object(soid, ctx->op);
+      }
       if (r < 0) {
        return r;
       }