summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTushar Gohad <tushar.gohad@intel.com>2014-07-16 13:27:13 -0700
committerTushar Gohad <tushar.gohad@intel.com>2014-07-16 13:34:53 -0700
commit1a795da4a1f58e1e946d1bdd3b0693fc4906e87f (patch)
tree9a06c9c131e60be478a7aec5c911886351f02381 /src
parent05e65c3f96d54f7ddbbd0318ad6479011b6f02c6 (diff)
downloadliberasurecode-1a795da4a1f58e1e946d1bdd3b0693fc4906e87f.tar.gz
Store args natively in the backend_args (not as a pointer)
Signed-off-by: Tushar Gohad <tushar.gohad@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/backends/xor/flat_xor_hd.c6
-rw-r--r--src/erasurecode.c14
2 files changed, 11 insertions, 9 deletions
diff --git a/src/backends/xor/flat_xor_hd.c b/src/backends/xor/flat_xor_hd.c
index 90d4b7b..6236ec6 100644
--- a/src/backends/xor/flat_xor_hd.c
+++ b/src/backends/xor/flat_xor_hd.c
@@ -69,9 +69,9 @@ static int flat_xor_hd_min_fragments(void *desc, int (*fptr)(),
static void * flat_xor_hd_init(struct ec_backend_args *args)
{
- int k = args->uargs->k;
- int m = args->uargs->m;
- int hd = args->uargs->priv_args1.flat_xor_hd_args.hd;
+ int k = args->uargs.k;
+ int m = args->uargs.m;
+ int hd = args->uargs.priv_args1.flat_xor_hd_args.hd;
void *desc = (void *) init_xor_hd_code(k, m, hd);
return desc;
diff --git a/src/erasurecode.c b/src/erasurecode.c
index 3991acc..91ee17b 100644
--- a/src/erasurecode.c
+++ b/src/erasurecode.c
@@ -213,6 +213,7 @@ int liberasurecode_instance_create(const char *backend_name,
{
int err = 0;
ec_backend_t instance = NULL;
+ struct ec_backend_args bargs;
ec_backend_id_t id = liberasurecode_backend_lookup_id(backend_name);
if (-1 == id)
@@ -225,7 +226,8 @@ int liberasurecode_instance_create(const char *backend_name,
/* Copy common backend, args struct */
instance->common = ec_backends_supported[id]->common;
- instance->args = (struct ec_backend_args *) args;
+ memcpy(&(bargs.uargs), args, sizeof (struct ec_args));
+ instance->args = bargs;
/* Open backend .so if not already open */
/* .so handle is returned in instance->backend_sohandle */
@@ -237,7 +239,7 @@ int liberasurecode_instance_create(const char *backend_name,
}
/* Call private init() for the backend */
- instance->backend_desc = instance->common.ops->init(instance->args);
+ instance->backend_desc = instance->common.ops->init(&instance->args);
/* Register instance and return a descriptor/instance id */
instance->instance_desc = liberasurecode_backend_instance_register(instance);
@@ -356,7 +358,7 @@ int liberasurecode_encode(int desc,
/* call the backend encode function passing it fptr */
ret = instance->common.ops->encode(
- instance->backend_desc, fptr, instance->args,
+ instance->backend_desc, fptr, &instance->args,
encoded_data, encoded_parity, blocksize);
out_error:
@@ -399,7 +401,7 @@ int liberasurecode_decode(int desc,
/* call the backend encode function passing it fptr */
ret = instance->common.ops->decode(
- instance->backend_desc, fptr, instance->args,
+ instance->backend_desc, fptr, &instance->args,
data, parity, missing_idxs, blocksize);
out_error:
@@ -444,7 +446,7 @@ int liberasurecode_reconstruct_fragment(int desc,
/* call the backend encode function passing it fptr */
ret = instance->common.ops->reconstruct(
- instance->backend_desc, fptr, instance->args,
+ instance->backend_desc, fptr, &instance->args,
data, parity, missing_idxs, destination_idx, blocksize);
out_error:
@@ -481,7 +483,7 @@ int liberasurecode_fragments_needed(int desc, int *missing_idxs,
/* call the backend encode function passing it fptr */
ret = instance->common.ops->fragments_needed(
- instance->backend_desc, fptr, instance->args,
+ instance->backend_desc, fptr, &instance->args,
missing_idxs, fragments_needed);
out_error: