encode_json("creation_time", utime_t(creation_time), f);
encode_json("count", count, f);
encode_json("user_stats_sync", user_stats_sync, f);
+ encode_json("placement_rule", placement_rule, f);
}
void cls_user_gen_test_bucket_entry(cls_user_bucket_entry *entry, int i)
uint64_t count;
bool user_stats_sync;
+ /* The placement_rule is necessary to calculate per-storage-policy statics
+ * of the Swift API. Although the info available in RGWBucketInfo, we need
+ * to duplicate it here to not affect the performance of buckets listing. */
+ std::string placement_rule;
+
cls_user_bucket_entry() : size(0), size_rounded(0), count(0), user_stats_sync(false) {}
void encode(bufferlist& bl) const {
- ENCODE_START(7, 5, bl);
+ ENCODE_START(8, 5, bl);
uint64_t s = size;
__u32 mt = ceph::real_clock::to_time_t(creation_time);
string empty_str; // originally had the bucket name here, but we encode bucket later
::encode(s, bl);
::encode(user_stats_sync, bl);
::encode(creation_time, bl);
+ ::encode(placement_rule, bl);
ENCODE_FINISH(bl);
}
void decode(bufferlist::iterator& bl) {
::decode(user_stats_sync, bl);
if (struct_v >= 7)
::decode(creation_time, bl);
+ if (struct_v >= 8)
+ ::decode(placement_rule, bl);
DECODE_FINISH(bl);
}
void dump(Formatter *f) const;
size(e.size),
size_rounded(e.size_rounded),
creation_time(e.creation_time),
- count(e.count) {
+ count(e.count),
+ placement_rule(std::move(e.placement_rule)) {
}
RGWBucketEnt& operator=(const RGWBucketEnt&) = default;
}
void encode(bufferlist& bl) const {
- ENCODE_START(6, 5, bl);
+ ENCODE_START(7, 5, bl);
uint64_t s = size;
__u32 mt = ceph::real_clock::to_time_t(creation_time);
string empty_str; // originally had the bucket name here, but we encode bucket later
s = size_rounded;
::encode(s, bl);
::encode(creation_time, bl);
+ ::encode(placement_rule, bl);
ENCODE_FINISH(bl);
}
void decode(bufferlist::iterator& bl) {
size_rounded = s;
if (struct_v >= 6)
::decode(creation_time, bl);
+ if (struct_v >= 7)
+ ::decode(placement_rule, bl);
DECODE_FINISH(bl);
}
void dump(Formatter *f) const;
utime_t ut(creation_time);
encode_json("mtime", ut, f); /* mtime / creation time discrepency needed for backward compatibility */
encode_json("count", count, f);
+ encode_json("placement_rule", placement_rule, f);
}
void RGWUploadPartInfo::dump(Formatter *f) const