]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
messages, os, osd: Clean-up g/hobject_t MAX handling
authorDavid Zafman <david.zafman@inktank.com>
Tue, 17 Dec 2013 02:50:57 +0000 (18:50 -0800)
committerDavid Zafman <david.zafman@inktank.com>
Thu, 9 Jan 2014 00:33:57 +0000 (16:33 -0800)
Add check of is_max() before updating an unset pool
Use efficient is_max() instead of compare with hobject::get_max()

Signed-off-by: David Zafman <david.zafman@inktank.com>
src/messages/MOSDPGScan.h
src/messages/MOSDSubOp.h
src/messages/MOSDSubOpReply.h
src/os/ObjectStore.h
src/osd/PG.cc
src/osd/PG.h
src/osd/ReplicatedPG.cc
src/osd/osd_types.cc
src/osd/osd_types.h

index 7df3a966dba7a641757ec37c474b087692b2bd61..4c86a3c7e7aa7b1973b1bc545b8674cccf55516c 100644 (file)
@@ -47,9 +47,9 @@ public:
     ::decode(end, p);
 
     // handle hobject_t format upgrade
-    if (begin.pool == -1)
+    if (!begin.is_max() && begin.pool == -1)
       begin.pool = pgid.pool();
-    if (end.pool == -1)
+    if (!end.is_max() && end.pool == -1)
       end.pool = pgid.pool();
   }
 
index 4169e01325e20c7f50eb6eb3fb135d1c7aa1741d..7e9f087fec809e7141149d4da095a596018f5cb4 100644 (file)
@@ -149,7 +149,7 @@ public:
 
     if (header.version < 7) {
       // Handle hobject_t format change
-      if (poid.pool == -1)
+      if (!poid.is_max() && poid.pool == -1)
        poid.pool = pgid.pool();
       hobject_incorrect_pool = true;
     }
index d577dd3c2d30fd4c1642b175cc38ae6bb2b15b0d..6b0738a212f0ef64d481b9b2304f0e21588c771d 100644 (file)
@@ -69,7 +69,7 @@ public:
     ::decode(peer_stat, p);
     ::decode(attrset, p);
 
-    if (poid.pool == -1)
+    if (!poid.is_max() && poid.pool == -1)
       poid.pool = pgid.pool();
   }
   virtual void encode_payload(uint64_t features) {
index 90db986b2954e65b6bd935f736154ded89ab3afc..17d360f0b4369dedceaedb1a4a971f48e98f3017 100644 (file)
@@ -342,7 +342,7 @@ public:
        } else {
          ::decode(oid, p);
          if (use_pool_override && pool_override != -1 &&
-             oid.hobj.pool == -1) {
+             !oid.hobj.is_max() && oid.hobj.pool == -1) {
            oid.hobj.pool = pool_override;
          }
        }
index 6a2cf7c0a4f0c69fc7544152e438f4a829641e44..b5d3f8829651a24780ed2f5a611676a3e2bb967e 100644 (file)
@@ -526,7 +526,7 @@ bool PG::needs_backfill() const
   for (; a != end; ++a) {
     int peer = *a;
     map<int,pg_info_t>::const_iterator pi = peer_info.find(peer);
-    if (pi->second.last_backfill != hobject_t::get_max()) {
+    if (!pi->second.last_backfill.is_max()) {
       dout(10) << __func__ << " osd." << peer << " has last_backfill " << pi->second.last_backfill << dendl;
       ret = true;
     }
index 31b9762e3bcb6db68bf7092df2b8611bb9be4729..4047dd4b3fcd9e3fb9e0b35ce2e903886de0a158 100644 (file)
@@ -462,7 +462,7 @@ protected:
 
     /// true if interval extends to the end of the range
     bool extends_to_end() {
-      return end == hobject_t::get_max();
+      return end.is_max();
     }
 
     /// removes items <= soid and adjusts begin to the first object
index e21efeb9ce009fc32440e044311f270201e83aa6..ffa29a24c04ad9aa17f4b6228a83acb0fd77069e 100644 (file)
@@ -1857,7 +1857,7 @@ void ReplicatedPG::do_scan(
             i != tmp.end();
             ++i) {
          hobject_t first(i->first);
-         if (first.pool == -1)
+         if (!first.is_max() && first.pool == -1)
            first.pool = info.pgid.pool();
          bi.objects[first] = i->second;
        }
@@ -6349,7 +6349,7 @@ void ReplicatedPG::sub_op_modify(OpRequestRef op)
       for (vector<pg_log_entry_t>::iterator i = log.begin();
          i != log.end();
          ++i) {
-       if (i->soid.pool == -1)
+       if (!i->soid.is_max() && i->soid.pool == -1)
          i->soid.pool = info.pgid.pool();
       }
       rm->opt.set_pool_override(info.pgid.pool());
@@ -8111,7 +8111,7 @@ void ReplicatedPG::on_activate()
   int backfill_target = get_backfill_target();
   if (backfill_target != -1) {
     last_backfill_started = peer_info[backfill_target].last_backfill;
-    assert(last_backfill_started != hobject_t::get_max());
+    assert(!last_backfill_started.is_max());
     dout(10) << " chose backfill target osd." << backfill_target
             << " from " << last_backfill_started << dendl;
   }
index 7693eada4b954fad5a0cf120d595086e49c6c2bb..6f72b05e4d205b2360e5214bf5aa4633e26d37d5 100644 (file)
@@ -2295,7 +2295,7 @@ void pg_log_t::decode(bufferlist::iterator &bl, int64_t pool)
     for (list<pg_log_entry_t>::iterator i = log.begin();
         i != log.end();
         ++i) {
-      if (i->soid.pool == -1)
+      if (!i->soid.is_max() && i->soid.pool == -1)
        i->soid.pool = pool;
     }
   }
@@ -2412,7 +2412,7 @@ void pg_missing_t::decode(bufferlist::iterator &bl, int64_t pool)
     for (map<hobject_t, item>::iterator i = missing.begin();
         i != missing.end();
       ) {
-      if (i->first.pool == -1) {
+      if (!i->first.is_max() && i->first.pool == -1) {
        hobject_t to_insert(i->first);
        to_insert.pool = pool;
        tmp[to_insert] = i->second;
@@ -3398,7 +3398,7 @@ void ObjectRecoveryInfo::decode(bufferlist::iterator &bl,
   DECODE_FINISH(bl);
 
   if (struct_v < 2) {
-    if (soid.pool == -1)
+    if (!soid.is_max() && soid.pool == -1)
       soid.pool = pool;
     map<hobject_t, interval_set<uint64_t> > tmp;
     tmp.swap(clone_subset);
@@ -3406,7 +3406,7 @@ void ObjectRecoveryInfo::decode(bufferlist::iterator &bl,
         i != tmp.end();
         ++i) {
       hobject_t first(i->first);
-      if (first.pool == -1)
+      if (!first.is_max() && first.pool == -1)
        first.pool = pool;
       clone_subset[first].swap(i->second);
     }
@@ -3726,7 +3726,7 @@ void ScrubMap::decode(bufferlist::iterator& bl, int64_t pool)
         i != tmp.end();
         ++i) {
       hobject_t first(i->first);
-      if (first.pool == -1)
+      if (!first.is_max() && first.pool == -1)
        first.pool = pool;
       objects[first] = i->second;
     }
index 49de460bb1733f9e536fec1363e22ae00c225d5b..ddb55b71389f2aadb0b00e1ea453053af8417a30 100644 (file)
@@ -1420,7 +1420,7 @@ struct pg_info_t {
   bool is_empty() const { return last_update.version == 0; }
   bool dne() const { return history.epoch_created == 0; }
 
-  bool is_incomplete() const { return last_backfill != hobject_t::get_max(); }
+  bool is_incomplete() const { return !last_backfill.is_max(); }
 
   void encode(bufferlist& bl) const;
   void decode(bufferlist::iterator& p);