]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Revert "osd/: update peer_missing and local missing if we write a degraded object"
authorSamuel Just <sjust@redhat.com>
Mon, 23 Mar 2015 18:54:57 +0000 (11:54 -0700)
committerSamuel Just <sjust@redhat.com>
Mon, 23 Mar 2015 18:54:57 +0000 (11:54 -0700)
This reverts commit c632fecb87e292eb73161f36d4e6df6f077fae77.

src/osd/ECBackend.cc
src/osd/PG.cc
src/osd/PG.h
src/osd/ReplicatedPG.cc
src/osd/ReplicatedPG.h

index 6e1362ec44c48d04f8d4317e74e25bc0998ff839..845ea832eeb80e9a0dba9d7d925f0e8397b75886 100644 (file)
@@ -1543,13 +1543,6 @@ void ECBackend::start_write(Op *op) {
       trans.find(i->shard);
     assert(iter != trans.end());
     bool should_send = get_parent()->should_send_op(*i, op->hoid);
-    if (should_send) {
-      dout(10) << __func__ << ": sending transaction for object "
-              << op->hoid << " to shard " << *i << dendl;
-    } else {
-      dout(10) << __func__ << ": NOT sending transaction for object "
-              << op->hoid << " to shard " << *i << dendl;
-    }
     pg_stat_t stats =
       should_send ?
       get_info().stats :
index dd5a0a93d48df1b6b7ccebc031f5c33fbb35e289..3c80bee498d5b86f6e8696760fbc153df8f6b284 100644 (file)
@@ -2939,30 +2939,6 @@ void PG::append_log(
   for (vector<pg_log_entry_t>::const_iterator p = logv.begin();
        p != logv.end();
        ++p) {
-    // we might get log entries for missing objects since we can write to
-    // degraded objects
-    if (!transaction_applied) {
-      if (p->is_delete())
-       t.remove(coll, p->soid);
-
-      assert(
-       p->soid > info.last_backfill ||
-       pg_log.get_missing().is_missing(p->soid) ||
-       (p->is_clone() || p->is_promote() ||
-        (p->is_modify() && (p->prior_version == eversion_t())))
-       );
-
-      if (p->soid <= info.last_backfill) {
-       dout(10) << __func__ << ": transaction empty, adding event "
-                << *p << " to missing"
-                << dendl;
-       pg_log.missing_add_event(*p);
-      } else {
-       dout(10) << __func__ << ": transaction empty, backfill, "
-                << "not adding event " << *p << " to missing"
-                << dendl;
-      }
-    }
     add_log_entry(*p, keys[p->get_key_name()]);
   }
 
index a1202c6aca7b5f51fd3c3344075b4c9610ccef60..f69d431123b1b57f65d80a71811127fd9242208c 100644 (file)
@@ -395,44 +395,6 @@ public:
       assert(needs_recovery(hoid));
       needs_recovery_map[hoid].need = need;
     }
-    void rebuild_object_location(
-      const hobject_t &hoid,
-      const set<pg_shard_t> &actingbackfill,
-      const map<pg_shard_t, const pg_missing_t *> &all_missing,
-      const map<pg_shard_t, const pg_info_t *> &all_info) {
-      needs_recovery_map.erase(hoid);
-      missing_loc.erase(hoid);
-      eversion_t need;
-      for (set<pg_shard_t>::const_iterator peer = actingbackfill.begin();
-          peer != actingbackfill.end();
-          ++peer) {
-       map<pg_shard_t, const pg_missing_t *>::const_iterator pm =
-         all_missing.find(*peer);
-       assert(pm != all_missing.end());
-       if (pm->second->is_missing(hoid)) {
-         need = pm->second->missing.find(hoid)->second.need;
-         break;
-       }
-      }
-      if (need == eversion_t())
-       return;
-
-      set<pg_shard_t> have;
-      for (map<pg_shard_t, const pg_missing_t *>::const_iterator pm =
-            all_missing.begin();
-          pm != all_missing.end();
-          ++pm) {
-       map<pg_shard_t, const pg_info_t *>::const_iterator pi =
-         all_info.find(pm->first);
-       assert(pi != all_info.end());
-       if (pi->second->last_update >= need &&
-           !pm->second->is_missing(hoid)) {
-         have.insert(pm->first);
-       }
-      }
-      missing_loc[hoid].swap(have);
-      add_missing(hoid, need, eversion_t());
-    }
 
     /// Adds info about a possible recovery source
     bool add_source_info(
index ebe118be27e329345d782d1030923d1d4ec99870..c65e0f7580951b8135738bc7ffa55c38202df9f6 100644 (file)
@@ -7593,40 +7593,6 @@ void ReplicatedPG::issue_repop(RepGather *repop, utime_t now)
     repop->ctx->reqid,
     repop->ctx->op);
   repop->ctx->op_t = NULL;
-
-  if (is_degraded_object(soid)) {
-    dout(10) << __func__ << ": " << soid
-            << " degraded, maintaining missing sets"
-            << dendl;
-    assert(!is_missing_object(soid));
-    for (vector<pg_log_entry_t>::iterator j = repop->ctx->log.begin();
-        j != repop->ctx->log.end();
-        ++j) {
-      for (set<pg_shard_t>::const_iterator peer = actingbackfill.begin();
-          peer != actingbackfill.end();
-          ++peer) {
-       if (*peer == pg_whoami) {
-         assert(!is_missing_object(j->soid));
-         continue;
-       }
-       map<pg_shard_t, pg_missing_t>::iterator pm = peer_missing.find(*peer);
-       assert(pm != peer_missing.end());
-       if (!pm->second.is_missing(soid)) {
-         assert(!pm->second.is_missing(j->soid));
-         continue;
-       }
-       dout(10) << __func__ << ": " << soid << " missing on "
-                << *peer << ", adding event " << *j << " to missing"
-                << dendl;
-       pm->second.add_next_event(*j);
-      }
-      missing_loc.rebuild_object_location(
-       j->soid,
-       actingbackfill,
-       get_all_missing(),
-       get_all_info());
-    }
-  }
 }
 
 template<typename T, int MSGTYPE>
index 9785c276f1954ecc04adc8193105331c5c386c92..2670a22aa5340d76da13a2ad5445de65c5d40189 100644 (file)
@@ -367,26 +367,6 @@ public:
   const pg_pool_t &get_pool() const {
     return pool.info;
   }
-  map<pg_shard_t, const pg_missing_t *> get_all_missing() const {
-    map<pg_shard_t, const pg_missing_t *> all_missing;
-    all_missing[pg_whoami] = &(pg_log.get_missing());
-    for (map<pg_shard_t, pg_missing_t>::const_iterator i = peer_missing.begin();
-        i != peer_missing.end();
-        ++i) {
-      all_missing[i->first] = &(i->second);
-    }
-    return all_missing;
-  }
-  const map<pg_shard_t, const pg_info_t *> get_all_info() const {
-    map<pg_shard_t, const pg_info_t *> all_info;
-    all_info[pg_whoami] = &info;
-    for (map<pg_shard_t, pg_info_t>::const_iterator i = peer_info.begin();
-        i != peer_info.end();
-        ++i) {
-      all_info[i->first] = &(i->second);
-    }
-    return all_info;
-  }
   ObjectContextRef get_obc(
     const hobject_t &hoid,
     map<string, bufferlist> &attrs) {