namespace rgw { namespace cache {
-std::unordered_map<std::string, Partition> RedisDriver::partitions;
-
std::list<std::string> build_attrs(rgw::sal::Attrs* binary)
{
std::list<std::string> values;
}
}
-int RedisDriver::add_partition_info(Partition& info)
-{
- std::string key = info.name + info.type;
- auto ret = partitions.emplace(key, info);
-
- return ret.second;
-}
-
-int RedisDriver::remove_partition_info(Partition& info)
-{
- std::string key = info.name + info.type;
- return partitions.erase(key);
-}
-
-std::optional<Partition> RedisDriver::get_partition_info(const DoutPrefixProvider* dpp, const std::string& name, const std::string& type)
-{
- std::string key = name + type;
-
- auto iter = partitions.find(key);
- if (iter != partitions.end())
- return iter->second;
-
- return std::nullopt;
-}
-
-std::vector<Partition> RedisDriver::list_partitions(const DoutPrefixProvider* dpp)
-{
- std::vector<Partition> partitions_v;
-
- for (auto& it : partitions)
- partitions_v.emplace_back(it.second);
-
- return partitions_v;
-}
-
int RedisDriver::initialize(CephContext* cct, const DoutPrefixProvider* dpp)
{
if (partition_info.location.back() != '/') {
outstanding_write_size(0)
{
conn = std::make_shared<connection>(boost::asio::make_strand(io_context));
- add_partition_info(_partition_info);
- }
- virtual ~RedisDriver()
- {
- remove_partition_info(partition_info);
}
+ virtual ~RedisDriver() {}
/* Partition */
virtual Partition get_current_partition_info(const DoutPrefixProvider* dpp) override { return partition_info; }
virtual uint64_t get_free_space(const DoutPrefixProvider* dpp) override { return free_space; }
- static std::optional<Partition> get_partition_info(const DoutPrefixProvider* dpp, const std::string& name, const std::string& type);
- static std::vector<Partition> list_partitions(const DoutPrefixProvider* dpp);
virtual int initialize(CephContext* cct, const DoutPrefixProvider* dpp) override;
virtual int put(const DoutPrefixProvider* dpp, const std::string& key, bufferlist& bl, uint64_t len, rgw::sal::Attrs& attrs, optional_yield y) override;
protected:
std::shared_ptr<connection> conn;
-
- static std::unordered_map<std::string, Partition> partitions;
Partition partition_info;
uint64_t free_space;
uint64_t outstanding_write_size;
-
- int add_partition_info(Partition& info);
- int remove_partition_info(Partition& info);
};
} } // namespace rgw::cache
constexpr std::string_view ATTR_PREFIX = "user.rgw.";
-std::optional<Partition> SSDDriver::get_partition_info(const DoutPrefixProvider* dpp, const std::string& name, const std::string& type)
-{
- std::string key = name + type;
- auto iter = partitions.find(key);
- if (iter != partitions.end()) {
- return iter->second;
- }
-
- return std::nullopt;
-}
-
-std::vector<Partition> SSDDriver::list_partitions(const DoutPrefixProvider* dpp)
-{
- std::vector<Partition> partitions_v;
- for (auto& it : SSDDriver::partitions) {
- partitions_v.emplace_back(it.second);
- }
- return partitions_v;
-}
-
-int SSDDriver::add_partition_info(Partition& info)
-{
- std::string key = info.name + info.type;
- auto ret = partitions.emplace(key, info);
- return ret.second;
-}
-
-int SSDDriver::remove_partition_info(Partition& info)
-{
- std::string key = info.name + info.type;
- return partitions.erase(key);
-}
-
-SSDDriver::SSDDriver(Partition& partition_info) : partition_info(partition_info)
-{
- add_partition_info(partition_info);
-}
-
-SSDDriver::~SSDDriver()
-{
- remove_partition_info(partition_info);
-}
-
int SSDDriver::initialize(CephContext* cct, const DoutPrefixProvider* dpp)
{
this->cct = cct;
class SSDDriver : public CacheDriver {
public:
- SSDDriver(Partition& partition_info);
- virtual ~SSDDriver();
+ SSDDriver(Partition& partition_info) : partition_info(partition_info) {}
+ virtual ~SSDDriver() {}
virtual int initialize(CephContext* cct, const DoutPrefixProvider* dpp) override;
virtual int put(const DoutPrefixProvider* dpp, const std::string& key, bufferlist& bl, uint64_t len, rgw::sal::Attrs& attrs, optional_yield y) override;
/* Partition */
virtual Partition get_current_partition_info(const DoutPrefixProvider* dpp) override { return partition_info; }
virtual uint64_t get_free_space(const DoutPrefixProvider* dpp) override { return free_space; }
- static std::optional<Partition> get_partition_info(const DoutPrefixProvider* dpp, const std::string& name, const std::string& type);
- static std::vector<Partition> list_partitions(const DoutPrefixProvider* dpp);
struct libaio_handler {
rgw::Aio* throttle = nullptr;
};
protected:
- inline static std::unordered_map<std::string, Partition> partitions;
Partition partition_info;
uint64_t free_space;
CephContext* cct;
- int add_partition_info(Partition& info);
- int remove_partition_info(Partition& info);
-
private:
// unique_ptr with custom deleter for struct aiocb