summaryrefslogtreecommitdiffstats
path: root/src/H5Smpio.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2001-08-10 20:47:05 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2001-08-10 20:47:05 (GMT)
commit95862451f78960cab031031011e5c6a131e0d026 (patch)
tree391101ca102fbecbfe9cee1f608b90bb87d49b1a /src/H5Smpio.c
parent4049965d1337bc54a21a4d3af71aa793e4baf029 (diff)
downloadhdf5-95862451f78960cab031031011e5c6a131e0d026.zip
hdf5-95862451f78960cab031031011e5c6a131e0d026.tar.gz
hdf5-95862451f78960cab031031011e5c6a131e0d026.tar.bz2
[svn-r4324] Purpose:
New Features! Description: Start migrating the internal use of property lists in the library from the older implementation to the new generic property lists. Currently, only the dataset transfer property lists are migrated to the new architecture, all the rest of the property list types are still using the older architecture. Also, the backward compatibility features are not implemented yet, so applications which use dataset transfer properties may need to make the following changes: H5Pcreate(H5P_DATASET_XFER) -> H5Pcreate_list(H5P_DATASET_XFER_NEW) and H5Pclose(<a dataset transfer property list>) -> H5Pclose_list(id) This still may have some bugs in it, especially with Fortran, but I should be wrapping up those later today. Platforms tested: FreeBSD 4.4 (hawkwind)
Diffstat (limited to 'src/H5Smpio.c')
-rw-r--r--src/H5Smpio.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/src/H5Smpio.c b/src/H5Smpio.c
index 63a1347..16bbda7 100644
--- a/src/H5Smpio.c
+++ b/src/H5Smpio.c
@@ -575,6 +575,9 @@ H5S_mpio_spaces_xfer(H5F_t *f, const struct H5O_layout_t *layout,
assert (mem_space);
assert (buf);
assert (IS_H5FD_MPIO(f));
+ /* Make certain we have the correct type of property list */
+ assert(H5I_GENPROP_LST==H5I_get_type(dxpl_id));
+ assert(TRUE==H5Pisa_class(dxpl_id,H5P_DATASET_XFER_NEW));
/* INCOMPLETE!!! rky 980816 */
/* Currently can only handle H5D_CONTIGUOUS layout */
@@ -601,18 +604,24 @@ H5S_mpio_spaces_xfer(H5F_t *f, const struct H5O_layout_t *layout,
* the following block of code, though with the right idea, is not
* correct yet.
*/
- { /* Get the transfer mode */
- H5D_xfer_t *dxpl;
- H5FD_mpio_dxpl_t *dx;
-
- if (H5P_DEFAULT!=dxpl_id && (dxpl=H5I_object(dxpl_id)) &&
- H5FD_MPIO==dxpl->driver_id && (dx=dxpl->driver_info) &&
- H5FD_MPIO_COLLECTIVE==dx->xfer_mode) {
- /* let it fall through */
- }else{
+ {
+ /* Get the transfer mode */
+ H5FD_mpio_dxpl_t *dx;
+ hid_t driver_id; /* VFL driver ID */
+
+ /* Get the driver ID */
+ if(H5P_get(dxpl_id, H5D_XFER_VFL_ID_NAME, &driver_id)<0)
+ HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver ID");
+
+ /* Get the driver information */
+ if(H5P_get(dxpl_id, H5D_XFER_VFL_INFO_NAME, &dx)<0)
+ HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver info");
+
+ /* Check if we are using the MPIO driver */
+ if(H5FD_MPIO!=driver_id || H5FD_MPIO_COLLECTIVE!=dx->xfer_mode) {
*must_convert = 1; /* can't do optimized xfer; do the old way */
HGOTO_DONE(SUCCEED);
- }
+ } /* end if */
}
#endif