From 3770e2473b372a0fd861970867986413299d85ee Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Tue, 29 Nov 2016 11:43:02 +0100 Subject: [PATCH] rgw: optimize metadata caching in BulkUpload of Swift API. Signed-off-by: Radoslaw Zarzynski --- src/rgw/rgw_op.cc | 3 +-- src/rgw/rgw_op.h | 10 ++++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index f906689cfaa..7d7b019e0ab 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -5605,8 +5605,7 @@ int RGWBulkUploadOp::handle_dir(const boost::string_ref path) * specific request */ RGWBucketInfo binfo; std::map battrs; - RGWObjectCtx obj_ctx(store); // = *static_cast(s->obj_ctx); - op_ret = store->get_bucket_info(obj_ctx, s->bucket_tenant, bucket_name, + op_ret = store->get_bucket_info(*dir_ctx, s->bucket_tenant, bucket_name, binfo, NULL, &battrs); if (op_ret < 0 && op_ret != -ENOENT) { return op_ret; diff --git a/src/rgw/rgw_op.h b/src/rgw/rgw_op.h index df865926454..2ab94c363df 100644 --- a/src/rgw/rgw_op.h +++ b/src/rgw/rgw_op.h @@ -387,6 +387,8 @@ inline ostream& operator<<(ostream& out, const RGWBulkDelete::acct_path_t &o) { class RGWBulkUploadOp : public RGWOp { + boost::optional dir_ctx; + protected: class StreamGetter; class DecoratedStreamGetter; @@ -407,7 +409,15 @@ protected: int handle_dir_verify_permission(); int handle_dir(boost::string_ref path); + public: + void init(RGWRados* const store, + struct req_state* const s, + RGWHandler* const h) override { + RGWOp::init(store, s, h); + dir_ctx.emplace(store); + } + int verify_permission() override; void pre_exec() override; void execute() override; -- 2.39.5