summaryrefslogtreecommitdiff
path: root/src/erasurecode_postprocessing.c
diff options
context:
space:
mode:
authorTushar Gohad <tushar.gohad@intel.com>2014-07-21 01:19:36 -0700
committerTushar Gohad <tushar.gohad@intel.com>2014-07-21 01:19:36 -0700
commit8a07d41e850694a3c60904119b899cf476c2b05e (patch)
tree306336fc4597c9e6255495ea8ccc32516b7dae94 /src/erasurecode_postprocessing.c
parent4de83981d33ec120e4ba1fcd7190256f353c12a3 (diff)
downloadliberasurecode-8a07d41e850694a3c60904119b899cf476c2b05e.tar.gz
Add encode postprocessing, checksum helpers
Signed-off-by: Tushar Gohad <tushar.gohad@intel.com>
Diffstat (limited to 'src/erasurecode_postprocessing.c')
-rw-r--r--src/erasurecode_postprocessing.c69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/erasurecode_postprocessing.c b/src/erasurecode_postprocessing.c
new file mode 100644
index 0000000..e086f2c
--- /dev/null
+++ b/src/erasurecode_postprocessing.c
@@ -0,0 +1,69 @@
+/*
+ * <Copyright>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice, this
+ * list of conditions and the following disclaimer in the documentation and/or
+ * other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY
+ * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * liberasurecode postprocessing helpers implementation
+ *
+ * vi: set noai tw=79 ts=4 sw=4:
+ */
+
+#include "erasurecode_backend.h"
+#include "erasurecode_helpers.h"
+#include "erasurecode_stdinc.h"
+
+int finalize_fragments_after_encode(ec_backend_t instance,
+ int k, int m, int blocksize,
+ char **encoded_data, char **encoded_parity)
+{
+ int i;
+ // int add_checksum = instance->args.uargs.inline_chksum;
+ int add_checksum = 1;
+ char *fragment = get_fragment_ptr_from_data(encoded_parity[0]);
+printf ("fragment = %p\n", fragment);
+ fragment = get_fragment_ptr_from_data(encoded_parity[1]);
+printf ("fragment = %p\n", fragment);
+
+ /* finalize data fragments */
+ for (i = 0; i < k; i++) {
+ char *fragment = get_fragment_ptr_from_data(encoded_data[i]);
+ set_fragment_idx(fragment, i);
+ if (add_checksum) {
+ int chksum = crc32(0, encoded_data[i], blocksize);
+ set_chksum(fragment, chksum);
+ }
+ encoded_data[i] = fragment;
+ }
+
+ /* finalize parity fragments */
+ for (i = 0; i < m; i++) {
+ char *fragment = get_fragment_ptr_from_data(encoded_parity[i]);
+ set_fragment_idx(fragment, i + k);
+ if (add_checksum) {
+ int chksum = crc32(0, encoded_parity[i], blocksize);
+ set_chksum(fragment, chksum);
+ }
+ encoded_parity[i] = fragment;
+ }
+
+ return 0;
+}
+