return ret;
}
-int RadosCompletions::drain()
-{
- return drain_aio(handles);
-}
-
int RadosUser::list_buckets(const DoutPrefixProvider* dpp, const std::string& marker,
const std::string& end_marker, uint64_t max, bool need_stats,
BucketList &buckets, optional_yield y)
return std::make_unique<RadosLifecycle>(this);
}
-std::unique_ptr<Completions> RadosStore::get_completions(void)
-{
- return std::make_unique<RadosCompletions>();
-}
-
std::unique_ptr<Notification> RadosStore::get_notification(
rgw::sal::Object* obj, rgw::sal::Object* src_obj, req_state* s, rgw::notify::EventType event_type, optional_yield y, const std::string* object_name)
{
return rados->delete_raw_obj(dpp, obj);
}
-int RadosStore::delete_raw_obj_aio(const DoutPrefixProvider *dpp, const rgw_raw_obj& obj, Completions* aio)
-{
- RadosCompletions* raio = static_cast<RadosCompletions*>(aio);
-
- return rados->delete_raw_obj_aio(dpp, obj, raio->handles);
-}
-
void RadosStore::get_raw_obj(const rgw_placement_rule& placement_rule, const rgw_obj& obj, rgw_raw_obj* raw_obj)
{
rados->obj_to_raw(placement_rule, obj, raw_obj);
return del_op.delete_obj(y, dpp);
}
-int RadosObject::delete_obj_aio(const DoutPrefixProvider* dpp, RGWObjState* astate,
- Completions* aio, bool keep_index_consistent,
- optional_yield y)
-{
- RadosCompletions* raio = static_cast<RadosCompletions*>(aio);
-
- return store->getRados()->delete_obj_aio(dpp, get_obj(), bucket->get_info(), astate,
- raio->handles, keep_index_consistent, y);
-}
-
int RadosObject::copy_object(User* user,
req_info* info,
const rgw_zone_id& source_zone,
class RadosMultipartUpload;
-class RadosCompletions : public Completions {
- public:
- std::list<librados::AioCompletion*> handles;
- RadosCompletions() {}
- ~RadosCompletions() = default;
- virtual int drain() override;
-};
-
class RadosPlacementTier: public StorePlacementTier {
RadosStore* store;
RGWZoneGroupPlacementTier tier;
virtual int list_all_zones(const DoutPrefixProvider* dpp, std::list<std::string>& zone_ids) override;
virtual int cluster_stat(RGWClusterStat& stats) override;
virtual std::unique_ptr<Lifecycle> get_lifecycle(void) override;
- virtual std::unique_ptr<Completions> get_completions(void) override;
virtual std::unique_ptr<Notification> get_notification(rgw::sal::Object* obj, rgw::sal::Object* src_obj, req_state* s, rgw::notify::EventType event_type, optional_yield y, const std::string* object_name=nullptr) override;
virtual std::unique_ptr<Notification> get_notification(
const DoutPrefixProvider* dpp, rgw::sal::Object* obj, rgw::sal::Object* src_obj,
int get_obj_head_ioctx(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const rgw_obj& obj,
librados::IoCtx* ioctx);
int delete_raw_obj(const DoutPrefixProvider *dpp, const rgw_raw_obj& obj);
- int delete_raw_obj_aio(const DoutPrefixProvider *dpp, const rgw_raw_obj& obj, Completions* aio);
void get_raw_obj(const rgw_placement_rule& placement_rule, const rgw_obj& obj, rgw_raw_obj* raw_obj);
int get_raw_chunk_size(const DoutPrefixProvider* dpp, const rgw_raw_obj& obj, uint64_t* chunk_size);
}
virtual int delete_object(const DoutPrefixProvider* dpp,
optional_yield y, bool prevent_versioning) override;
- virtual int delete_obj_aio(const DoutPrefixProvider* dpp, RGWObjState* astate, Completions* aio,
- bool keep_index_consistent, optional_yield y) override;
virtual int copy_object(User* user,
req_info* info, const rgw_zone_id& source_zone,
rgw::sal::Object* dest_object, rgw::sal::Bucket* dest_bucket,
optional_yield y) = 0;
};
-/** Base class for AIO completions */
-class Completions {
- public:
- Completions() {}
- virtual ~Completions() = default;
- virtual int drain() = 0;
-};
-
/** A list of key-value attributes */
using Attrs = std::map<std::string, ceph::buffer::list>;
virtual int cluster_stat(RGWClusterStat& stats) = 0;
/** Get a @a Lifecycle object. Used to manage/run lifecycle transitions */
virtual std::unique_ptr<Lifecycle> get_lifecycle(void) = 0;
- /** Get a @a Completions object. Used for Async I/O tracking */
- virtual std::unique_ptr<Completions> get_completions(void) = 0;
/** Get a @a Notification object. Used to communicate with non-RGW daemons, such as
* management/tracking software */
virtual int delete_object(const DoutPrefixProvider* dpp,
optional_yield y,
bool prevent_versioning = false) = 0;
- /** Asynchronous delete call */
- virtual int delete_obj_aio(const DoutPrefixProvider* dpp, RGWObjState* astate, Completions* aio,
- bool keep_index_consistent, optional_yield y) = 0;
/** Copy an this object to another object. */
virtual int copy_object(User* user,
req_info* info, const rgw_zone_id& source_zone,
return del_op.delete_obj(dpp, y);
}
-int DaosObject::delete_obj_aio(const DoutPrefixProvider* dpp,
- RGWObjState* astate, Completions* aio,
- bool keep_index_consistent, optional_yield y) {
- /* XXX: Make it async */
- return DAOS_NOT_IMPLEMENTED_LOG(dpp);
-}
-
int DaosObject::copy_object(
User* user, req_info* info, const rgw_zone_id& source_zone,
rgw::sal::Object* dest_object, rgw::sal::Bucket* dest_bucket,
return 0;
}
-std::unique_ptr<Completions> DaosStore::get_completions(void) {
- DAOS_NOT_IMPLEMENTED_LOG(nullptr);
- return 0;
-}
-
std::unique_ptr<Notification> DaosStore::get_notification(
rgw::sal::Object* obj, rgw::sal::Object* src_obj, struct req_state* s,
rgw::notify::EventType event_type, const std::string* object_name) {
virtual int delete_object(const DoutPrefixProvider* dpp, optional_yield y,
bool prevent_versioning = false) override;
- virtual int delete_obj_aio(const DoutPrefixProvider* dpp, RGWObjState* astate,
- Completions* aio, bool keep_index_consistent,
- optional_yield y) override;
virtual int copy_object(
User* user, req_info* info, const rgw_zone_id& source_zone,
rgw::sal::Object* dest_object, rgw::sal::Bucket* dest_bucket,
virtual std::string zone_unique_trans_id(const uint64_t unique_num) override;
virtual int cluster_stat(RGWClusterStat& stats) override;
virtual std::unique_ptr<Lifecycle> get_lifecycle(void) override;
- virtual std::unique_ptr<Completions> get_completions(void) override;
virtual std::unique_ptr<Notification> get_notification(
rgw::sal::Object* obj, rgw::sal::Object* src_obj, struct req_state* s,
rgw::notify::EventType event_type, optional_yield y,
return del_op.delete_obj(dpp);
}
- int DBObject::delete_obj_aio(const DoutPrefixProvider* dpp, RGWObjState* astate,
- Completions* aio, bool keep_index_consistent,
- optional_yield y)
- {
- /* XXX: Make it async */
- return 0;
- }
-
int DBObject::copy_object(User* user,
req_info* info,
const rgw_zone_id& source_zone,
return std::make_unique<DBLifecycle>(this);
}
- std::unique_ptr<Completions> DBStore::get_completions(void)
- {
- return 0;
- }
-
int DBLifecycle::get_entry(const std::string& oid, const std::string& marker,
std::unique_ptr<LCEntry>* entry)
{
virtual int delete_object(const DoutPrefixProvider* dpp,
optional_yield y,
bool prevent_versioning = false) override;
- virtual int delete_obj_aio(const DoutPrefixProvider* dpp, RGWObjState* astate, Completions* aio,
- bool keep_index_consistent, optional_yield y) override;
virtual int copy_object(User* user,
req_info* info, const rgw_zone_id& source_zone,
rgw::sal::Object* dest_object, rgw::sal::Bucket* dest_bucket,
virtual int list_all_zones(const DoutPrefixProvider* dpp, std::list<std::string>& zone_ids) override;
virtual int cluster_stat(RGWClusterStat& stats) override;
virtual std::unique_ptr<Lifecycle> get_lifecycle(void) override;
- virtual std::unique_ptr<Completions> get_completions(void) override;
virtual std::unique_ptr<Notification> get_notification(
rgw::sal::Object* obj, rgw::sal::Object* src_obj, req_state* s,
return std::make_unique<FilterLifecycle>(std::move(lc));
}
-std::unique_ptr<Completions> FilterDriver::get_completions(void)
-{
- std::unique_ptr<Completions> c = next->get_completions();
- return std::make_unique<FilterCompletions>(std::move(c));
-}
-
std::unique_ptr<Notification> FilterDriver::get_notification(rgw::sal::Object* obj,
rgw::sal::Object* src_obj, req_state* s,
rgw::notify::EventType event_type, optional_yield y,
return next->delete_object(dpp, y, prevent_versioning);
}
-int FilterObject::delete_obj_aio(const DoutPrefixProvider* dpp, RGWObjState* astate,
- Completions* aio, bool keep_index_consistent,
- optional_yield y)
-{
- return next->delete_obj_aio(dpp, astate, aio, keep_index_consistent, y);
-}
-
int FilterObject::copy_object(User* user,
req_info* info,
const rgw_zone_id& source_zone,
namespace rgw { namespace sal {
-class FilterCompletions : public Completions {
-protected:
- std::unique_ptr<Completions> next;
-
-public:
- FilterCompletions(std::unique_ptr<Completions> _next) : next(std::move(_next)) {}
- virtual ~FilterCompletions() = default;
- virtual int drain() override { return next->drain(); }
-};
-
class FilterPlacementTier : public PlacementTier {
protected:
std::unique_ptr<PlacementTier> next;
}
virtual int cluster_stat(RGWClusterStat& stats) override;
virtual std::unique_ptr<Lifecycle> get_lifecycle(void) override;
- virtual std::unique_ptr<Completions> get_completions(void) override;
virtual std::unique_ptr<Notification> get_notification(rgw::sal::Object* obj,
rgw::sal::Object* src_obj, struct req_state* s,
virtual int delete_object(const DoutPrefixProvider* dpp,
optional_yield y,
bool prevent_versioning = false) override;
- virtual int delete_obj_aio(const DoutPrefixProvider* dpp, RGWObjState* astate,
- Completions* aio,
- bool keep_index_consistent, optional_yield y) override;
virtual int copy_object(User* user,
req_info* info, const rgw_zone_id& source_zone,
rgw::sal::Object* dest_object, rgw::sal::Bucket* dest_bucket,
return del_op.delete_obj(dpp, y);
}
-int MotrObject::delete_obj_aio(const DoutPrefixProvider* dpp, RGWObjState* astate,
- Completions* aio, bool keep_index_consistent,
- optional_yield y)
-{
- /* XXX: Make it async */
- return 0;
-}
-
int MotrObject::copy_object(User* user,
req_info* info,
const rgw_zone_id& source_zone,
return 0;
}
-std::unique_ptr<Completions> MotrStore::get_completions(void)
-{
- return 0;
-}
-
std::unique_ptr<Notification> MotrStore::get_notification(Object* obj, Object* src_obj, req_state* s,
rgw::notify::EventType event_type, optional_yield y, const string* object_name)
{
virtual int delete_object(const DoutPrefixProvider* dpp,
optional_yield y,
bool prevent_versioning = false) override;
- virtual int delete_obj_aio(const DoutPrefixProvider* dpp, RGWObjState* astate, Completions* aio,
- bool keep_index_consistent, optional_yield y) override;
virtual int copy_object(User* user,
req_info* info, const rgw_zone_id& source_zone,
rgw::sal::Object* dest_object, rgw::sal::Bucket* dest_bucket,
virtual int list_all_zones(const DoutPrefixProvider* dpp, std::list<std::string>& zone_ids) override;
virtual int cluster_stat(RGWClusterStat& stats) override;
virtual std::unique_ptr<Lifecycle> get_lifecycle(void) override;
- virtual std::unique_ptr<Completions> get_completions(void) override;
virtual std::unique_ptr<Notification> get_notification(rgw::sal::Object* obj, rgw::sal::Object* src_obj,
req_state* s, rgw::notify::EventType event_type, optional_yield y, const std::string* object_name=nullptr) override;
virtual std::unique_ptr<Notification> get_notification(const DoutPrefixProvider* dpp, rgw::sal::Object* obj,