From: Casey Bodley Date: Thu, 11 Mar 2021 20:12:08 +0000 (-0500) Subject: rgw: rgw::sal::RGWBucket initializes creation_time X-Git-Tag: v16.2.0~105^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e4432caf0f1f0e859924d2c1e851d3d1f34ff8ec;p=ceph.git rgw: rgw::sal::RGWBucket initializes creation_time rgw::sal::RGWUser::list_buckets() uses the RGWBucketEnt constructor. RGWBucketEnt::creation_time is initialized, but get_creation_time() returns the uninitialized info.creation_time Fixes: https://tracker.ceph.com/issues/49741 Signed-off-by: Casey Bodley (cherry picked from commit 1b6f4d406dda73989bb718597f939e31c43ae01d) Conflicts: src/rgw/rgw_sal.h, no constructor for just RGWUser* --- diff --git a/src/rgw/rgw_sal.h b/src/rgw/rgw_sal.h index 3c1a197269d7b..42363e28ca9f5 100644 --- a/src/rgw/rgw_sal.h +++ b/src/rgw/rgw_sal.h @@ -172,7 +172,7 @@ class RGWBucket { protected: RGWBucketEnt ent; RGWBucketInfo info; - RGWUser* owner; + RGWUser* owner = nullptr; RGWAttrs attrs; obj_version bucket_version; ceph::real_time mtime; @@ -198,19 +198,30 @@ class RGWBucket { rgw_obj_key next_marker; }; - RGWBucket() : ent(), info(), owner(nullptr), attrs(), bucket_version() {} - RGWBucket(const rgw_bucket& _b) : - ent(), info(), owner(nullptr), attrs(), bucket_version() { ent.bucket = _b; info.bucket = _b; } - RGWBucket(const RGWBucketEnt& _e) : - ent(_e), info(), owner(nullptr), attrs(), bucket_version() { info.bucket = ent.bucket; info.placement_rule = ent.placement_rule; } - RGWBucket(const RGWBucketInfo& _i) : - ent(), info(_i), owner(nullptr), attrs(), bucket_version() {ent.bucket = info.bucket; ent.placement_rule = info.placement_rule; } + RGWBucket() = default; + RGWBucket(const rgw_bucket& _b) { ent.bucket = _b; info.bucket = _b; } + RGWBucket(const RGWBucketEnt& _e) : ent(_e) { + info.bucket = ent.bucket; + info.placement_rule = ent.placement_rule; + info.creation_time = ent.creation_time; + } + RGWBucket(const RGWBucketInfo& _i) : info(_i) { + ent.bucket = info.bucket; + ent.placement_rule = info.placement_rule; + ent.creation_time = info.creation_time; + } RGWBucket(const rgw_bucket& _b, RGWUser* _u) : - ent(), info(), owner(_u), attrs(), bucket_version() { ent.bucket = _b; info.bucket = _b; } - RGWBucket(const RGWBucketEnt& _e, RGWUser* _u) : - ent(_e), info(), owner(_u), attrs(), bucket_version() { info.bucket = ent.bucket; info.placement_rule = ent.placement_rule; } - RGWBucket(const RGWBucketInfo& _i, RGWUser* _u) : - ent(), info(_i), owner(_u), attrs(), bucket_version() { ent.bucket = info.bucket; ent.placement_rule = info.placement_rule;} + owner(_u) { ent.bucket = _b; info.bucket = _b; } + RGWBucket(const RGWBucketEnt& _e, RGWUser* _u) : ent(_e), owner(_u) { + info.bucket = ent.bucket; + info.placement_rule = ent.placement_rule; + info.creation_time = ent.creation_time; + } + RGWBucket(const RGWBucketInfo& _i, RGWUser* _u) : info(_i), owner(_u) { + ent.bucket = info.bucket; + ent.placement_rule = info.placement_rule; + ent.creation_time = info.creation_time; + } virtual ~RGWBucket() = default; virtual int load_by_name(const std::string& tenant, const std::string& bucket_name, const std::string bucket_instance_id, RGWSysObjectCtx *rctx, optional_yield y) = 0;