diff options
author | Vishwanath Venkatesan <vish@hdfgroup.org> | 2013-07-26 00:16:02 (GMT) |
---|---|---|
committer | Vishwanath Venkatesan <vish@hdfgroup.org> | 2013-07-26 00:16:02 (GMT) |
commit | 87a4f487eae1b116657922ce35633ae5ac39d452 (patch) | |
tree | 64da8bd0cc7d81302a8d78429d38d6b60cdd2527 | |
parent | 0721ed12752da7dc22044236da176b5902c83e54 (diff) | |
download | hdf5-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.c | 34 | ||||
-rw-r--r-- | src/H5VLiod_server.c | 9 |
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) |