- remove strip_size since it can be deduced from passed struct fec *ctx
- remove nr_stripe because nr_stripe for the buffer as a whole is always fixed
  and there is no use case to decode a partial buffer.

Signed-off-by: Liu Yuan <[email protected]>
---
 dog/vdi.c        |    7 ++-----
 include/fec.h    |    3 ++-
 lib/fec.c        |    5 +++--
 sheep/recovery.c |    4 +---
 4 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/dog/vdi.c b/dog/vdi.c
index 08f154e..dc3d1f1 100644
--- a/dog/vdi.c
+++ b/dog/vdi.c
@@ -1556,7 +1556,6 @@ static void check_erasure_object(struct vdi_check_info 
*info)
        int dp = ec_policy_to_dp(info->copy_policy, &d, &p);
        struct fec *ctx = ec_init(d, dp);
        int miss_idx[dp], input_idx[dp];
-       size_t strip_size = SD_EC_DATA_STRIPE_SIZE / d;
        uint64_t oid = info->oid;
        size_t len = get_store_objsize(info->copy_policy, oid);
        char *obj = xmalloc(len);
@@ -1584,8 +1583,7 @@ static void check_erasure_object(struct vdi_check_info 
*info)
                        uint8_t *ds[d];
                        for (j = 0; j < d; j++)
                                ds[j] = info->vcw[j].buf;
-                       ec_decode_buffer(ctx, ds, idx, obj, d + k, strip_size,
-                                        SD_EC_NR_STRIPE_PER_OBJECT);
+                       ec_decode_buffer(ctx, ds, idx, obj, d + k);
                        if (memcmp(obj, info->vcw[d + k].buf, len) != 0) {
                                /* TODO repair the inconsistency */
                                sd_err("object %"PRIx64" is inconsistent", oid);
@@ -1603,8 +1601,7 @@ static void check_erasure_object(struct vdi_check_info 
*info)
 
                        for (i = 0; i < d; i++)
                                ds[i] = input[i];
-                       ec_decode_buffer(ctx, ds, input_idx, obj, m, strip_size,
-                                        SD_EC_NR_STRIPE_PER_OBJECT);
+                       ec_decode_buffer(ctx, ds, input_idx, obj, m);
                        write_object_to(info->vcw[m].vnode, oid, obj, true,
                                        info->vcw[m].ec_index);
                        fprintf(stdout, "fixed missing %"PRIx64", "
diff --git a/include/fec.h b/include/fec.h
index 1a61671..0297f33 100644
--- a/include/fec.h
+++ b/include/fec.h
@@ -63,6 +63,7 @@
 #include <stdint.h>
 
 #include "util.h"
+#include "sheepdog_proto.h"
 
 struct fec {
        unsigned long magic;
@@ -197,5 +198,5 @@ static inline void ec_destroy(struct fec *ctx)
 }
 
 void ec_decode_buffer(struct fec *ctx, uint8_t *input[], const int in_idx[],
-                     char *buf, int idx, size_t strip_size, int nr_stripe);
+                     char *buf, int idx);
 #endif
diff --git a/lib/fec.c b/lib/fec.c
index 7c1c57d..7d897e4 100644
--- a/lib/fec.c
+++ b/lib/fec.c
@@ -683,11 +683,12 @@ out:
 }
 
 void ec_decode_buffer(struct fec *ctx, uint8_t *input[], const int in_idx[],
-                     char *buf, int idx, size_t strip_size, int nr_stripe)
+                     char *buf, int idx)
 {
        int i, j, d = ctx->d;
+       size_t strip_size = SD_EC_DATA_STRIPE_SIZE / d;
 
-       for (i = 0; i < nr_stripe; i++) {
+       for (i = 0; i < SD_EC_NR_STRIPE_PER_OBJECT; i++) {
                const uint8_t *in[d];
                uint8_t out[strip_size];
 
diff --git a/sheep/recovery.c b/sheep/recovery.c
index 37dde3c..39ca2b1 100644
--- a/sheep/recovery.c
+++ b/sheep/recovery.c
@@ -423,9 +423,7 @@ static void *rebuild_erasure_object(uint64_t oid, uint8_t 
idx,
        }
 
        /* Rebuild the lost replica */
-       ec_decode_buffer(ctx, bufs, idxs, lost, idx,
-                        SD_EC_DATA_STRIPE_SIZE / ed,
-                        SD_EC_NR_STRIPE_PER_OBJECT);
+       ec_decode_buffer(ctx, bufs, idxs, lost, idx);
 out:
        ec_destroy(ctx);
        for (i = 0; i < ed; i++)
-- 
1.7.9.5

-- 
sheepdog mailing list
[email protected]
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to