From 76cf7cc83bff4b2fad4aec4dc6f1925f0452dc35 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Fri, 25 Jan 2019 16:42:50 -0500 Subject: [PATCH] rgw: bi_get() takes bucket_info and calls the bucket_info overload of BucketShard::init() to avoid reading the bucket info again Signed-off-by: Casey Bodley (cherry picked from commit a15e8736340c916120fef1f3a5ff1b982cf7c837) Conflicts: src/rgw/rgw_rados.cc enum BIIndexType --- src/rgw/rgw_admin.cc | 2 +- src/rgw/rgw_rados.cc | 22 +++++++--------------- src/rgw/rgw_rados.h | 4 ++-- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index 13ce136ccd1b..1f942463bbc1 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -5621,7 +5621,7 @@ next: rgw_cls_bi_entry entry; - ret = store->bi_get(bucket, obj, bi_index_type, &entry); + ret = store->bi_get(bucket_info, obj, bi_index_type, &entry); if (ret < 0) { cerr << "ERROR: bi_get(): " << cpp_strerror(-ret) << std::endl; return -ret; diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index a34f76f5bdd2..740531d58347 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -12976,16 +12976,11 @@ int RGWRados::stop_bi_log_entries(RGWBucketInfo& bucket_info, int shard_id) return CLSRGWIssueBucketBILogStop(index_ctx, bucket_objs, cct->_conf->rgw_bucket_index_max_aio)(); } -int RGWRados::bi_get_instance(const RGWBucketInfo& bucket_info, rgw_obj& obj, rgw_bucket_dir_entry *dirent) +int RGWRados::bi_get_instance(const RGWBucketInfo& bucket_info, const rgw_obj& obj, + rgw_bucket_dir_entry *dirent) { - rgw_rados_ref ref; - int r = get_obj_head_ref(bucket_info, obj, &ref); - if (r < 0) { - return r; - } - rgw_cls_bi_entry bi_entry; - r = bi_get(obj.bucket, obj, InstanceIdx, &bi_entry); + int r = bi_get(bucket_info, obj, InstanceIdx, &bi_entry); if (r < 0 && r != -ENOENT) { ldout(cct, 0) << "ERROR: bi_get() returned r=" << r << dendl; } @@ -13003,10 +12998,11 @@ int RGWRados::bi_get_instance(const RGWBucketInfo& bucket_info, rgw_obj& obj, rg return 0; } -int RGWRados::bi_get(rgw_bucket& bucket, rgw_obj& obj, BIIndexType index_type, rgw_cls_bi_entry *entry) +int RGWRados::bi_get(const RGWBucketInfo& bucket_info, const rgw_obj& obj, + BIIndexType index_type, rgw_cls_bi_entry *entry) { BucketShard bs(this); - int ret = bs.init(bucket, obj, nullptr /* no RGWBucketInfo */); + int ret = bs.init(bucket_info, obj); if (ret < 0) { ldout(cct, 5) << "bs.init() returned ret=" << ret << dendl; return ret; @@ -13014,11 +13010,7 @@ int RGWRados::bi_get(rgw_bucket& bucket, rgw_obj& obj, BIIndexType index_type, r cls_rgw_obj_key key(obj.key.get_index_key_name(), obj.key.instance); - ret = cls_rgw_bi_get(bs.index_ctx, bs.bucket_obj, index_type, key, entry); - if (ret < 0) - return ret; - - return 0; + return cls_rgw_bi_get(bs.index_ctx, bs.bucket_obj, index_type, key, entry); } void RGWRados::bi_put(ObjectWriteOperation& op, BucketShard& bs, rgw_cls_bi_entry& entry) diff --git a/src/rgw/rgw_rados.h b/src/rgw/rgw_rados.h index 37f247514671..b002133c844a 100644 --- a/src/rgw/rgw_rados.h +++ b/src/rgw/rgw_rados.h @@ -3551,8 +3551,8 @@ public: int stop_bi_log_entries(RGWBucketInfo& bucket_info, int shard_id); int get_bi_log_status(RGWBucketInfo& bucket_info, int shard_id, map& max_marker); - int bi_get_instance(const RGWBucketInfo& bucket_info, rgw_obj& obj, rgw_bucket_dir_entry *dirent); - int bi_get(rgw_bucket& bucket, rgw_obj& obj, BIIndexType index_type, rgw_cls_bi_entry *entry); + int bi_get_instance(const RGWBucketInfo& bucket_info, const rgw_obj& obj, rgw_bucket_dir_entry *dirent); + int bi_get(const RGWBucketInfo& bucket_info, const rgw_obj& obj, BIIndexType index_type, rgw_cls_bi_entry *entry); void bi_put(librados::ObjectWriteOperation& op, BucketShard& bs, rgw_cls_bi_entry& entry); int bi_put(BucketShard& bs, rgw_cls_bi_entry& entry); int bi_put(rgw_bucket& bucket, rgw_obj& obj, rgw_cls_bi_entry& entry); -- 2.47.3