]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/mon/CreatingPGs.h
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / mon / CreatingPGs.h
index 49935108c442fdd02b4a805c28e494b2a07cdd78..396ccf1cac53d5f24413ed4ab13d363723c2b996 100644 (file)
@@ -5,7 +5,11 @@
 
 #include <map>
 #include <set>
+
 #include "include/encoding.h"
+#include "include/utime.h"
+
+#include "osd/osd_types.h"
 
 struct creating_pgs_t {
   epoch_t last_scan_epoch = 0;
@@ -22,16 +26,18 @@ struct creating_pgs_t {
       return start >= end;
     }
     void encode(bufferlist& bl) const {
-      ::encode(created, bl);
-      ::encode(modified, bl);
-      ::encode(start, bl);
-      ::encode(end, bl);
+      using ceph::encode;
+      encode(created, bl);
+      encode(modified, bl);
+      encode(start, bl);
+      encode(end, bl);
     }
-    void decode(bufferlist::iterator& p) {
-      ::decode(created, p);
-      ::decode(modified, p);
-      ::decode(start, p);
-      ::decode(end, p);
+    void decode(bufferlist::const_iterator& p) {
+      using ceph::decode;
+      decode(created, p);
+      decode(modified, p);
+      decode(start, p);
+      decode(end, p);
     }
   };
 
@@ -41,18 +47,25 @@ struct creating_pgs_t {
   /// pools that exist in the osdmap for which at least one pg has been created
   std::set<int64_t> created_pools;
 
-  bool create_pool(int64_t poolid, uint32_t pg_num,
-                  epoch_t created, utime_t modified) {
-    if (created_pools.count(poolid) == 0) {
-      auto& c = queue[poolid];
-      c.created = created;
-      c.modified = modified;
-      c.end = pg_num;
-      created_pools.insert(poolid);
+  bool still_creating_pool(int64_t poolid) {
+    for (auto& i : pgs) {
+      if (i.first.pool() == poolid) {
+       return true;
+      }
+    }
+    if (queue.count(poolid)) {
       return true;
-    } else {
-      return false;
     }
+    return false;
+  }
+  void create_pool(int64_t poolid, uint32_t pg_num,
+                  epoch_t created, utime_t modified) {
+    ceph_assert(created_pools.count(poolid) == 0);
+    auto& c = queue[poolid];
+    c.created = created;
+    c.modified = modified;
+    c.end = pg_num;
+    created_pools.insert(poolid);
   }
   unsigned remove_pool(int64_t removed_pool) {
     const unsigned total = pgs.size();
@@ -65,19 +78,19 @@ struct creating_pgs_t {
   }
   void encode(bufferlist& bl) const {
     ENCODE_START(2, 1, bl);
-    ::encode(last_scan_epoch, bl);
-    ::encode(pgs, bl);
-    ::encode(created_pools, bl);
-    ::encode(queue, bl);
+    encode(last_scan_epoch, bl);
+    encode(pgs, bl);
+    encode(created_pools, bl);
+    encode(queue, bl);
     ENCODE_FINISH(bl);
   }
-  void decode(bufferlist::iterator& bl) {
+  void decode(bufferlist::const_iterator& bl) {
     DECODE_START(2, bl);
-    ::decode(last_scan_epoch, bl);
-    ::decode(pgs, bl);
-    ::decode(created_pools, bl);
+    decode(last_scan_epoch, bl);
+    decode(pgs, bl);
+    decode(created_pools, bl);
     if (struct_v >= 2)
-      ::decode(queue, bl);
+      decode(queue, bl);
     DECODE_FINISH(bl);
   }
   void dump(ceph::Formatter *f) const {