X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Ferasure-code%2Fjerasure%2FErasureCodeJerasure.h;fp=src%2Fceph%2Fsrc%2Ferasure-code%2Fjerasure%2FErasureCodeJerasure.h;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=be9abc5615fa6e2faed8f54c46b7df1037a2994c;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/erasure-code/jerasure/ErasureCodeJerasure.h b/src/ceph/src/erasure-code/jerasure/ErasureCodeJerasure.h deleted file mode 100644 index be9abc5..0000000 --- a/src/ceph/src/erasure-code/jerasure/ErasureCodeJerasure.h +++ /dev/null @@ -1,260 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph distributed storage system - * - * Copyright (C) 2013, 2014 Cloudwatt - * Copyright (C) 2014 Red Hat - * - * Author: Loic Dachary - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - */ - -#ifndef CEPH_ERASURE_CODE_JERASURE_H -#define CEPH_ERASURE_CODE_JERASURE_H - -#include "erasure-code/ErasureCode.h" - -class ErasureCodeJerasure : public ErasureCode { -public: - int k; - std::string DEFAULT_K; - int m; - std::string DEFAULT_M; - int w; - std::string DEFAULT_W; - const char *technique; - std::string rule_root; - std::string rule_failure_domain; - bool per_chunk_alignment; - - explicit ErasureCodeJerasure(const char *_technique) : - k(0), - DEFAULT_K("2"), - m(0), - DEFAULT_M("1"), - w(0), - DEFAULT_W("8"), - technique(_technique), - per_chunk_alignment(false) - {} - - ~ErasureCodeJerasure() override {} - - unsigned int get_chunk_count() const override { - return k + m; - } - - unsigned int get_data_chunk_count() const override { - return k; - } - - unsigned int get_chunk_size(unsigned int object_size) const override; - - int encode_chunks(const std::set &want_to_encode, - std::map *encoded) override; - - int decode_chunks(const std::set &want_to_read, - const std::map &chunks, - std::map *decoded) override; - - int init(ErasureCodeProfile &profile, std::ostream *ss) override; - - virtual void jerasure_encode(char **data, - char **coding, - int blocksize) = 0; - virtual int jerasure_decode(int *erasures, - char **data, - char **coding, - int blocksize) = 0; - virtual unsigned get_alignment() const = 0; - virtual void prepare() = 0; - static bool is_prime(int value); -protected: - virtual int parse(ErasureCodeProfile &profile, std::ostream *ss); -}; - -class ErasureCodeJerasureReedSolomonVandermonde : public ErasureCodeJerasure { -public: - int *matrix; - - ErasureCodeJerasureReedSolomonVandermonde() : - ErasureCodeJerasure("reed_sol_van"), - matrix(0) - { - DEFAULT_K = "7"; - DEFAULT_M = "3"; - DEFAULT_W = "8"; - } - ~ErasureCodeJerasureReedSolomonVandermonde() override { - if (matrix) - free(matrix); - } - - void jerasure_encode(char **data, - char **coding, - int blocksize) override; - int jerasure_decode(int *erasures, - char **data, - char **coding, - int blocksize) override; - unsigned get_alignment() const override; - void prepare() override; -private: - int parse(ErasureCodeProfile &profile, std::ostream *ss) override; -}; - -class ErasureCodeJerasureReedSolomonRAID6 : public ErasureCodeJerasure { -public: - int *matrix; - - ErasureCodeJerasureReedSolomonRAID6() : - ErasureCodeJerasure("reed_sol_r6_op"), - matrix(0) - { - DEFAULT_K = "7"; - DEFAULT_W = "8"; - } - ~ErasureCodeJerasureReedSolomonRAID6() override { - if (matrix) - free(matrix); - } - - void jerasure_encode(char **data, - char **coding, - int blocksize) override; - int jerasure_decode(int *erasures, - char **data, - char **coding, - int blocksize) override; - unsigned get_alignment() const override; - void prepare() override; -private: - int parse(ErasureCodeProfile &profile, std::ostream *ss) override; -}; - -#define DEFAULT_PACKETSIZE "2048" - -class ErasureCodeJerasureCauchy : public ErasureCodeJerasure { -public: - int *bitmatrix; - int **schedule; - int packetsize; - - explicit ErasureCodeJerasureCauchy(const char *technique) : - ErasureCodeJerasure(technique), - bitmatrix(0), - schedule(0), - packetsize(0) - { - DEFAULT_K = "7"; - DEFAULT_M = "3"; - DEFAULT_W = "8"; - } - ~ErasureCodeJerasureCauchy() override { - if (bitmatrix) - free(bitmatrix); - if (schedule) - free(schedule); - } - - void jerasure_encode(char **data, - char **coding, - int blocksize) override; - int jerasure_decode(int *erasures, - char **data, - char **coding, - int blocksize) override; - unsigned get_alignment() const override; - void prepare_schedule(int *matrix); -private: - int parse(ErasureCodeProfile &profile, std::ostream *ss) override; -}; - -class ErasureCodeJerasureCauchyOrig : public ErasureCodeJerasureCauchy { -public: - ErasureCodeJerasureCauchyOrig() : - ErasureCodeJerasureCauchy("cauchy_orig") - {} - - void prepare() override; -}; - -class ErasureCodeJerasureCauchyGood : public ErasureCodeJerasureCauchy { -public: - ErasureCodeJerasureCauchyGood() : - ErasureCodeJerasureCauchy("cauchy_good") - {} - - void prepare() override; -}; - -class ErasureCodeJerasureLiberation : public ErasureCodeJerasure { -public: - int *bitmatrix; - int **schedule; - int packetsize; - - explicit ErasureCodeJerasureLiberation(const char *technique = "liberation") : - ErasureCodeJerasure(technique), - bitmatrix(0), - schedule(0), - packetsize(0) - { - DEFAULT_K = "2"; - DEFAULT_M = "2"; - DEFAULT_W = "7"; - } - ~ErasureCodeJerasureLiberation() override; - - void jerasure_encode(char **data, - char **coding, - int blocksize) override; - int jerasure_decode(int *erasures, - char **data, - char **coding, - int blocksize) override; - unsigned get_alignment() const override; - virtual bool check_k(std::ostream *ss) const; - virtual bool check_w(std::ostream *ss) const; - virtual bool check_packetsize_set(std::ostream *ss) const; - virtual bool check_packetsize(std::ostream *ss) const; - virtual int revert_to_default(ErasureCodeProfile &profile, - std::ostream *ss); - void prepare() override; -private: - int parse(ErasureCodeProfile &profile, std::ostream *ss) override; -}; - -class ErasureCodeJerasureBlaumRoth : public ErasureCodeJerasureLiberation { -public: - ErasureCodeJerasureBlaumRoth() : - ErasureCodeJerasureLiberation("blaum_roth") - { - } - - bool check_w(std::ostream *ss) const override; - void prepare() override; -}; - -class ErasureCodeJerasureLiber8tion : public ErasureCodeJerasureLiberation { -public: - ErasureCodeJerasureLiber8tion() : - ErasureCodeJerasureLiberation("liber8tion") - { - DEFAULT_K = "2"; - DEFAULT_M = "2"; - DEFAULT_W = "8"; - } - - void prepare() override; -private: - int parse(ErasureCodeProfile &profile, std::ostream *ss) override; -}; - -#endif