#include "include/rados/librados_fwd.hpp"
#include "common/async/yield_context.h"
-#include "services/svc_rados.h" // cant forward declare RGWSI_RADOS::Obj
-
#include "rgw_common.h"
#include "include/function2.hpp"
namespace rgw {
struct AioResult {
- RGWSI_RADOS::Obj obj;
+ rgw_raw_obj obj;
uint64_t id = 0; // id allows caller to associate a result with its request
bufferlist data; // result buffer for reads
int result = 0;
virtual ~Aio() {}
- virtual AioResultList get(const RGWSI_RADOS::Obj& obj,
+ virtual AioResultList get(rgw_raw_obj obj,
OpFunc&& f,
uint64_t cost, uint64_t id) = 0;
virtual void put(AioResult& r) = 0;
*
*/
-#include "include/rados/librados.hpp"
-
#include "rgw_aio_throttle.h"
namespace rgw {
}
}
-AioResultList BlockingAioThrottle::get(const RGWSI_RADOS::Obj& obj,
+AioResultList BlockingAioThrottle::get(rgw_raw_obj obj,
OpFunc&& f,
uint64_t cost, uint64_t id)
{
auto p = std::make_unique<Pending>();
- p->obj = obj;
+ p->obj = std::move(obj);
p->id = id;
p->cost = cost;
return init.result.get();
}
-AioResultList YieldingAioThrottle::get(const RGWSI_RADOS::Obj& obj,
+AioResultList YieldingAioThrottle::get(rgw_raw_obj obj,
OpFunc&& f,
uint64_t cost, uint64_t id)
{
auto p = std::make_unique<Pending>();
- p->obj = obj;
+ p->obj = std::move(obj);
p->id = id;
p->cost = cost;
#pragma once
-#include "include/rados/librados_fwd.hpp"
#include <memory>
#include "common/ceph_mutex.h"
#include "common/async/completion.h"
#include "common/async/yield_context.h"
-#include "services/svc_rados.h"
#include "rgw_aio.h"
namespace rgw {
struct Pending : AioResultEntry {
BlockingAioThrottle *parent = nullptr;
uint64_t cost = 0;
- librados::AioCompletion *completion = nullptr;
};
public:
BlockingAioThrottle(uint64_t window) : Throttle(window) {}
virtual ~BlockingAioThrottle() override {};
- AioResultList get(const RGWSI_RADOS::Obj& obj, OpFunc&& f,
+ AioResultList get(rgw_raw_obj obj, OpFunc&& f,
uint64_t cost, uint64_t id) override final;
void put(AioResult& r) override final;
virtual ~YieldingAioThrottle() override {};
- AioResultList get(const RGWSI_RADOS::Obj& obj, OpFunc&& f,
+ AioResultList get(rgw_raw_obj obj, OpFunc&& f,
uint64_t cost, uint64_t id) override final;
void put(AioResult& r) override final;