]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/osdc/Objecter.cc
import ceph 12.2.12
[ceph.git] / ceph / src / osdc / Objecter.cc
index 0989a4c1494f38a03d1d9a5b1498ea77a08aaf46..447f44f6256b6fbbc59b26bb7965ad63e5c050c5 100644 (file)
@@ -3294,11 +3294,11 @@ int Objecter::calc_op_budget(Op *op)
     if (i->op.op & CEPH_OSD_OP_MODE_WR) {
       op_budget += i->indata.length();
     } else if (ceph_osd_op_mode_read(i->op.op)) {
-      if (ceph_osd_op_type_data(i->op.op)) {
-       if ((int64_t)i->op.extent.length > 0)
-         op_budget += (int64_t)i->op.extent.length;
+      if (ceph_osd_op_uses_extent(i->op.op)) {
+        if ((int64_t)i->op.extent.length > 0)
+          op_budget += (int64_t)i->op.extent.length;
       } else if (ceph_osd_op_type_attr(i->op.op)) {
-       op_budget += i->op.xattr.name_len + i->op.xattr.value_len;
+        op_budget += i->op.xattr.name_len + i->op.xattr.value_len;
       }
     }
   }
@@ -4427,7 +4427,10 @@ bool Objecter::ms_handle_reset(Connection *con)
     if (session) {
       ldout(cct, 1) << "ms_handle_reset " << con << " session " << session
                    << " osd." << session->osd << dendl;
-      if (!initialized) {
+      // the session maybe had been closed if new osdmap just handled
+      // says the osd down
+      if (!(initialized && osdmap->is_up(session->osd))) {
+       ldout(cct, 1) << "ms_handle_reset aborted,initialized=" << initialized << dendl;
        wl.unlock();
        return false;
       }