X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Ferasure-code%2Fshec%2FErasureCodeShecTableCache.h;fp=src%2Fceph%2Fsrc%2Ferasure-code%2Fshec%2FErasureCodeShecTableCache.h;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=e4eaf0f0eaa3332098b366b1a9e594baf6240ed6;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/erasure-code/shec/ErasureCodeShecTableCache.h b/src/ceph/src/erasure-code/shec/ErasureCodeShecTableCache.h deleted file mode 100644 index e4eaf0f..0000000 --- a/src/ceph/src/erasure-code/shec/ErasureCodeShecTableCache.h +++ /dev/null @@ -1,124 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 FUJITSU LIMITED - * Copyright (C) 2014 CERN (Switzerland) - * - * Author: Takanori Nakao - * Author: Takeshi Miyamae - * Author: Andreas-Joachim Peters - * - * 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_SHEC_TABLE_CACHE_H -#define CEPH_ERASURE_CODE_SHEC_TABLE_CACHE_H - -// ----------------------------------------------------------------------------- -#include "common/Mutex.h" -#include "erasure-code/ErasureCodeInterface.h" -// ----------------------------------------------------------------------------- -#include -// ----------------------------------------------------------------------------- - -class ErasureCodeShecTableCache { - // --------------------------------------------------------------------------- - // This class implements a table cache for encoding and decoding matrices. - // Encoding matrices are shared for the same (k,m,c,w) combination. - // It supplies a decoding matrix lru cache which is shared for identical - // matrix types e.g. there is one cache (lru-list + lru-map) - // --------------------------------------------------------------------------- - - class DecodingCacheParameter { - public: - int* decoding_matrix; // size: k*k - int* dm_row; // size: k - int* dm_column; // size: k - int* minimum; // size: k+m - DecodingCacheParameter() { - decoding_matrix = 0; - dm_row = 0; - dm_column = 0; - minimum = 0; - } - ~DecodingCacheParameter() { - if (decoding_matrix) { - delete[] decoding_matrix; - } - if (dm_row) { - delete[] dm_row; - } - if (dm_column) { - delete[] dm_column; - } - if (minimum) { - delete[] minimum; - } - } - }; - - public: - - static const int decoding_tables_lru_length = 10000; - typedef std::pair::iterator, - DecodingCacheParameter> lru_entry_t; - typedef std::map< int, int** > codec_table_t; - typedef std::map< int, codec_table_t > codec_tables_t__; - typedef std::map< int, codec_tables_t__ > codec_tables_t_; - typedef std::map< int, codec_tables_t_ > codec_tables_t; - typedef std::map< int, codec_tables_t > codec_technique_tables_t; - // int** matrix = codec_technique_tables_t[technique][k][m][c][w] - - typedef std::map< uint64_t, lru_entry_t > lru_map_t; - typedef std::list< uint64_t > lru_list_t; - - ErasureCodeShecTableCache() : - codec_tables_guard("shec-lru-cache") - { - } - - virtual ~ErasureCodeShecTableCache(); - - Mutex codec_tables_guard; // mutex used to protect modifications in encoding/decoding table maps - - bool getDecodingTableFromCache(int* matrix, - int* dm_row, int* dm_column, - int* minimum, - int technique, - int k, int m, int c, int w, - int* want, int* avails); - - void putDecodingTableToCache(int* matrix, - int* dm_row, int* dm_column, - int* minimum, - int technique, - int k, int m, int c, int w, - int* want, int* avails); - - int** getEncodingTable(int technique, int k, int m, int c, int w); - int** getEncodingTableNoLock(int technique, int k, int m, int c, int w); - int* setEncodingTable(int technique, int k, int m, int c, int w, int*); - - private: - // encoding table accessed via table[matrix][k][m][c][w] - // decoding table cache accessed via map[matrixtype] - // decoding table lru list accessed via list[matrixtype] - codec_technique_tables_t encoding_table; - std::map decoding_tables; - std::map decoding_tables_lru; - - lru_map_t* getDecodingTables(int technique); - lru_list_t* getDecodingTablesLru(int technique); - uint64_t getDecodingCacheSignature(int k, int m, int c, int w, - int *want, int *avails); - - Mutex* getLock(); -}; - -#endif