]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
erasure-code: move to ErasureCode::minimum_to_decode*
authorLoic Dachary <loic@dachary.org>
Sat, 31 May 2014 22:16:59 +0000 (00:16 +0200)
committerLoic Dachary <loic@dachary.org>
Wed, 6 Aug 2014 13:21:59 +0000 (15:21 +0200)
The ErasureCode{Jerasure,Isa}::minimum_to_decode and
ErasureCode{Jerasure,Isa}::minimum_to_decode_with_cost methods are moved
verbatim to the ErasureCode base class.

http://tracker.ceph.com/issues/8496 Refs: #8496

Signed-off-by: Loic Dachary <loic@dachary.org>
src/erasure-code/ErasureCode.cc
src/erasure-code/ErasureCode.h
src/erasure-code/isa/ErasureCodeIsa.cc
src/erasure-code/isa/ErasureCodeIsa.h
src/erasure-code/jerasure/ErasureCodeJerasure.cc
src/erasure-code/jerasure/ErasureCodeJerasure.h
src/test/erasure-code/TestErasureCodeJerasure.cc

index 75feeb812749fb718409724150027a006bce364c..0a9ccb398dfcb5bf25e5ae8f938cf504661271f4 100644 (file)
  * 
  */
 
+#include <errno.h>
+#include <vector>
+#include <algorithm>
+
 #include "ErasureCode.h"
+
+int ErasureCode::minimum_to_decode(const set<int> &want_to_read,
+                                   const set<int> &available_chunks,
+                                   set<int> *minimum)
+{
+  if (includes(available_chunks.begin(), available_chunks.end(),
+              want_to_read.begin(), want_to_read.end())) {
+    *minimum = want_to_read;
+  } else {
+    unsigned int k = get_data_chunk_count();
+    if (available_chunks.size() < (unsigned)k)
+      return -EIO;
+    set<int>::iterator i;
+    unsigned j;
+    for (i = available_chunks.begin(), j = 0; j < (unsigned)k; ++i, j++)
+      minimum->insert(*i);
+  }
+  return 0;
+}
+
+int ErasureCode::minimum_to_decode_with_cost(const set<int> &want_to_read,
+                                             const map<int, int> &available,
+                                             set<int> *minimum)
+{
+  set <int> available_chunks;
+  for (map<int, int>::const_iterator i = available.begin();
+       i != available.end();
+       ++i)
+    available_chunks.insert(i->first);
+  return minimum_to_decode(want_to_read, available_chunks, minimum);
+}
+
 int ErasureCode::encode_prepare(const bufferlist &raw,
                                 bufferlist *prepared) const
 {
index 7ae2fd71eb9834460f90a215f5709a2cf06e464d..09fa490fdfce2d2087a96e3e320b4834bf749f3f 100644 (file)
@@ -30,6 +30,14 @@ namespace ceph {
   public:
     virtual ~ErasureCode() {}
 
+    virtual int minimum_to_decode(const set<int> &want_to_read,
+                                  const set<int> &available_chunks,
+                                  set<int> *minimum);
+
+    virtual int minimum_to_decode_with_cost(const set<int> &want_to_read,
+                                            const map<int, int> &available,
+                                            set<int> *minimum);
+
     int encode_prepare(const bufferlist &raw, bufferlist *prepared) const;
 
     virtual int encode(const set<int> &want_to_encode,
index da381a3dd246f4533a7aa328f68ac9fbd48cc769..ebc8b6f6a95533a88a426877277f1002000b2e38 100644 (file)
@@ -81,40 +81,6 @@ ErasureCodeIsa::get_chunk_size(unsigned int object_size) const
 
 // -----------------------------------------------------------------------------
 
-int
-ErasureCodeIsa::minimum_to_decode(const set<int> &want_to_read,
-                                  const set<int> &available_chunks,
-                                  set<int> *minimum)
-{
-  if (includes(available_chunks.begin(), available_chunks.end(),
-               want_to_read.begin(), want_to_read.end())) {
-    *minimum = want_to_read;
-  } else {
-    if (available_chunks.size() < (unsigned) k)
-      return -EIO;
-    set<int>::iterator i;
-    unsigned j;
-    for (i = available_chunks.begin(), j = 0; j < (unsigned) k; ++i, j++)
-      minimum->insert(*i);
-  }
-  return 0;
-}
-
-// -----------------------------------------------------------------------------
-
-int
-ErasureCodeIsa::minimum_to_decode_with_cost(const set<int> &want_to_read,
-                                            const map<int, int> &available,
-                                            set<int> *minimum)
-{
-  set <int> available_chunks;
-  for (map<int, int>::const_iterator i = available.begin();
-       i != available.end();
-       ++i)
-    available_chunks.insert(i->first);
-  return minimum_to_decode(want_to_read, available_chunks, minimum);
-}
-
 int ErasureCodeIsa::encode_chunks(const set<int> &want_to_encode,
                                   map<int, bufferlist> *encoded)
 {
index 136ef5d5d62a16b5d81d2f18592c7691f31409ce..96e54428aa2eb2c433507798256a2bda03604ebf 100644 (file)
@@ -73,16 +73,9 @@ public:
 
   virtual unsigned int get_chunk_size(unsigned int object_size) const;
 
-  virtual int minimum_to_decode(const set<int> &want_to_read,
-                                const set<int> &available_chunks,
-                                set<int> *minimum);
   virtual int encode_chunks(const set<int> &want_to_encode,
                            map<int, bufferlist> *encoded);
 
-  virtual int minimum_to_decode_with_cost(const set<int> &want_to_read,
-                                          const map<int, int> &available,
-                                          set<int> *minimum);
-
   virtual int decode_chunks(const set<int> &want_to_read,
                            const map<int, bufferlist> &chunks,
                            map<int, bufferlist> *decoded);
index b35e0bb47d575b9da6e4f9d41251c91f4883d19e..7fe68668c6e5936d01c50a3833e02b80e6e81d27 100644 (file)
@@ -84,36 +84,6 @@ unsigned int ErasureCodeJerasure::get_chunk_size(unsigned int object_size) const
   }
 }
 
-int ErasureCodeJerasure::minimum_to_decode(const set<int> &want_to_read,
-                                           const set<int> &available_chunks,
-                                           set<int> *minimum) 
-{
-  if (includes(available_chunks.begin(), available_chunks.end(),
-              want_to_read.begin(), want_to_read.end())) {
-    *minimum = want_to_read;
-  } else {
-    if (available_chunks.size() < (unsigned)k)
-      return -EIO;
-    set<int>::iterator i;
-    unsigned j;
-    for (i = available_chunks.begin(), j = 0; j < (unsigned)k; ++i, j++)
-      minimum->insert(*i);
-  }
-  return 0;
-}
-
-int ErasureCodeJerasure::minimum_to_decode_with_cost(const set<int> &want_to_read,
-                                                     const map<int, int> &available,
-                                                     set<int> *minimum)
-{
-  set <int> available_chunks;
-  for (map<int, int>::const_iterator i = available.begin();
-       i != available.end();
-       ++i)
-    available_chunks.insert(i->first);
-  return minimum_to_decode(want_to_read, available_chunks, minimum);
-}
-
 int ErasureCodeJerasure::encode_chunks(const set<int> &want_to_encode,
                                       map<int, bufferlist> *encoded)
 {
index f7e5c3116b0f706790e966145928c612d6390a9f..9a554780dff310f02d091026a4272a2047694224 100644 (file)
@@ -52,16 +52,9 @@ public:
 
   virtual unsigned int get_chunk_size(unsigned int object_size) const;
 
-  virtual int minimum_to_decode(const set<int> &want_to_read,
-                                const set<int> &available_chunks,
-                                set<int> *minimum);
   virtual int encode_chunks(const set<int> &want_to_encode,
                            map<int, bufferlist> *encoded);
 
-  virtual int minimum_to_decode_with_cost(const set<int> &want_to_read,
-                                          const map<int, int> &available,
-                                          set<int> *minimum);
-
   virtual int decode_chunks(const set<int> &want_to_read,
                            const map<int, bufferlist> &chunks,
                            map<int, bufferlist> *decoded);
index 5a164bbfab77ed11dd20c014f168aa21892c7ca9..b7f35ac6496d4bc6b9a2e93e775b6e55870786d5 100644 (file)
@@ -357,8 +357,8 @@ int main(int argc, char **argv)
 
 /* 
  * Local Variables:
- * compile-command: "cd ../.. ; make -j4 && 
- *   make unittest_erasure_code_jerasure && 
+ * compile-command: "cd ../.. ;
+ *   make -j4 unittest_erasure_code_jerasure &&
  *   valgrind --tool=memcheck --leak-check=full \
  *      ./unittest_erasure_code_jerasure \
  *      --gtest_filter=*.* --log-to-stderr=true --debug-osd=20"