From: Casey Bodley Date: Thu, 11 Mar 2021 20:12:08 +0000 (-0500) Subject: rgw: rgw::sal::RGWBucket initializes creation_time X-Git-Tag: v17.1.0~2611^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=1b6f4d406dda73989bb718597f939e31c43ae01d;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 --- diff --git a/src/rgw/rgw_sal.h b/src/rgw/rgw_sal.h index 646f2937fd3d2..3db877a899932 100644 --- a/src/rgw/rgw_sal.h +++ b/src/rgw/rgw_sal.h @@ -311,7 +311,7 @@ class RGWBucket { protected: RGWBucketEnt ent; RGWBucketInfo info; - RGWUser* owner; + RGWUser* owner = nullptr; RGWAttrs attrs; obj_version bucket_version; ceph::real_time mtime; @@ -337,21 +337,32 @@ class RGWBucket { rgw_obj_key next_marker; }; - RGWBucket() : ent(), info(), owner(nullptr), attrs(), bucket_version() {} + RGWBucket() = default; RGWBucket(RGWUser* _u) : - ent(), info(), owner(_u), 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; } + owner(_u) { } + 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 std::unique_ptr get_object(const rgw_obj_key& key) = 0;