diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2001-11-21 15:09:47 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2001-11-21 15:09:47 (GMT) |
commit | 2edb830946409536432d28520284e4b5eec2d32e (patch) | |
tree | a13ab2258b4e7ccfe4135b3b7fc2ea04f536c732 /src/H5Farray.c | |
parent | cdffac61e52cbee121205da162c6fb75954c2734 (diff) | |
download | hdf5-2edb830946409536432d28520284e4b5eec2d32e.zip hdf5-2edb830946409536432d28520284e4b5eec2d32e.tar.gz hdf5-2edb830946409536432d28520284e4b5eec2d32e.tar.bz2 |
[svn-r4633] Purpose:
Bug fix.
Description:
Builds for parallel testing exposed some places that I forgot to get rid of
using IDs in internal APIs.
Solution:
Switch sections of code to use proper data structures instead of IDs.
Platforms tested:
Parallel compiles from daily tests.
Diffstat (limited to 'src/H5Farray.c')
-rw-r--r-- | src/H5Farray.c | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/src/H5Farray.c b/src/H5Farray.c index 58c6239..5874b67 100644 --- a/src/H5Farray.c +++ b/src/H5Farray.c @@ -150,6 +150,7 @@ H5F_arr_read(H5F_t *f, hid_t dxpl_id, const struct H5O_layout_t *layout, hbool_t carray; /*carry for subtraction */ #ifdef H5_HAVE_PARALLEL H5FD_mpio_xfer_t xfer_mode=H5FD_MPIO_INDEPENDENT; + H5P_genplist_t *plist=NULL; /* Property list */ #endif #ifdef COALESCE_READS unsigned gather_reads; /* # of MPIO reads to gather */ @@ -178,14 +179,18 @@ H5F_arr_read(H5F_t *f, hid_t dxpl_id, const struct H5O_layout_t *layout, H5FD_mpio_dxpl_t *dx; hid_t driver_id; /* VFL driver ID */ + /* Get the plist structure */ + if(NULL == (plist = H5I_object(dxpl_id))) + HRETURN_ERROR(H5E_ATOM, H5E_BADATOM, NULL, "can't find object for ID"); + /* Get the driver ID */ - if(H5P_get(dxpl_id, H5D_XFER_VFL_ID_NAME, &driver_id)<0) + if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &driver_id)<0) HRETURN_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver ID"); /* Check if we are using the MPIO driver */ if(H5FD_MPIO==driver_id) { /* Get the driver information */ - if(H5P_get(dxpl_id, H5D_XFER_VFL_INFO_NAME, &dx)<0) + if(H5P_get(plist, H5D_XFER_VFL_INFO_NAME, &dx)<0) HRETURN_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver info"); /* Check if we are not using independent I/O */ @@ -195,11 +200,8 @@ H5F_arr_read(H5F_t *f, hid_t dxpl_id, const struct H5O_layout_t *layout, } /* Collective MPIO access is unsupported for non-contiguous datasets */ - if (H5D_CONTIGUOUS!=layout->type && H5FD_MPIO_COLLECTIVE==xfer_mode) { - HRETURN_ERROR (H5E_DATASET, H5E_READERROR, FAIL, - "collective access on non-contiguous datasets not " - "supported yet"); - } + if (H5D_CONTIGUOUS!=layout->type && H5FD_MPIO_COLLECTIVE==xfer_mode) + HRETURN_ERROR (H5E_DATASET, H5E_READERROR, FAIL, "collective access on non-contiguous datasets not supported yet"); #endif #ifdef QAK { @@ -306,10 +308,9 @@ H5F_arr_read(H5F_t *f, hid_t dxpl_id, const struct H5O_layout_t *layout, #endif /* QAK */ #ifdef COALESCE_READS for (z=0, gather_reads = nelmts - 1; z<nelmts; z++, gather_reads--) { - - /* Track the number of reads to gather */ - if(H5P_set(dxpl_id, H5D_XFER_GATHER_READS_NAME, &gather_reads)<0) - HRETURN_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve gather reads"); + /* Track the number of reads to gather */ + if(H5P_set(plist, H5D_XFER_GATHER_READS_NAME, &gather_reads)<0) + HRETURN_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve gather reads"); #else for (z=0; z<nelmts; z++) { @@ -440,6 +441,7 @@ H5F_arr_write(H5F_t *f, hid_t dxpl_id, const struct H5O_layout_t *layout, hbool_t carray; /*carry for subtraction */ #ifdef H5_HAVE_PARALLEL H5FD_mpio_xfer_t xfer_mode=H5FD_MPIO_INDEPENDENT; + H5P_genplist_t *plist=NULL; /* Property list */ #endif FUNC_ENTER(H5F_arr_write, FAIL); @@ -465,14 +467,18 @@ H5F_arr_write(H5F_t *f, hid_t dxpl_id, const struct H5O_layout_t *layout, H5FD_mpio_dxpl_t *dx; hid_t driver_id; /* VFL driver ID */ + /* Get the plist structure */ + if(NULL == (plist = H5I_object(dxpl_id))) + HRETURN_ERROR(H5E_ATOM, H5E_BADATOM, NULL, "can't find object for ID"); + /* Get the driver ID */ - if(H5P_get(dxpl_id, H5D_XFER_VFL_ID_NAME, &driver_id)<0) + if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &driver_id)<0) HRETURN_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver ID"); /* Check if we are using the MPIO driver */ if(H5FD_MPIO==driver_id) { /* Get the driver information */ - if(H5P_get(dxpl_id, H5D_XFER_VFL_INFO_NAME, &dx)<0) + if(H5P_get(plist, H5D_XFER_VFL_INFO_NAME, &dx)<0) HRETURN_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver info"); /* Check if we are not using independent I/O */ @@ -481,11 +487,8 @@ H5F_arr_write(H5F_t *f, hid_t dxpl_id, const struct H5O_layout_t *layout, } /* end if */ } - if (H5D_CONTIGUOUS!=layout->type && H5FD_MPIO_COLLECTIVE==xfer_mode) { - HRETURN_ERROR (H5E_DATASET, H5E_WRITEERROR, FAIL, - "collective access on non-contiguous datasets not " - "supported yet"); - } + if (H5D_CONTIGUOUS!=layout->type && H5FD_MPIO_COLLECTIVE==xfer_mode) + HRETURN_ERROR (H5E_DATASET, H5E_WRITEERROR, FAIL, "collective access on non-contiguous datasets not supported yet"); #endif #ifdef QAK |