mirror of
https://github.com/ceph/ceph
synced 2025-01-02 00:52:22 +00:00
mon: erasure code plugin loader helper
The get_erasure_code helper loads the erasure code plugin found in the erasure-code-plugin string of the properties argument. It is meant to be used to query the plugin to determine the desired size of a pool, the more suitable ruleset to use etc. Reviewed-By: Christophe Courtaut <christophe.courtaut@gmail.com> Signed-off-by: Loic Dachary <loic@dachary.org>
This commit is contained in:
parent
61c45fe03d
commit
caefb8a29a
@ -2742,6 +2742,23 @@ int OSDMonitor::prepare_new_pool(MPoolOp *m)
|
||||
properties, pg_pool_t::TYPE_REPLICATED, ss);
|
||||
}
|
||||
|
||||
int OSDMonitor::get_erasure_code(const map<string,string> &properties,
|
||||
ErasureCodeInterfaceRef *erasure_code,
|
||||
stringstream &ss)
|
||||
{
|
||||
map<string,string>::const_iterator plugin =
|
||||
properties.find("erasure-code-plugin");
|
||||
if (plugin == properties.end()) {
|
||||
ss << "cannot determine the erasure code plugin"
|
||||
<< " because erasure-code-plugin is not in the properties "
|
||||
<< properties;
|
||||
return -EINVAL;
|
||||
}
|
||||
ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
|
||||
return instance.factory(plugin->second, properties, erasure_code);
|
||||
}
|
||||
|
||||
|
||||
int OSDMonitor::prepare_pool_properties(const unsigned pool_type,
|
||||
const vector<string> &properties,
|
||||
map<string,string> *properties_map,
|
||||
|
@ -37,6 +37,8 @@ class Monitor;
|
||||
#include "messages/MOSDFailure.h"
|
||||
#include "messages/MPoolOp.h"
|
||||
|
||||
#include "osd/ErasureCodeInterface.h"
|
||||
|
||||
#define OSD_METADATA_PREFIX "osd_metadata"
|
||||
|
||||
/// information about a particular peer's failure reports for one osd
|
||||
@ -236,6 +238,9 @@ private:
|
||||
bool prepare_pool_op (MPoolOp *m);
|
||||
bool prepare_pool_op_create (MPoolOp *m);
|
||||
bool prepare_pool_op_delete(MPoolOp *m);
|
||||
int get_erasure_code(const map<string,string> &properties,
|
||||
ErasureCodeInterfaceRef *erasure_code,
|
||||
stringstream &ss);
|
||||
int prepare_pool_properties(const unsigned pool_type,
|
||||
const vector<string> &properties,
|
||||
map<string,string> *properties_map,
|
||||
|
Loading…
Reference in New Issue
Block a user