summaryrefslogtreecommitdiffstats
path: root/src/H5Fseq.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2002-07-15 15:21:32 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2002-07-15 15:21:32 (GMT)
commit363ec52b7cab5638e3d1479b67068754a2e10011 (patch)
tree23fb21609fb9a9bbadfee4c13d27326df0413d4b /src/H5Fseq.c
parentc3b0c0f3c4ed622450862fdfd2ade5eb96d4ef1a (diff)
downloadhdf5-363ec52b7cab5638e3d1479b67068754a2e10011.zip
hdf5-363ec52b7cab5638e3d1479b67068754a2e10011.tar.gz
hdf5-363ec52b7cab5638e3d1479b67068754a2e10011.tar.bz2
[svn-r5799] Purpose:
New feature. Description: Added MPI-posix VFL driver. This driver uses MPI to coordinate actions, but performs I/O directly with posix sec(2) I/O functions. This driver should _NOT_ be used if the file accessed is not on a parallel filesystem. Platforms tested: FreeBSD 4.6 (sleipnir) w/parallel & IRIX64 6.5 (modi4) w/parallel
Diffstat (limited to 'src/H5Fseq.c')
-rw-r--r--src/H5Fseq.c79
1 files changed, 42 insertions, 37 deletions
diff --git a/src/H5Fseq.c b/src/H5Fseq.c
index 0a4da84..8f988ff 100644
--- a/src/H5Fseq.c
+++ b/src/H5Fseq.c
@@ -26,8 +26,9 @@
#include "H5Pprivate.h"
#include "H5Vprivate.h"
-/* MPIO driver functions are needed for some special checks */
+/* MPIO & MPIPOSIX driver functions are needed for some special checks */
#include "H5FDmpio.h"
+#include "H5FDmpiposix.h"
/* Interface initialization */
#define PABLO_MASK H5Fseq_mask
@@ -182,27 +183,29 @@ H5F_seq_readv(H5F_t *f, hid_t dxpl_id, const H5O_layout_t *layout,
#ifdef H5_HAVE_PARALLEL
{
- /* Get the transfer mode */
H5FD_mpio_dxpl_t *dx;
hid_t driver_id; /* VFL driver ID */
- /* Get the plist structure */
- if(NULL == (plist = H5I_object(dxpl_id)))
- HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
-
- /* Get the driver ID */
- if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &driver_id)<0)
- HGOTO_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(plist, H5D_XFER_VFL_INFO_NAME, &dx)<0)
- HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver info");
-
- /* Check if we are not using independent I/O */
- if(H5FD_MPIO_INDEPENDENT!=dx->xfer_mode)
- xfer_mode = dx->xfer_mode;
+ /* Get the transfer mode for MPIO transfers */
+ if(IS_H5FD_MPIO(f)) {
+ /* Get the plist structure */
+ if(NULL == (plist = H5I_object(dxpl_id)))
+ HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+
+ /* Get the driver ID */
+ if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &driver_id)<0)
+ HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver ID");
+
+ /* Check if we are using the MPIO driver (for the DXPL) */
+ if(H5FD_MPIO==driver_id) {
+ /* Get the driver information */
+ if(H5P_get(plist, H5D_XFER_VFL_INFO_NAME, &dx)<0)
+ HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver info");
+
+ /* Check if we are not using independent I/O */
+ if(H5FD_MPIO_INDEPENDENT!=dx->xfer_mode)
+ xfer_mode = dx->xfer_mode;
+ } /* end if */
} /* end if */
}
@@ -564,27 +567,29 @@ H5F_seq_writev(H5F_t *f, hid_t dxpl_id, const H5O_layout_t *layout,
#ifdef H5_HAVE_PARALLEL
{
- /* Get the transfer mode */
H5FD_mpio_dxpl_t *dx;
hid_t driver_id; /* VFL driver ID */
- /* Get the plist structure */
- if(NULL == (plist = H5I_object(dxpl_id)))
- HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
-
- /* Get the driver ID */
- if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &driver_id)<0)
- HGOTO_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(plist, H5D_XFER_VFL_INFO_NAME, &dx)<0)
- HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver info");
-
- /* Check if we are not using independent I/O */
- if(H5FD_MPIO_INDEPENDENT!=dx->xfer_mode)
- xfer_mode = dx->xfer_mode;
+ /* Get the transfer mode for MPIO transfers */
+ if(IS_H5FD_MPIO(f)) {
+ /* Get the plist structure */
+ if(NULL == (plist = H5I_object(dxpl_id)))
+ HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+
+ /* Get the driver ID */
+ if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &driver_id)<0)
+ HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver ID");
+
+ /* Check if we are using the MPIO driver (for the DXPL) */
+ if(H5FD_MPIO==driver_id) {
+ /* Get the driver information */
+ if(H5P_get(plist, H5D_XFER_VFL_INFO_NAME, &dx)<0)
+ HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver info");
+
+ /* Check if we are not using independent I/O */
+ if(H5FD_MPIO_INDEPENDENT!=dx->xfer_mode)
+ xfer_mode = dx->xfer_mode;
+ } /* end if */
} /* end if */
}