#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;
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);
}
};
/// 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();
}
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 {