summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVishwanath Venkatesan <vish@hdfgroup.org>2013-07-26 00:16:02 (GMT)
committerVishwanath Venkatesan <vish@hdfgroup.org>2013-07-26 00:16:02 (GMT)
commit87a4f487eae1b116657922ce35633ae5ac39d452 (patch)
tree64da8bd0cc7d81302a8d78429d38d6b60cdd2527
parent0721ed12752da7dc22044236da176b5902c83e54 (diff)
downloadhdf5-87a4f487eae1b116657922ce35633ae5ac39d452.zip
hdf5-87a4f487eae1b116657922ce35633ae5ac39d452.tar.gz
hdf5-87a4f487eae1b116657922ce35633ae5ac39d452.tar.bz2
[svn-r23935] Reads now go through the compactor. Have to work on getting the
short-circuiting done for the direct-match case.
-rw-r--r--src/H5VLiod_dset.c34
-rw-r--r--src/H5VLiod_server.c9
2 files changed, 38 insertions, 5 deletions
diff --git a/src/H5VLiod_dset.c b/src/H5VLiod_dset.c
index 67f58e1..8938f86 100644
--- a/src/H5VLiod_dset.c
+++ b/src/H5VLiod_dset.c
@@ -624,10 +624,11 @@ H5VL_iod_server_dset_read_cb(AXE_engine_t UNUSED axe_engine,
compactor *cqueue = (compactor *)_queue;
int i = 0;
herr_t ret_value = SUCCEED;
- request_list_t *wlist=NULL;
- dataset_container_t *dlist=NULL;
- int nentries = 0, ndatasets = 0;
+ request_list_t *wlist=NULL, *rlist=NULL;
+ dataset_container_t *dlist=NULL, *drlist=NULL;
+ int nentries = 0, ndatasets = 0, nrentries = 0, nrdatasets = 0;
iod_array_io_t *array_write = NULL;
+
FUNC_ENTER_NOAPI_NOINIT
#if DEBUG_COMPACTOR
@@ -655,11 +656,31 @@ H5VL_iod_server_dset_read_cb(AXE_engine_t UNUSED axe_engine,
#if DEBUG_COMPACTOR
if (ret_value != CP_SUCCESS){
- fprintf(stderr,"ERROR !! Compactor create request list failed with error %d \n",
+ fprintf(stderr,"ERROR !! Compactor create write request list failed with error %d \n",
+ ret_value);
+ }
+#endif
+
+
+ ret_value = H5VL_iod_create_request_list (cqueue,
+ &rlist,
+ &nrentries,
+ &drlist,
+ &nrdatasets,
+ READ);
+
+ #if DEBUG_COMPACTOR
+ if (ret_value != CP_SUCCESS){
+ fprintf(stderr,"ERROR !! Compactor create read request list failed with error %d \n",
ret_value);
}
+ fprintf (stderr,"nrentries: %d, nrdatasets: %d \n",
+ nrentries, nrdatasets);
+
#endif
+
+
array_write = (iod_array_io_t *) malloc (ndatasets *
sizeof (iod_array_io_t));
if (NULL == array_write){
@@ -678,11 +699,14 @@ H5VL_iod_server_dset_read_cb(AXE_engine_t UNUSED axe_engine,
}
}
- /*Call here iod_array_write_list
+ /*Call here "iod_array_write_list"
+
array_write array has been constructed.
The COH value can come from any of the list requests
+
Once that is done --> execute the func : H5VL_iod_server_send_result
This sends results to all the clients about their completion.
+
There is a flaw in the IOD construction of io_array_t datastructure.
They seem to have mem_desc and io_desc as pointers and there is no-way to specify
the number of descriptors!.. We need that to free the memory descriptors.
diff --git a/src/H5VLiod_server.c b/src/H5VLiod_server.c
index df41e8b..73109b8 100644
--- a/src/H5VLiod_server.c
+++ b/src/H5VLiod_server.c
@@ -1287,6 +1287,7 @@ H5VL_iod_server_dset_read(hg_handle_t handle)
op_data->hg_handle = handle;
op_data->input = (void *)input;
+#if 0
if(input->parent_axe_id) {
if (AXE_SUCCEED != AXEcreate_task(engine, input->axe_id,
1, &input->parent_axe_id, 0, NULL,
@@ -1298,6 +1299,14 @@ H5VL_iod_server_dset_read(hg_handle_t handle)
H5VL_iod_server_dset_read_cb, op_data, NULL))
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, HG_FAIL, "can't insert task into async engine");
}
+#endif
+
+#if 1
+ if(CP_SUCCESS != H5VL_iod_server_dset_compactor(op_data, READ)){
+ HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, HG_FAIL, "compactor task failed for READ\n");
+ }
+#endif
+
done:
FUNC_LEAVE_NOAPI(ret_value)