]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
erasure code: use a function for the chunk mapping index
authorJanne Grunau <j@jannau.net>
Mon, 29 Sep 2014 12:34:30 +0000 (14:34 +0200)
committerLoic Dachary <loic-201408@dachary.org>
Tue, 21 Oct 2014 17:33:45 +0000 (10:33 -0700)
src/erasure-code/ErasureCode.cc
src/erasure-code/ErasureCode.h

index 5953f496392bc0103ad6ddbae85f610087fd6967..8b6c57f1eef271a4e277a5647378c82c99e4bf00 100644 (file)
 #include "common/strtol.h"
 #include "ErasureCode.h"
 
+int ErasureCode::chunk_index(unsigned int i) const
+{
+  return chunk_mapping.size() > i ? chunk_mapping[i] : i;
+}
+
 int ErasureCode::minimum_to_decode(const set<int> &want_to_read,
                                    const set<int> &available_chunks,
                                    set<int> *minimum)
@@ -85,8 +90,7 @@ int ErasureCode::encode(const set<int> &want_to_encode,
     return err;
   unsigned blocksize = get_chunk_size(in.length());
   for (unsigned int i = 0; i < k + m; i++) {
-    int chunk_index = chunk_mapping.size() > 0 ? chunk_mapping[i] : i;
-    bufferlist &chunk = (*encoded)[chunk_index];
+    bufferlist &chunk = (*encoded)[chunk_index(i)];
     chunk.substr_of(out, i * blocksize, blocksize);
   }
   encode_chunks(want_to_encode, encoded);
@@ -223,15 +227,13 @@ int ErasureCode::decode_concat(const map<int, bufferlist> &chunks,
   set<int> want_to_read;
 
   for (unsigned int i = 0; i < get_data_chunk_count(); i++) {
-    int chunk = chunk_mapping.size() > i ? chunk_mapping[i] : i;
-    want_to_read.insert(chunk);
+    want_to_read.insert(chunk_index(i));
   }
   map<int, bufferlist> decoded_map;
   int r = decode(want_to_read, chunks, &decoded_map);
   if (r == 0) {
     for (unsigned int i = 0; i < get_data_chunk_count(); i++) {
-      int chunk = chunk_mapping.size() > i ? chunk_mapping[i] : i;
-      decoded->claim_append(decoded_map[chunk]);
+      decoded->claim_append(decoded_map[chunk_index(i)]);
     }
   }
   return r;
index 7aaea951713b6b753cd2bd4d4fc5ea838be1cd06..ab00120126704881c6b5553f961281a8d5aabc1c 100644 (file)
@@ -85,6 +85,9 @@ namespace ceph {
 
     virtual int decode_concat(const map<int, bufferlist> &chunks,
                              bufferlist *decoded);
+
+  private:
+    int chunk_index(unsigned int i) const;
   };
 }