* specific request */
RGWBucketInfo binfo;
std::map<std::string, ceph::bufferlist> battrs;
- RGWObjectCtx obj_ctx(store); // = *static_cast<RGWObjectCtx *>(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;
class RGWBulkUploadOp : public RGWOp {
+ boost::optional<RGWObjectCtx> dir_ctx;
+
protected:
class StreamGetter;
class DecoratedStreamGetter;
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;