Compare commits

...

41 Commits

Author SHA1 Message Date
Albert Cheng
a81072047a [svn-r23191] Version changed to 1.8.10-patch1 and released. 2013-01-22 20:19:41 -05:00
Albert Cheng
abc9e47211 [svn-r23189] Updated for v1.8.10-patch1 release. 2013-01-22 10:58:18 -05:00
Albert Cheng
5378648f38 [svn-r23183] cmakehdf5 is a build command script similar to buildhdf5.
This has been developed and tested in the trunk branch and is
now made available in the v1.8.10 branch.

Tested: Linux (Jam), linux 64 (koala), ppc64 (ostrich), Mac (fred, duck and Owl) passed.
Failed in SunOS (linew). Will fix when the new Sun is available.
2013-01-21 23:01:17 -05:00
Allen Byrne
a722448cd1 [svn-r23156] HDFFV-8286: changed comments from // to /* */ 2013-01-14 10:48:45 -05:00
Dana Robinson
aa51f3eab8 [svn-r23143] Purpose:
Merged 23142 from the 1.8 branch.
    (Core VFD and Mac OS X I/O changes for patch 1)

Tested on:
    64-bit Windows 7, Visual Studio 2010, CMake
    64-bit Mac OS X Snow Leopard (Fred), Fortran, C++
    64-bit BE Linux (Ostrich), Fortran, C++
    32-bit LE LInux (jam), Fortran, C++ (also parallel w/ Fortran)
2013-01-07 21:47:01 -05:00
Albert Cheng
cd9872b0b6 [svn-r23108] Bug fix: HDFFV-8233
testh5stat.sh fails in LLNL uDawn. The test actually ran as expected
but it did not prepare for the extra error messages from the MPI
process.

Solution:
This sort of problem has been fixed by using the output filters in
output_filter.sh. testh5stat.sh is updated to use the output filters.

Tested:
uDawn, aztec.
2012-12-17 10:55:38 -05:00
Allen Byrne
244b942437 [svn-r23106] Update cmake definitions to correct implementation as tested on 1.8 branch 2012-12-17 08:46:38 -05:00
Jonathan Kim
7316eacf78 [svn-r23102] Purpose:
HDFFV-8145 h5diff slowness with version >= 1.8.7

Description:
    Fixed slowness when comparing HDF5 files with many attributes. 
    Much slower performance was identified with later release version 
    (from 1.8.7 to 1.8.10) compared to 1.8.6. The issue was introduced 
    from fixing an attribute related bug for 1.8.7 release in the past.
    Merged from HDF5 1.8 r22934.
    
Tested: 
    jam (linux32-LE), koala (linux64-LE), ostrich (linuxppc64-BE), fred (mac64-LE), linew (solaris-BE), cmake (jam)
2012-12-13 18:55:52 -05:00
Albert Cheng
46b3fba39e [svn-r23100] Added a section called "Bug Fixes since HDF5-1.8.10" to hold bug fixes for
v1.8.10-patch1.

Tested: visual inspection.
2012-12-13 15:52:56 -05:00
Albert Cheng
fdb4afa9c0 [svn-r23099] Post release maintenance: change version to 1.8.10-post1.
Tested: h5committested.
2012-12-13 15:07:25 -05:00
Albert Cheng
545c05fee3 [svn-r22980] Release v1.8.10 tarball created. 2012-10-26 19:46:24 -05:00
Albert Cheng
28f8d9231f [svn-r22979] Set the version information to 1.8.10 for release. 2012-10-26 19:14:40 -05:00
Albert Cheng
4088f72f29 [svn-r22978] Updated the Fortran 2003 support status for all platforms. 2012-10-26 19:11:34 -05:00
Jonathan Kim
ec44b28d9e [svn-r22974] Update jam and koala sections for release 1.8.10. Update mpich version. Remove invalid extra info from configure tables and clean ups. 2012-10-26 12:07:56 -05:00
Dana Robinson
1248b6a632 [svn-r22973] Purpose:
Update RELEASE.txt

Testing:
	N/A
2012-10-26 11:33:51 -05:00
Albert Cheng
b01c140736 [svn-r22972] Removed MINGW problem. Allen said it is not a problem any more. 2012-10-26 11:29:35 -05:00
Albert Cheng
9afd83c1cb [svn-r22971] Updates:
The file_image test problem is fixed.

The following known issues are removed since the machines or compilers
involved are not tested any more because of various reasons such as
compiler versions are too old, machines have retired, etc.

PathScale MPI implementation
Red Storm, a Cray XT3 system
mpich old versions
IBM older systems
2012-10-26 06:12:19 -05:00
Albert Cheng
99d8998eb3 [svn-r22970] updated compiler information for Snow leopard (Fred and Tejeda). 2012-10-26 03:57:21 -05:00
Mark Evans
3ec97c62cb [svn-r22969] Fixed a typo. No testing necessary. 2012-10-25 17:09:50 -05:00
Albert Cheng
295fc6270e [svn-r22968] Updated with new uDawn failure in h5stat test script. 2012-10-25 14:42:11 -05:00
Mike McGreevy
231456fb5f [svn-r22963] Remove ember and forge from RELEASE.txt - they are retired. 2012-10-25 07:54:19 -05:00
Albert Cheng
14fe0317db [svn-r22961] After discussing with Elena, we agreed there should be a distinction
between supported platforms (aka contract obligation) and Tested platforms
which are machines not paid for but we think it benefits us for doing
testing on them.

So, I divided up the previous "Platforms Tested" list into
"Supported Platforms" and "More Tested Platforms".
The feature summary shows only supported platforms.


Let me know if I have made any mistakes.
2012-10-24 17:18:04 -05:00
Albert Cheng
6ed9173ecd [svn-r22960] Updated with the fix of dt_arith failure in Lion and Mountain Lion systems. 2012-10-24 11:06:29 -05:00
Jonathan Kim
ed01385375 [svn-r22957] Update for jam and koala sections. Also removed a couple of entries from known issues section. 2012-10-23 16:15:01 -05:00
Albert Cheng
10366ba116 [svn-r22954] Update the compiler information of Mac Lion and Mountain Lion
systems.
2012-10-23 13:40:27 -05:00
Raymond Lu
e04b9b47d9 [svn-r22947] I updated the information that the dt_arith test reports several errors involving "long double" on
Mac OS X 10.7 Lion when any level of optimization is enabled.
2012-10-22 17:02:05 -05:00
Allen Byrne
f8172fa692 [svn-r22940] Updated linux VM build system used 2012-10-22 10:22:45 -05:00
Dana Robinson
a5630d1093 [svn-r22938] Purpose:
Reorganize old Windows documents.

Tested on:
	N/A (docs only), ran bin/chkmanifest
2012-10-21 22:16:03 -05:00
Quincey Koziol
74af9ca093 [svn-r22930] Description:
Update FreeBSD info.
2012-10-19 14:49:30 -05:00
Larry Knox
b53552a536 [svn-r22925] Revert change to h5fc.in (3 line comment + 1 line ineffective code) that was inadvertently merged from trunk before it was reverted there.
Tested with h5committest, make install and make installcheck on jam koala and ostrich.
2012-10-18 16:51:30 -05:00
Albert Cheng
f1ec0ee395 [svn-r22923] Updated LLNL aztec information.
Tested: just eyeballed.
2012-10-18 16:37:42 -05:00
Albert Cheng
2df9918c57 [svn-r22920] Changed the version number to match the release version (1.8.10).
Tested: LLNL release testing in Aztec (linux 64 machine).
2012-10-18 14:42:20 -05:00
Albert Cheng
f527bb1863 [svn-r22917] Increment the version number to 1.8.10-pre2 after v1.8.10-pre1 tarball is created and released.
Prepared for second round if needed.

Tested: should work. Will post-commit test it.
2012-10-17 17:19:35 -05:00
Mohamad Chaarawi
42fa89b60d [svn-r22913] update build environment for Hopper
Mark tests as passed
2012-10-17 12:05:37 -05:00
Mark Evans
2ace2845e5 [svn-r22912] Edited for readability.
No testing required.
2012-10-17 11:05:42 -05:00
Mark Evans
f2e1c3354d [svn-r22911] Edited for readability.
No testing required.
2012-10-17 09:43:13 -05:00
Raymond Lu
159f6633a4 [svn-r22909] Update compiler information for ostrich.
No test is needed.
2012-10-16 16:47:33 -05:00
Raymond Lu
93f524713c [svn-r22907] Update the GNU Fortran compiler for fred.
No test is needed.
2012-10-16 16:33:07 -05:00
Albert Cheng
5ffb018405 [svn-r22893] Prepare for v1.8.10 release.
Update version to 1.8.10-pre1
Change default configure mode from 'development' to 'production'

Tested on jam.
2012-10-12 14:10:55 -05:00
Albert Cheng
beb4ef159d [svn-r22890] Copy finished RELEASE.txt from the 1.8.8 branch
to 1.8's HISTORY-1_8.txt file.
2012-10-12 03:42:58 -05:00
Scot Breitenfeld
5c9749559f [svn-r22888] Added bug fixes and enhancements since the last release. 2012-10-11 23:03:46 -05:00
28 changed files with 1913 additions and 1082 deletions

View File

@@ -281,10 +281,10 @@ SET (H5_ENABLE_SHARED_LIB NO)
SET (H5_ENABLE_STATIC_LIB NO)
IF (BUILD_SHARED_LIBS)
SET (LIB_TYPE SHARED)
ADD_DEFINITIONS (-DH5_BUILT_AS_DYNAMIC_LIB)
SET (H5_BUILT_AS_DYNAMIC_LIB 1)
SET (H5_ENABLE_SHARED_LIB YES)
ELSE (BUILD_SHARED_LIBS)
ADD_DEFINITIONS (-DH5_BUILT_AS_STATIC_LIB)
SET (H5_BUILT_AS_STATIC_LIB 1)
SET (H5_ENABLE_STATIC_LIB YES)
IF (NOT WIN32)
# should this be a user setting : Everyone uses it anyway ?
@@ -560,9 +560,9 @@ IF (HDF5_ENABLE_Z_LIB_SUPPORT)
IF (NOT H5_ZLIB_HEADER)
IF (NOT ZLIB_USE_EXTERNAL)
FIND_PACKAGE (ZLIB NAMES ${ZLIB_PACKAGE_NAME}${HDF_PACKAGE_EXT})
IF (NOT ZLIB_FOUND)
FIND_PACKAGE (ZLIB) # Legacy find
ENDIF (NOT ZLIB_FOUND)
IF (NOT ZLIB_FOUND)
FIND_PACKAGE (ZLIB) # Legacy find
ENDIF (NOT ZLIB_FOUND)
ENDIF (NOT ZLIB_USE_EXTERNAL)
IF (ZLIB_FOUND)
SET (H5_HAVE_FILTER_DEFLATE 1)
@@ -901,7 +901,7 @@ IF (NOT HDF5_EXTERNALLY_CONFIGURED)
${HDF5_BINARY_DIR}/CMakeFiles/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-config-version.cmake @ONLY
)
INSTALL (
FILES ${HDF5_BINARY_DIR}/CMakeFiles/${HDF5_PACKAGE}${HDF5_PACKAGE_EXT}-config-version.cmake
FILES ${HDF5_BINARY_DIR}/CMakeFiles/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-config-version.cmake
DESTINATION ${HDF5_INSTALL_CMAKE_DIR}/${HDF5_PACKAGE}
COMPONENT configinstall
)

View File

@@ -46,6 +46,7 @@
./bin/chkconfigure _DO_NOT_DISTRIBUTE_
./bin/chkcopyright _DO_NOT_DISTRIBUTE_
./bin/chkmanifest
./bin/cmakehdf5
./bin/compile
./bin/config.guess
./bin/config.sub
@@ -439,8 +440,8 @@
./release_docs/INSTALL_parallel
./release_docs/INSTALL_VMS.txt
./release_docs/INSTALL_Windows.txt
./release_docs/INSTALL_Windows_From_Command_Line.txt
./release_docs/INSTALL_Windows_Short_VS2008.TXT
./release_docs/obsolete_windows_docs/INSTALL_Windows_From_Command_Line.txt
./release_docs/obsolete_windows_docs/INSTALL_Windows_Short_VS2008.TXT
./release_docs/RELEASE.txt
./release_docs/USING_CMake.txt
./release_docs/USING_Windows.txt

View File

@@ -1,4 +1,4 @@
HDF5 version 1.8.10-snap14 currently under development
HDF5 version 1.8.10-patch1 released on 2013-01-22
Please refer to the release_docs/INSTALL file for installation instructions.
------------------------------------------------------------------------------

196
bin/cmakehdf5 Executable file
View File

@@ -0,0 +1,196 @@
#! /bin/sh
# Build and Test HDF5 using cmake.
# Author: Allen Byrne
# Albert Cheng
# Creation Date: Nov 2012
# Copyright: The HDF Group, 2012
# Debug: remove the comment hash if you want DPRINT to do echo
DPRINT=:
#DPRINT=echo
# variable names
progname=`basename $0` # program name
cminfile="cmakemin.$$" # Cmake minimum file
cfgfile=$progname.$$ # configure file
$DPRINT $cfgfile
# Remove temporary generated files if exit 0
trap "rm -f $cminfile $cfgfile" 0
#==========
# main
#==========
# First generate the two needed input files, the $cimnfile and $cfgfile.
# Then use ctest to use the two input files.
#==========
# create the configure file
#==========
# Create the cmake minimum required file to be used by the following
# configure file. Though not absolute needed, it is better to generate
# this file before the configure file. Quote the EOF to preven substitution
# in the text.
#==========
#==========
cat > $cfgfile <<'EOF'
cmake_minimum_required(VERSION 2.8.6 FATAL_ERROR)
########################################################
# This dashboard is maintained by The HDF Group
# For any comments please contact cdashhelp@hdfgroup.org
#
########################################################
set (CTEST_DASHBOARD_ROOT ${CTEST_SCRIPT_DIRECTORY})
set (CTEST_SOURCE_DIRECTORY "../hdf5")
set (CTEST_BINARY_DIRECTORY ".")
set (CTEST_CMAKE_GENERATOR "Unix Makefiles")
set (CTEST_BUILD_CONFIGURATION "Release")
# -- CDash variables
#set (LOCAL_NO_SUBMIT TRUE)
set (MODEL "Experimental")
set (CDASH_LOCAL TRUE)
set (SITE_BUILDNAME_SUFFIX "SHARED")
# -- URL set for internal check, default is to not update
set (LOCAL_SKIP_UPDATE TRUE)
set (REPOSITORY_URL "http://svn.hdfgroup.uiuc.edu/hdf5/branches/hdf5_1_8")
# -- Standard build options
set (ADD_BUILD_OPTIONS "-DCMAKE_INSTALL_PREFIX:PATH=/usr/local/hdf5.1.8 -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=\"SVN\" -DHDF5_PACKAGE_EXTLIBS:BOOL=ON")
# Use multiple CPU cores to build
SET (CTEST_BUILD_FLAGS "-j4")
# -----------------------------------------------------------
# -- Get environment
# -----------------------------------------------------------
## -- set hostname
## --------------------------
find_program (HOSTNAME_CMD NAMES hostname)
exec_program (${HOSTNAME_CMD} ARGS OUTPUT_VARIABLE HOSTNAME)
set (CTEST_SITE "${HOSTNAME}${CTEST_SITE_EXT}")
find_program (UNAME NAMES uname)
macro (getuname name flag)
exec_program ("${UNAME}" ARGS "${flag}" OUTPUT_VARIABLE "${name}")
endmacro (getuname)
getuname (osname -s)
getuname (osrel -r)
getuname (cpu -m)
if (SITE_BUILDNAME_SUFFIX)
set (CTEST_BUILD_NAME "${osname}-${osrel}-${cpu}-${SITE_BUILDNAME_SUFFIX}")
else (SITE_BUILDNAME_SUFFIX)
set (CTEST_BUILD_NAME "${osname}-${osrel}-${cpu}")
endif (SITE_BUILDNAME_SUFFIX)
# -----------------------------------------------------------
set (BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DSITE:STRING=${CTEST_SITE} -DBUILDNAME:STRING=${CTEST_BUILD_NAME}")
#-----------------------------------------------------------------------------
# MAC machines need special option
#-----------------------------------------------------------------------------
if (APPLE)
# Compiler choice
execute_process(COMMAND xcrun --find cc OUTPUT_VARIABLE XCODE_CC OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND xcrun --find c++ OUTPUT_VARIABLE XCODE_CXX OUTPUT_STRIP_TRAILING_WHITESPACE)
SET(ENV{CC} "${XCODE_CC}")
SET(ENV{CXX} "${XCODE_CXX}")
# Shared fortran is not supported, build static
set (BUILD_OPTIONS "${BUILD_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=OFF -DCMAKE_ANSI_CFLAGS:STRING=-fPIC")
set (BUILD_OPTIONS "${BUILD_OPTIONS} -DCTEST_USE_LAUNCHERS:BOOL=ON -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF")
endif (APPLE)
# -----------------------------------------------------------
find_package (Subversion)
set (CTEST_UPDATE_COMMAND "${Subversion_SVN_EXECUTABLE}")
# -- Only clean build folder if LOCAL_CLEAR_BUILD is set
if (LOCAL_CLEAR_BUILD)
set (CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE)
ctest_empty_binary_directory (${CTEST_BINARY_DIRECTORY})
endif (LOCAL_CLEAR_BUILD)
#-----------------------------------------------------------------------------
# Send the main script as a note.
list (APPEND CTEST_NOTES_FILES
"${CMAKE_CURRENT_LIST_FILE}"
"${CTEST_SOURCE_DIRECTORY}/config/cmake/cacheinit.cmake"
)
# Check for required variables.
foreach (req
CTEST_CMAKE_GENERATOR
CTEST_SITE
CTEST_BUILD_NAME
)
if (NOT DEFINED ${req})
message(FATAL_ERROR "The containing script must set ${req}")
endif (NOT DEFINED ${req})
endforeach (req)
## -- set output to english
set($ENV{LC_MESSAGES} "en_EN")
#-----------------------------------------------------------------------------
# Initialize the CTEST commands
#------------------------------
SET (CTEST_CMAKE_COMMAND "\"${CMAKE_COMMAND}\"")
SET (CTEST_CONFIGURE_COMMAND
"${CTEST_CMAKE_COMMAND} -C \"${CTEST_SOURCE_DIRECTORY}/config/cmake/cacheinit.cmake\" -DCMAKE_BUILD_TYPE:STRING=${CTEST_BUILD_CONFIGURATION} ${BUILD_OPTIONS} \"-G${CTEST_CMAKE_GENERATOR}\" \"${CTEST_SOURCE_DIRECTORY}\"")
# Print summary information.
foreach (v
CTEST_SITE
CTEST_BUILD_NAME
CTEST_SOURCE_DIRECTORY
CTEST_BINARY_DIRECTORY
CTEST_CMAKE_GENERATOR
CTEST_BUILD_CONFIGURATION
CTEST_CONFIGURE_COMMAND
CTEST_SCRIPT_DIRECTORY
)
set (vars "${vars} ${v}=[${${v}}]\n")
endforeach (v)
message ("Dashboard script configuration:\n${vars}\n")
CTEST_START (${MODEL} TRACK ${MODEL})
if (NOT LOCAL_SKIP_UPDATE)
CTEST_UPDATE (SOURCE "${CTEST_SOURCE_DIRECTORY}")
endif (NOT LOCAL_SKIP_UPDATE)
CTEST_CONFIGURE (BUILD "${CTEST_BINARY_DIRECTORY}")
message ("Configure DONE")
CTEST_READ_CUSTOM_FILES ("${CTEST_BINARY_DIRECTORY}")
if (NOT LOCAL_NO_SUBMIT)
CTEST_SUBMIT (PARTS Update Configure Notes)
endif (NOT LOCAL_NO_SUBMIT)
CTEST_BUILD (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND)
if (NOT LOCAL_NO_SUBMIT)
CTEST_SUBMIT (PARTS Build)
endif (NOT LOCAL_NO_SUBMIT)
message ("build DONE")
if (NOT LOCAL_SKIP_TEST)
CTEST_TEST (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND)
if (NOT LOCAL_NO_SUBMIT)
CTEST_SUBMIT (PARTS Test)
endif (NOT LOCAL_NO_SUBMIT)
message ("test DONE")
endif (NOT LOCAL_SKIP_TEST)
message ("DONE")
EOF
# Run ctest
date
ctest -S $cfgfile -C Release -O testhdf.log
exit_code=$?
if [ $exit_code = 0 ]; then
echo Complete without error
else
echo Error encountered
fi
date
exit $exit_code

View File

@@ -18,6 +18,6 @@
# latest revision of that branch. If set to "hdf5", it uses the main
# version.
# H5VER tells runtest which version to run
H5VERSION=hdf5_1_8
H5VER="-r1.8"
H5VERSION=hdf5_1_8_10
H5VER="-r1.8.10"

View File

@@ -14,7 +14,7 @@ INCLUDE (${CMAKE_ROOT}/Modules/TestBigEndian.cmake)
INCLUDE (${CMAKE_ROOT}/Modules/TestForSTDNamespace.cmake)
#-----------------------------------------------------------------------------
# Always SET this for now IF we are on an OS X box
# APPLE/Darwin setup
#-----------------------------------------------------------------------------
IF (APPLE)
LIST(LENGTH CMAKE_OSX_ARCHITECTURES ARCH_LENGTH)
@@ -28,6 +28,11 @@ IF (APPLE)
SET (H5_AC_APPLE_UNIVERSAL_BUILD 0)
ENDIF (APPLE)
# Check for Darwin (not just Apple - we also want to catch OpenDarwin)
IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
SET (H5_HAVE_DARWIN 1)
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
#-----------------------------------------------------------------------------
# Option to Clear File Buffers before write --enable-clear-file-buffers
#-----------------------------------------------------------------------------

View File

@@ -15,6 +15,24 @@
/* Define if using a Windows compiler (i.e. Visual Studio) */
#cmakedefine H5_HAVE_VISUAL_STUDIO @H5_HAVE_VISUAL_STUDIO@
/* Defined if HDF5 was built with CMake AND build as a shared library */
#cmakedefine H5_BUILT_AS_DYNAMIC_LIB @H5_BUILT_AS_DYNAMIC_LIB@
/* Defined if HDF5 was built with CMake AND build as a static library */
#cmakedefine H5_BUILT_AS_STATIC_LIB @H5_BUILT_AS_STATIC_LIB@
/* Defined if HDF5 CPP was built with CMake AND build as a shared library */
#cmakedefine H5_CPP_BUILT_AS_DYNAMIC_LIB @H5_CPP_BUILT_AS_DYNAMIC_LIB@
/* Defined if HDF5 CPP was built with CMake AND build as a static library */
#cmakedefine H5_CPP_BUILT_AS_STATIC_LIB @H5_CPP_BUILT_AS_STATIC_LIB@
/* Defined if HDF5 HL was built with CMake AND build as a shared library */
#cmakedefine H5_HL_BUILT_AS_DYNAMIC_LIB @H5_HL_BUILT_AS_DYNAMIC_LIB@
/* Defined if HDF5 HL was built with CMake AND build as a static library */
#cmakedefine H5_HL_BUILT_AS_STATIC_LIB @H5_HL_BUILT_AS_STATIC_LIB@
/* Define if building universal (internal helper macro) */
#cmakedefine H5_AC_APPLE_UNIVERSAL_BUILD @H5_AC_APPLE_UNIVERSAL_BUILD@
@@ -93,6 +111,9 @@
/* Define if the function stack tracing code is to be compiled in */
#cmakedefine H5_HAVE_CODESTACK @H5_HAVE_CODESTACK@
/* Define if Darwin or Mac OS X */
#cmakedefine H5_HAVE_DARWIN @H5_HAVE_DARWIN@
/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
*/
#cmakedefine H5_HAVE_DECL_TZNAME @H5_HAVE_DECL_TZNAME@

View File

@@ -112,7 +112,7 @@ IF (NOT TEST_SKIP_COMPARE)
# again, if return value is !=0 scream and shout
IF (NOT ${TEST_RESULT} STREQUAL 0)
MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did not match P_${TEST_REFERENCE}")
MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_OUTPUT} did not match P_${TEST_REFERENCE}")
ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
ENDIF (NOT TEST_SKIP_COMPARE)

View File

@@ -117,7 +117,7 @@ IF (NOT TEST_SKIP_COMPARE)
# again, if return value is !=0 scream and shout
IF (NOT ${TEST_RESULT} STREQUAL 0)
MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did not match ${TEST_REFERENCE}")
MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_OUTPUT} did not match ${TEST_REFERENCE}")
ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
IF (TEST_ERRREF)
@@ -136,7 +136,7 @@ IF (NOT TEST_SKIP_COMPARE)
# again, if return value is !=0 scream and shout
IF (NOT ${TEST_RESULT} STREQUAL 0)
MESSAGE (FATAL_ERROR "Failed: The error output of ${TEST_PROGRAM} did not match ${TEST_ERRREF}")
MESSAGE (FATAL_ERROR "Failed: The error output of ${TEST_OUTPUT}.err did not match ${TEST_ERRREF}")
ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
ENDIF (TEST_ERRREF)
ENDIF (NOT TEST_SKIP_COMPARE)

36
configure vendored
View File

@@ -1,7 +1,7 @@
#! /bin/sh
# From configure.ac Id: configure.ac 22803 2012-09-24 00:27:42Z hdftest .
# From configure.ac Id: configure.ac 23143 2013-01-08 03:47:01Z derobins .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for HDF5 1.8.10-snap14.
# Generated by GNU Autoconf 2.69 for HDF5 1.8.10-patch1.
#
# Report bugs to <help@hdfgroup.org>.
#
@@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='HDF5'
PACKAGE_TARNAME='hdf5'
PACKAGE_VERSION='1.8.10-snap14'
PACKAGE_STRING='HDF5 1.8.10-snap14'
PACKAGE_VERSION='1.8.10-patch1'
PACKAGE_STRING='HDF5 1.8.10-patch1'
PACKAGE_BUGREPORT='help@hdfgroup.org'
PACKAGE_URL=''
@@ -1485,7 +1485,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures HDF5 1.8.10-snap14 to adapt to many kinds of systems.
\`configure' configures HDF5 1.8.10-patch1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1555,7 +1555,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of HDF5 1.8.10-snap14:";;
short | recursive ) echo "Configuration of HDF5 1.8.10-patch1:";;
esac
cat <<\_ACEOF
@@ -1754,7 +1754,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
HDF5 configure 1.8.10-snap14
HDF5 configure 1.8.10-patch1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2848,7 +2848,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by HDF5 $as_me 1.8.10-snap14, which was
It was created by HDF5 $as_me 1.8.10-patch1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3680,7 +3680,7 @@ fi
# Define the identity of the package.
PACKAGE='hdf5'
VERSION='1.8.10-snap14'
VERSION='1.8.10-patch1'
cat >>confdefs.h <<_ACEOF
@@ -22226,7 +22226,7 @@ fi
case "X-$enable_production" in
X-yes)
X-|X-yes)
enable_production="yes"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: production" >&5
$as_echo "production" >&6; }
@@ -22236,7 +22236,7 @@ $as_echo "production" >&6; }
H5_CXXFLAGS="$H5_CXXFLAGS $PROD_CXXFLAGS"
H5_FCFLAGS="$H5_FCFLAGS $PROD_FCFLAGS"
;;
X-|X-no)
X-no)
enable_production="no"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: development" >&5
$as_echo "development" >&6; }
@@ -22772,6 +22772,14 @@ fi
done
## Also need to detect Darwin for pubconf
case $host_os in
darwin*)
$as_echo "#define HAVE_DARWIN 1" >>confdefs.h
;;
esac
## Windows
case "`uname`" in
@@ -31748,7 +31756,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by HDF5 $as_me 1.8.10-snap14, which was
This file was extended by HDF5 $as_me 1.8.10-patch1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -31814,7 +31822,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
HDF5 config.status 1.8.10-snap14
HDF5 config.status 1.8.10-patch1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -34587,7 +34595,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
HDF5 config.lt 1.8.10-snap14
HDF5 config.lt 1.8.10-patch1
configured by $0, generated by GNU Autoconf 2.69.
Copyright (C) 2011 Free Software Foundation, Inc.

View File

@@ -26,7 +26,7 @@ AC_PREREQ([2.69])
## NOTE: Do not forget to change the version number here when we do a
## release!!!
##
AC_INIT([HDF5], [1.8.10-snap14], [help@hdfgroup.org])
AC_INIT([HDF5], [1.8.10-patch1], [help@hdfgroup.org])
AC_CONFIG_SRCDIR([src/H5.c])
AC_CONFIG_HEADER([src/H5config.h])
@@ -1219,7 +1219,7 @@ AC_ARG_ENABLE([production],
[Determines how to run the compiler.])])
case "X-$enable_production" in
X-yes)
X-|X-yes)
enable_production="yes"
AC_MSG_RESULT([production])
CONFIG_MODE=production
@@ -1228,7 +1228,7 @@ case "X-$enable_production" in
H5_CXXFLAGS="$H5_CXXFLAGS $PROD_CXXFLAGS"
H5_FCFLAGS="$H5_FCFLAGS $PROD_FCFLAGS"
;;
X-|X-no)
X-no)
enable_production="no"
AC_MSG_RESULT([development])
CONFIG_MODE=development
@@ -1290,6 +1290,12 @@ AC_CHECK_HEADERS([stdint.h], [C9x=yes])
## Darwin
AC_CHECK_HEADERS([mach/mach_time.h])
## Also need to detect Darwin for pubconf
case $host_os in
darwin*)
AC_DEFINE([HAVE_DARWIN], [1], [Define if Darwin or Mac OS X])
;;
esac
## Windows
case "`uname`" in

View File

@@ -98,10 +98,6 @@ FFLAGS="${HDF5_FFLAGS:-$FFLAGSBASE}"
LDFLAGS="${HDF5_LDFLAGS:-$LDFLAGSBASE}"
LIBS="${HDF5_LIBS:-$LIBSBASE}"
# If static was disabled, @HDF5_USE_SHLIB@ will be yes. In that case
# HDF5_USE_SHLIB should be set to yes because there are no static
# lib files.
HDF5_USE_SHLIB="@HDF5_USE_SHLIB@"
USE_SHARED_LIB="${HDF5_USE_SHLIB:-no}"
usage() {

View File

@@ -19,8 +19,726 @@ This file contains development history of HDF5 1.8 branch
%%%%1.8.9%%%%
<NOTE: Copy the RELEASE.txt from the 1.8.9 Release Branch HERE when
it has been finalized!>
HDF5 version 1.8.9 released on 2012-05-09
================================================================================
INTRODUCTION
============
This document describes the differences between HDF5-1.8.8 and
HDF5 1.8.9. It also contains information on the platforms tested and
known problems in HDF5-1.8.9.
For more details, see the files HISTORY-1_0-1_8_0_rc3.txt
and HISTORY-1_8.txt in the release_docs/ directory of the HDF5 source.
Links to the HDF5 1.8.9 source code, documentation, and additional materials
can be found on the HDF5 web page at:
http://www.hdfgroup.org/products/hdf5/
The HDF5 1.8.9 release can be obtained from:
http://www.hdfgroup.org/HDF5/release/obtain5.html
User documentation for 1.8.9 can be accessed directly at this location:
http://www.hdfgroup.org/HDF5/doc/
New features in the HDF5-1.8.x release series, including brief general
descriptions of some new and modified APIs, are described in the "What's New
in 1.8.0?" document:
http://www.hdfgroup.org/HDF5/doc/ADGuide/WhatsNew180.html
All new and modified APIs are listed in detail in the "HDF5 Software Changes
from Release to Release" document, in the section "Release 1.8.9 (current
release) versus Release 1.8.8":
http://www.hdfgroup.org/HDF5/doc/ADGuide/Changes.html
If you have any questions or comments, please send them to the HDF Help Desk:
help@hdfgroup.org
CONTENTS
========
- New Features
- Support for New Platforms, Languages, and Compilers
- Bug Fixes since HDF5-1.8.8
- Platforms Tested
- Supported Configuration Features Summary
- Known Problems
New Features
============
Configuration
-------------
- None
Library
-------
- Added new feature to merge committed datatypes when copying objects,
using new H5O_COPY_MERGE_COMMITTED_DTYPE_FLAG, modified by new API
routines: H5Padd_merge_committed_dtype_path(),
H5Pfree_merge_committed_dtype_paths(), H5Pset_mcdt_search_cb() and
H5Pget_mcdt_search_cb(). (QAK - 2012/03/30)
- Added new feature which allows working with files in memory in the
same ways files are worked with on disk. New API routines include
H5Pset_file_image, H5Pget_file_image, H5Pset_file_image_callbacks,
H5Pget_file_image_callbacks, H5Fget_file_image, and
H5LTopen_file_image. (QAK - 2012/04/17)
Parallel Library
----------------
- Corrected memory allocation error in MPI datatype construction code.
(QAK - 2012/04/23)
- Add two new routines to set/get the atomicity parameter in the
MPI library to perform atomic operations. Some file systems (for
example PVFS2) do not support atomic updates, so those routines
would not be supported. (MSC - 2012/03/27 - HDFFV-7961)
Tools
-----
- h5repack: Added ability to set the metadata block size of the output
file, with the '-M'/'--metadata_block_size' command line parameter.
(QAK - 2012/03/30)
- h5stat: Added ability to display a summary of the file space usage for a
file, with the '-S'/'--summary' command line parameter. (QAK - 2012/03/28)
- h5dump: Added capability for "-a" option to show attributes containing "/"
by using an escape character. For example, for a dataset "/dset"
containing attribute "speed(m/h)", use "h5dump -a "/dset/speed(\/h)"
to show the content of the attribute. (PC - 2012/03/12 - HDFFV-7523)
- h5dump: Added ability to apply command options across multiple files using a
wildcard in the filename. Unix example; "h5dump -H -d Dataset1 tarr*.h5".
Cross platform example; "h5dump -H -d Dataset1 tarray1.h5 tarray2.h5 tarray3.h5".
(ADB - 2012/03/12 - HDFFV-7876).
- h5dump: Added new option --no-compact-subset. This option will not
interpret the '[' character as starting the compact form of
subsetting. This is useful when the "h5dump error: unable to
open dataset "datset_name"" message is output because a dataset
name contains a '[' character. (ADB - 2012/03/05 - HDFFV-7689).
- h5repack: Improved performance for big chunked datasets (size > 128MB)
when used with the layout (-l) or compression (-f) options.
Before this change, repacking datasets with chunks with a large first
dimension would take extremely long. For example, repacking a dataset
with chunk dimensions of 1024x5x1 might take many hours to process
while changing a dataset with chunk dimensions set to 1x5x1024
might take under an hour. After this change, processing the dataset
with chunk dimensions of 1024x5x1 takes about 15 minutes, and processing
a dataset with chunk dimensions of 1x5x1024 takes about 14 minutes.
(JKM - 2012/03/01 - HDFFV-7862)
High-Level APIs
---------------
- New API: H5LTpath_valid (Fortran: h5ltpath_valid_f) checks
if a path is correct, determines if a link resolves to a valid
object, and checks that the link does not dangle. (MSB - 2012/03/15)
Fortran API
-----------
- Added for the C API the Fortran wrapper:
h5ocopy_f (MSB - 2012/03/22)
C++ API
-------
- None
Support for New Platforms, Languages, and Compilers
===================================================
- None
Bug Fixes since HDF5-1.8.8
==========================
Configuration
-------------
- Fixed Makefile issue in which "-Wl," was not properly specified
prior to -rpath when building parallel Fortran libraries with
an Intel compiler. (MAM - 2012/03/26)
- Makefiles generated by other packages using h5cc as the compiler
no longer error when 'make' is invoked more than once in order
to 'rebuild' after changes to source. (MAM - 2012/03/26)
- Added code to display the version information of XL Fortran and C++
in the summary of configure. (AKC - 2012/02/28 - HDFFV-7793)
- Updated all CMakeLists.txt files to indicate the minimum CMake version is
the current standard of 2.8.6 (ADB - 2011/12/05 - HDFFV-7854)
Library
-------
- Windows and STDIO correctness changes have been propagated from the SEC2
and old Windows drivers to the STDIO VFD. (DER - 2012/03/30 - HDFFV-7917)
- Fixed an error that would occur when copying an object with attribute
creation order tracked and indexed. (NAF - 2012/03/28 - HDFFV-7762)
- Fixed a bug in H5Ocopy(): When copying an opened object, call the
object's flush class action to ensure that cached data is flushed so
that H5Ocopy will get the correct data. (VC - 2012/03/27 - HDFFV-7853)
- The istore test will now skip the sparse 50x50x50 test when the VFD does
not support sparse files on that platform. The most important platforms
on which this will be skipped are Windows (NTFS sparse files are not
supported) and Mac OS-X (HFS sparse files are not supported). This
fixes CTest timeout issues on Windows. (DER - 2012/03/27 - HDFFV-7769)
- Windows and POSIX correctness changes have been propagated from the SEC2
VFD to the Core VFD. This mainly affects file operations on the
driver's backing store and fixes a problem on Windows where large files
could not be read. (DER - 2012/03/27 - HDFFV-7916 - HDFFV-7603)
- When an application tries to write or read many small data chunks and
runs out of memory, the library had a segmentation fault. The fix is to
return the error stack with proper information.
(SLU - 2012/03/23 - HDFFV-7785)
- H5Pset_data_transform had a segmentation fault in some cases like x*-100.
It works correctly now and handles other cases like 100-x or 2/x.
(SLU - 2012/03/15 - HDFFV-7922)
- Fixed rare corruption bugs that could occur when using the new object
header format. (NAF - 2012/03/15 - HDFFV-7879)
- Fixed an error that occurred when creating a contiguous dataset with a
zero-sized dataspace and space allocation time set to 'early'.
(QAK - 2012/03/12)
- Changed Windows thread creation to use _beginthread() instead of
CreateThread(). Threads created by the latter can be killed in
low-memory situations. (DER - 2012/02/10 - HDFFV-7780)
- Creating a dataset in a read-only file caused a segmentation fault when
the file is closed. It's fixed. The attempt to create a dataset will
fail with an error indicating the file is read-only.
(SLU - 2012/01/25 - HDFFV-7756)
- Fixed a segmentation fault that could occur when shrinking a dataset
with chunks larger than 1 MB. (NAF - 2011/11/30 - HDFFV-7833)
- Fixed a bug that could cause H5Oget_info to return the wrong address
after copying a committed (named) datatype. (NAF - 2011/11/14)
- The library allowed the conversion of strings between ASCII and UTF8
We have corrected it to report an error under this situation.
(SLU - 2011/11/8 - HDFFV-7582)
- Fixed a segmentation fault when the library tried to shrink the size
of a compound datatype through H5Tset_size immediately after the
datatype was created. (SLU - 2011/11/4 - HDFFV-7618)
Parallel Library
----------------
- None
Tools
-----
- h5unjam: Fixed a segmentation fault that occurred when h5unjam was used
with the -V (show version) option. (JKM - 2012/04/19 - HDFFV-8001)
- h5repack: Fixed a failure that occurred when repacking the chunk size
of a specified chunked dataset with unlimited max dims.
(JKM - 2012/04/11 - HDFFV-7993)
- h5diff: Fixed a failure when comparing groups. Before the fix, if an
object in a group was compared with an object in another group where
both had the same name but the object type was different, then h5diff
would fail. After the fix, h5diff detects such cases as non-comparable
and displays appropriate error messages.
(JKM - 2012/03/28 - HDFFV-7644)
- h5diff: If unique objects exist only in one file and if h5diff is set to
exclude the unique objects with the --exclude-path option, then h5diff
might miss excluding some objects. This was fixed to correctly exclude
objects. (JKM - 2012/03/20 - HDFFV-7837)
- h5diff: When two symbolic dangling links are compared with the
--follow-symlinks option, the result should be the same. This worked when
comparing two files, but didn't work when comparing two objects.
h5diff now works when comparing two objects.
(JKM - 2012/03/09 - HDFFV-7835)
- h5dump: Added the tools library error stack to properly catch error
information generated within the library. (ADB - 2012/03/12 - HDFFV-7958)
- h5dump: Changed the process where an open link used to fail. Now dangling
links no longer throw error messages. (ADB - 2012/03/12 - HDFFV-7839)
- h5dump: Refactored code to remove duplicated functions. Split XML
functions from DDL functions. Corrected indentation and formatting
errors. Also fixed subsetting counting overflow (HDFFV-5874). Verified
all tools call tools_init() in main. The USER_BLOCK data now correctly
displays within the SUPER_BLOCK info. NOTE: WHITESPACE IN THE OUTPUT
HAS CHANGED. (ADB - 2012/02/17 - HDFFV-7560)
- h5diff: Fixed to prevent from displaying error stack message when
comparing two dangling symbolic links with the follow-symlinks option.
(JKM - 2012/01/13 - HDFFV-7836)
- h5repack: Fixed a memory leak that occurred with the handling of
variable length strings in attributes.
(JKM - 2012/01/10 - HDFFV-7840)
- h5ls: Fixed a segmentation fault that occurred when accessing region
reference data in an attribute. (JKM - 2012/01/06 - HDFFV-7838)
F90 API
-------
- None
C++ API
------
- None
High-Level APIs:
------
- None
Fortran High-Level APIs:
------
- h5ltget_attribute_string_f: The h5ltget_attribute_string_f used to return
the C NULL character in the returned character buffer. The returned
charactor buffer now does not return the C NULL character; the buffer
is blank-padded if needed. (MSB - 2012/03/23)
Platforms Tested
================
The following platforms and compilers have been tested for this release.
AIX 5.3 xlc 10.1.0.5
(NASA G-ADA) xlC 10.1.0.5
xlf90 12.1.0.6
FreeBSD 8.2-STABLE i386 gcc 4.2.1 [FreeBSD] 20070719
(loyalty) g++ 4.2.1 [FreeBSD] 20070719
gcc 4.6.1 20110422
g++ 4.6.1 20110422
gfortran 4.6.1 20110422
FreeBSD 8.2-STABLE amd64 gcc 4.2.1 [FreeBSD] 20070719
(freedom) g++ 4.2.1 [FreeBSD] 20070719
gcc 4.6.1 20110422
g++ 4.6.1 20110422
gfortran 4.6.1 20110422
Linux 2.6.18-194.3.1.el5PAE GNU C (gcc), Fortran (gfortran), C++ (g++)
#1 SMP i686 i686 i386 compilers for 32-bit applications;
(jam) Version 4.1.2 20080704 (Red Hat 4.1.2-52)
Version 4.5.2
PGI C, Fortran, C++ Compilers for 32-bit
applications;
Version 11.8-0
Version 11.9-0
Intel(R) C, C++, Fortran Compiler for 32-bit
applications;
Version 12.0
Version 12.1
MPICH mpich2-1.3.1 compiled with
gcc 4.1.2 and gfortran 4.1.2
Linux 2.6.18-308.1.1.el5 GNU C (gcc), Fortran (gfortran), C++ (g++)
#1 SMP x86_64 GNU/Linux compilers for 32-bit applications;
(koala) Version 4.1.2 20080704 (Red Hat 4.1.2-52)
Version 4.5.2
PGI C, Fortran, C++ for 64-bit target on
x86-64;
Version 11.9-0 (64-bit)
Version 11.8-0 (32-bit)
Intel(R) C, C++, Fortran Compilers for
applications running on Intel(R) 64;
Version 12.0
Version 12.1
MPICH mpich2-1.3.1 compiled with
gcc 4.1.2 and gfortran 4.1.2
Linux 2.6.32-220.7.1.el6.ppc64 gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
#1 SMP ppc64 GNU/Linux g++ (GCC) 4.4.6 20110731
(ostrich) GNU Fortran (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
Linux 2.6.18-108chaos Intel C, C++, Fortran Compilers Version 11.1
#1 SMP x86_64 GNU/Linux
(LLNL Aztec)
IBM Blue Gene/P XL C for Blue Gene/P, bgxlc V9.0
(LLNL uDawn) XL C++ for Blue Gene/P, bgxlC V9.0
XL Fortran for Blue Gene/P, bgxlf0 V11.1
SunOS 5.10 32- and 64-bit Sun C 5.9 Sun OS_sparc Patch 124867-16
(linew) Sun Fortran 95 8.3 Sun OS_sparc Patch 127000-13
Sun C++ 5.9 Sun OS_sparc Patch 124863-26
Sun C 5.11 SunOS_sparc
Sun Fortran 95 8.5 SunOS_sparc
Sun C++ 5.11 SunOS_sparc
SGI Altix UV Intel(R) C, Fortran Compilers
SGI ProPack 7 Linux Version 11.1 20100806
2.6.32.24-0.2.1.2230.2.PTF- SGI MPT 2.02
default #1 SMP
(NCSA ember)
Dell NVIDIA Cluster Intel(R) C, Fortran Compilers
Red Hat Enterprise Linux 6 Version 12.0.4 20110427
2.6.32-131.4.1.el6.x86_64 mvapich2 1.7rc1-intel-12.0.4
(NCSA forge)
Windows XP Visual Studio 2008 w/ Intel Fortran 10.1 (project files)
Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
Visual Studio 2010 w/ Intel Fortran 12 (cmake)
Windows XP x64 Visual Studio 2008 w/ Intel Fortran 10.1 (project files)
Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
Visual Studio 2010 w/ Intel Fortran 12 (cmake)
Windows 7 Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
Visual Studio 2010 w/ Intel Fortran 12 (cmake)
Cygwin(1.7.9 native gcc(4.5.3) compiler and gfortran)
Windows 7 x64 Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
Visual Studio 2010 w/ Intel Fortran 12 (cmake)
Cygwin(1.7.9 native gcc(4.5.3) compiler and gfortran)
Mac OS X Snow Leopard 10.6.8 i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (gcc)
Darwin Kernel Version 10.8.0 i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (g++)
Intel 64-bit (Apple Inc. build 5666) (dot 3)
(fred) GNU Fortan (GCC) 4.6.1 (gfortran)
Intel C (icc), Fortran (ifort), C++ (icpc)
12.1.0.038 Build 20110811
Mac OS X Snow Leopard 10.6.8 i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (gcc)
Darwin Kernel Version 10.8.0 i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (g++)
Intel 32-bit (Apple Inc. build 5666) (dot 3)
(tejeda) GNU Fortran (GCC) 4.6.1 (gfortran)
Intel C (icc), Fortran (ifort), C++ (icpc)
12.1.0.038 Build 20110811
Mac OS X Lion 10.7.3 GCC 4.2.1 gcc
32- and 64-bit GNU Fortran (GCC) 4.6.1 gfortran
(duck) GCC 4.2.1. g++
Debian6.0.3 2.6.32-5-686 #1 SMP i686 GNU/Linux
gcc (Debian 4.4.5-8) 4.4.5
GNU Fortran (Debian 4.4.5-8) 4.4.5
Debian6.0.3 2.6.32-5-amd64 #1 SMP x86_64 GNU/Linux
gcc (Debian 4.4.5-8) 4.4.5
GNU Fortran (Debian 4.4.5-8) 4.4.5
Fedora16 3.2.9-2.fc16.i6866 #1 SMP i686 i686 i386 GNU/Linux
gcc (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1)
GNU Fortran (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1)
Fedora16 3.2.9-2.fc16.x86_64 #1 SMP x86_64 x86_64 x86_64 GNU/Linux
gcc (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1)
GNU Fortran (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1)
SUSE 12.1 3.1.9-1.4-desktop #1 SMP PREEMPT i686 i686 i386 GNU/Linux
gcc (SUSE Linux) 4.6.2
GNU Fortran (SUSE Linux) 4.6.2
SUSE 12.1 3.1.9-1.4-desktop #1 SMP PREEMPT x86_64 x86_64 x86_64 GNU/Linux
gcc (SUSE Linux) 4.6.2
GNU Fortran (SUSE Linux) 4.6.2
Ubuntu 11.10 3.0.0-16-generic #29-Ubuntu SMP i686 GNU/Linux
gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
GNU Fortran (Ubuntu/Linaro 4.6.4-9ubuntu3) 4.6.1
Ubuntu 11.10 3.0.0-16-generic #29-Ubuntu SMP x86_64 GNU/Linux
gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
GNU Fortran (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
Cray Linux Environment (CLE) PrgEnv-pgi 2.2.74
hopper.nersc.gov pgcc 11.9-0 64-bit target on x86-64 Linux -tp k8e
pgf90 11.9-0 64-bit target on x86-64 Linux -tp k8e
pgCC 11.9-0 64-bit target on x86-64 Linux -tp k8e
Tested Configuration Features Summary
=====================================
In the tables below
y = tested
n = not tested in this release
C = Cluster
W = Workstation
x = not working in this release
dna = does not apply
( ) = footnote appears below second table
<blank> = testing incomplete on this feature or platform
Platform C F90 F90 C++ zlib SZIP
parallel parallel
Solaris2.10 32-bit n y n y y y
Solaris2.10 64-bit n y n y y y
Windows XP n y(4) n y y y
Windows XP x64 n y(4) n y y y
Windows Vista n y(4) n y y y
Windows Vista x64 n y(4) n y y y
Mac OS X Snow Leopard 10.6.8 32-bit n y n y y n
Mac OS X Snow Leopard 10.6.8 64-bit n y n y y y
Mac OS X Lion 10.7.3 32-bit n y n y y n
Mac OS X Lion 10.7.3 64-bit n y n y y y
AIX 5.3 32- and 64-bit y y y y y y
FreeBSD 8.2-STABLE 32&64 bit n x n x y y
CentOS 5.5 Linux 2.6.18-194 i686 GNU (1)W y y(2) y y y y
CentOS 5.5 Linux 2.6.18-194 i686 Intel W n y n y y y
CentOS 5.5 Linux 2.6.18-194 i686 PGI W n y n y y y
CentOS 5.5 Linux 2.6.18 x86_64 GNU (1) W y y(3) y y y y
CentOS 5.5 Linux 2.6.18 x86_64 Intel W n y n y y y
CentOS 5.5 Linux 2.6.18 x86_64 PGI W n y n y y y
Linux 2.6.32-220.7.1.el6.ppc64 n y n y y y
SGI ProPack 7 Linux 2.6.32.24 y y y y y y
Red Hat Enterprise Linux 6 y y y y y y
CLE hopper.nersc.gov y y(3) y y y n
Platform Shared Shared Shared Thread-
C libs F90 libs C++ libs safe
Solaris2.10 32-bit y y y y
Solaris2.10 64-bit n n n n
Windows XP y y(4) y n
Windows XP x64 y y(4) y n
Windows Vista y y(4) y y
Windows Vista x64 y y(4) y y
Mac OS X Snow Leopard 10.6.8 32-bit y n y n
Mac OS X Snow Leopard 10.6.8 64-bit y n y n
Mac OS X Lion 10.7.3 32-bit y n y y
Mac OS X Lion 10.7.3 64-bit y n y y
AIX 5.3 32- and 64-bit n n n y
FreeBSD 8.2-STABLE 32&64 bit y x x y
CentOS 5.5 Linux 2.6.18-194 i686 GNU (1)W y y(2) y y
CentOS 5.5 Linux 2.6.18-194 i686 Intel W y y y n
CentOS 5.5 Linux 2.6.18-194 i686 PGI W y y y n
CentOS 5.5 Linux 2.6.18 x86_64 GNU (1) W y y y y
CentOS 5.5 Linux 2.6.18 x86_64 Intel W y y y n
CentOS 5.5 Linux 2.6.18 x86_64 PGI W y y y n
Linux 2.6.32-220.7.1.el6.ppc64 y y y n
SGI ProPack 7 Linux 2.6.32.24 y y y n
Red Hat Enterprise Linux 6 y y y n
CLE hopper.nersc.gov n n n n
(1) Fortran compiled with gfortran.
(2) With PGI and Absoft compilers.
(3) With PGI compiler for Fortran.
(4) Using Visual Studio 2008 w/ Intel Fortran 10.1 (Cygwin shared libraries are not supported)
(5) C and C++ shared libraries will not be built when Fortran is enabled.
Compiler versions for each platform are listed in the preceding
"Platforms Tested" table.
Known Problems
==============
* The h5repacktst test fails on AIX 32-bit because the test uses more
memory than the default amount. The failure message typically looks like:
"time: 0551-010 The process was stopped abnormally. Try again."
This is an issue with the test only and does not represent a problem with
the library. To allow the test to pass, request more memory when testing
via appropriate command such as:
$ env LDR_CNRTL=MAXDATA=0x20000000@DSA make check
(AKC - 2012/05/09 - HDFFV-8016)
* The file_image test will fail in the "initial file image and callbacks in
the core VFD" sub-test if the source directory is read-only as the test
fails to create its test files in the build directory. This will be
resolved in a future release.
(AKC - 2012/05/05 - HDFFV-8009)
* The dt_arith test reports several errors involving "long double" on
Mac OS X 10.7 Lion when any level of optimization is enabled. The test does
not fail in debug mode. This will be addressed in a future release.
(SLU - 2012/05/08)
* The following h5dump test case fails in BG/P machines (and potentially other
machines that use a command script to launch executables):
h5dump --no-compact-subset -d "AHFINDERDIRECT::ah_centroid_t[0] it=0 tl=0"
tno-subset.h5
This is due to the embedded spaces in the dataset name being interpreted
by the command script launcher as meta-characters, thus passing three
arguments to h5dump's -d flag. The command passes if run by hand, just
not via the test script.
(AKC - 2012/05/03)
* The ph5diff (parallel h5diff) tool can intermittently hang in parallel mode
when comparing two HDF5 files that contain objects with the same names but
with different object types.
(JKM - 2012/04/27)
* On hopper, the build failed when RUNSERIAL and RUNPARALLEL are set
to aprun -np X, because the H5lib_settings.c file was not generated
properly. Not setting those environment variables works, because
configure was able to automatically detect that it's a Cray system
and used the proper launch commands when necessary.
(MSC - 2012/04/18)
* The data conversion test dt_arith.c fails in "long double" to integer
conversion on Ubuntu 11.10 (3.0.0.13 kernal) with GCC 4.6.1 if the library
is built with optimization -O3 or -O2. The older GCC (4.5) or newer kernal
(3.2.2 on Fedora) doesn't have the problem. Users should lower the
optimization level (-O1 or -O0) by defining CFLAGS in the command line of
"configure" like:
CFLAGS=-O1 ./configure
This will overwrite the library's default optimization level.
(SLU - 2012/02/07 - HDFFV-7829)
* The STDIO VFD does not work on some architectures, possibly due to 32/64
bit or large file issues. The basic STDIO VFD test is known to fail on
64-bit SunOS 5.10 on SPARC when built with -m64 and 32-bit OS X/Darwin
10.7.0. The STDIO VFD test has been disabled while we investigate and
a fix should appear in a future release.
(DER - 2011/10/14)
* h5diff can report inconsistent results when comparing datasets of enum type
that contain invalid values. This is due to how enum types are handled in
the library and will be addressed in a future release.
(DER - 2011/10/14 - HDFFV-7527)
* The links test can fail under the stdio VFD due to some issues with external
links. This will be investigated and fixed in a future release.
(DER - 2011/10/14 - HDFFV-7768)
* After the shared library support was fixed for some bugs, it was discovered
that "make prefix=XXX install" no longer works for shared libraries. It
still works correctly for static libraries. Therefore, if you want to
install the HDF5 shared libraries in a location such as /usr/local/hdf5,
you need to specify the location via the --prefix option during configure
time. E.g, ./configure --prefix=/usr/local/hdf5 ...
(AKC - 2011/05/07 - HDFFV-7583)
* The parallel test, t_shapesame, in testpar/, may run for a long time and may
be terminated by the alarm signal. If that happens, one can increase the
alarm seconds (default is 1200 seconds = 20 minutes) by setting the
environment variable, $HDF5_ALARM_SECONDS, to a larger value such as 3600
(60 minutes). Note that the t_shapesame test may fail in some systems
(see the "While working on the 1.8.6 release..." problem below). If
it does, it will waste more time if $HDF5_ALARM_SECONDS is set
to a larger value.
(AKC - 2011/05/07)
* The C++ and FORTRAN bindings are not currently working on FreeBSD.
(QAK - 2011/04/26)
* Shared Fortran libraries are not quite working on AIX. While they are
generated when --enable-shared is specified, the fortran and hl/fortran
tests fail. We are looking into the issue. HL and C++ shared libraries
should now be working as intended, however.
(MAM - 2011/04/20)
* The --with-mpe configure option does not work with Mpich2.
(AKC - 2011/03/10)
* While working on the 1.8.6 release of HDF5, a bug was discovered that can
occur when reading from a dataset in parallel shortly after it has been
written to collectively. The issue was exposed by a new test in the parallel
HDF5 test suite, but had existed before that. We believe the problem lies with
certain MPI implementations and/or file systems.
We have provided a pure MPI test program, as well as a standalone HDF5
program, that can be used to determine if this is an issue on your system.
They should be run across multiple nodes with a varying number of processes.
These programs can be found at:
http://www.hdfgroup.org/ftp/HDF5/examples/known_problems/
(NAF - 2011/01/19)
* The library's test dt_arith.c showed a compiler's rounding problem on
Cygwin when converting from unsigned long long to long double. The
library's own conversion works fine. We defined a macro for Cygwin to
skip this test until we can solve the problem.
(SLU - 2010/05/05 - HDFFV-1264)
* All the VFL drivers aren't backward compatible. In H5FDpublic.h, the
structure H5FD_class_t changed in 1.8. There is new parameter added to
get_eoa and set_eoa callback functions. A new callback function
get_type_map was added in. The public function H5FDrealloc was taken
out in 1.8. The problem only happens when users define their own driver
for 1.6 and try to plug in 1.8 library. Because there's only one user
complaining about it, we (Elena, Quincey, and I) decided to leave it as
it is (see bug report #1279). Quincey will make a plan for 1.10.
(SLU - 2010/02/02)
* MinGW has a missing libstdc++.dll.a library file and will not successfully link
C++ applications/tests. Do not use the enable-cxx configure option. Read all of
the INSTALL_MINGW.txt file for all restrictions.
(ADB - 2009/11/11)
* The --enable-static-exec configure flag will only statically link libraries
if the static version of that library is present. If only the shared version
of a library exists (i.e., most system libraries on Solaris, AIX, and Mac,
for example, only have shared versions), the flag should still result in a
successful compilation, but note that the installed executables will not be
fully static. Thus, the only guarantee on these systems is that the
executable is statically linked with just the HDF5 library.
(MAM - 2009/11/04)
* The PathScale MPI implementation, accessing a Panasas file system, would
cause H5Fcreate() with H5F_ACC_EXCL to fail even when the file does not
exist. This is due to the MPI_File_open() call failing if the mode has
the MPI_MODE_EXCL bit set.
(AKC - 2009/08/11 - HDFFV-988)
* Parallel tests failed with 16 processes with data inconsistency at testphdf5
/ dataset_readAll. Parallel tests also failed with 32 and 64 processes with
collective abort of all ranks at t_posix_compliant / allwrite_allread_blocks
with MPI IO.
(CMC - 2009/04/28)
* For Red Storm, a Cray XT3 system, the tools/h5ls/testh5ls.sh and
tools/h5copy/testh5copy.sh will fail some of its sub-tests. These sub-tests
are expected to fail and should exit with a non-zero code but the yod
command does not propagate the exit code of the executables. Yod always
returns 0 if it can launch the executable. The test suite shell expects
a non-zero for this particular test, therefore it concludes the test has
failed when it receives 0 from yod. Skip all the "failing" test for now
by changing them as following.
======== Original tools/h5ls/testh5ls.sh =========
TOOLTEST tgroup-1.ls 1 -w80 -r -g tgroup.h5
======== Change to ===============================
echo SKIP TOOLTEST tgroup-1.ls 1 -w80 -r -g tgroup.h5
==================================================
======== Original tools/h5copy/testh5copy.sh =========
TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets -d grp_rename
TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets -d /grp_rename/grp_dsets
TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_dsets -d /E/F/grp_dsets
TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_nested -d /G/H/grp_nested
H5LSTEST $FILEOUT
======== Change to ===============================
echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets -d grp_rename
echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets -d /grp_rename/grp_dsets
echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_dsets -d /E/F/grp_dsets
echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_nested -d /G/H/grp_nested
echo SKIP H5LSTEST $FILEOUT
==================================================
(AKC - 2008/11/10)
* For Red Storm, a Cray XT3 system, the yod command sometimes gives the
message, "yod allocation delayed for node recovery". This interferes with
test suites that do not expect to see this message. See the section of "Red
Storm" in file INSTALL_parallel for a way to deal with this problem.
(AKC - 2008/05/28)
* On an Intel 64 Linux cluster (RH 4, Linux 2.6.9) with Intel 10.0 compilers,
use -mp -O1 compilation flags to build the libraries. A higher level of
optimization causes failures in several HDF5 library tests.
* On mpich 1.2.5 and 1.2.6, if more than two processes contribute no IO and
the application asks to do collective IO, we have found that when using 4
processors, a simple collective write will sometimes be hung. This can be
verified with t_mpi test under testpar.
* A dataset created or rewritten with a v1.6.3 library or after cannot be read
with the v1.6.2 library or before when the Fletcher32 EDC filter is enabled.
There was a bug in the calculation of the Fletcher32 checksum in the
library before v1.6.3; the checksum value was not consistent between big-
endian and little-endian systems. This bug was fixed in Release 1.6.3.
However, after fixing the bug, the checksum value was no longer the same as
before on little-endian system. Library releases after 1.6.4 can still read
datasets created or rewritten with an HDF5 library of v1.6.2 or before.
(SLU - 2005/06/30)
* On IBM AIX systems, parallel HDF5 mode will fail some tests with error
messages like "INFO: 0031-XXX ...". This is from the command `poe'.
Set the environment variable MP_INFOLEVEL to 0 to minimize the messages
and run the tests again.
The tests may fail with messages like "The socket name is already in use",
but HDF5 does not use sockets. This failure is due to problems with the
poe command trying to set up the debug socket. To resolve this problem,
check to see whether there are many old /tmp/s.pedb.* files staying around.
These are sockets used by the poe command and left behind due to failed
commands. First, ask your system administrator to clean them out.
Lastly, request IBM to provide a means to run poe without the debug socket.
(AKC - 2004/12/08)
%%%%1.8.8%%%%

View File

@@ -1,12 +1,12 @@
HDF5 version 1.8.10-snap14 currently under development
HDF5 version 1.8.10-patch1 released on 2013-01-22
================================================================================
INTRODUCTION
============
This document describes the differences between HDF5-1.8.9 and
HDF5 1.8.10-*, and contains information on the platforms tested and
known problems in HDF5-1.8.10-*.
HDF5 1.8.10, and contains information on the platforms tested and
known problems in HDF5-1.8.10.
For more details, see the files HISTORY-1_0-1_8_0_rc3.txt
and HISTORY-1_8.txt in the release_docs/ directory of the HDF5 source.
@@ -45,9 +45,11 @@ CONTENTS
- New Features
- Support for New Platforms, Languages, and Compilers
- Bug Fixes since HDF5-1.8.10
- Bug Fixes since HDF5-1.8.9
- Platforms Tested
- Supported Platforms
- Supported Configuration Features Summary
- More Tested Platforms
- Known Problems
@@ -56,15 +58,17 @@ New Features
Configuration
-------------
- None
- A new tool, cmakehdf5, which is a build command script similar to
buildhdf5 is added and is available in the bin directory.
(AKC - 2013/01/21)
Library
-------
- Updated to latest autotools and changed all hard *.sh scripts to
configure managed *.sh.in files. Removed overloading of autotools
TESTS variable by examples and tests. Renamed configure.in to
configure.ac. (ADB - 2012/08/23 - HDFFV-8129)
- The data sieve buffer size was for all the datasets in the file. It
- The data sieve buffer size was set for all the datasets in the file. It
could waste memory if any dataset size is smaller than the sieve buffer
size. Now the library picks the smaller one between the dataset size
and the sieve buffer size from the file access property. See Issue 7934.
@@ -72,22 +76,22 @@ New Features
Parallel Library
----------------
- Add H5Pget_mpio_no_collective_cause() function that retrive reasons
why the collective I/O was broken during read/write IO access.
- Added the H5Pget_mpio_no_collective_cause() function that retrieves
reasons why the collective I/O was broken during read/write IO access.
(JKM - 2012/08/30 HDFFV-8143)
- Added H5Pget_mpio_actual_io_mode_f (MSB - 2012/09/27)
Tools
-----
- h5import: Allow use of h5dump output as input files to h5import.
h5dump must include the "-p" option to print the properties,
- h5import: Changed to allow the use of h5dump output as input files to
h5import. h5dump must include the "-p" option to print the properties;
configuration file is captured output of h5dump. The restrictions are
that only one dataset with a simple datatype (integer, floating-point,
or string) can be processed.
Integers and floating-point imports from h5dump must use the "binary"
option for the data file.
The string version uses the h5dump "-y --width=1" options to disable the
indexing printouts, print single columns and obviously NOT use the
"binary" option.
or string) can be processed. Integers and floating-point imports from
h5dump must use the "binary" option for the data file. The string version
uses the h5dump "-y --width=1" options to disable the indexing printouts,
print single columns, and obviously NOT use the "binary" option.
(ADB - 2012/07/19 HDFFV-721)
High-Level APIs
@@ -96,9 +100,9 @@ New Features
Fortran API
-----------
- Fixed a typo in return value of the nh5dread_f_c function ( was 1
- Fixed a typo in return value of the nh5dread_f_c function (was 1
instead of 0 on success); fixed the return value to make it consistent
with other Fortran functions; cleaned the code from debug statements.
with other Fortran functions; cleaned debug statements from the code.
(EIP - 2012/06/23)
C++ API
@@ -110,19 +114,59 @@ Support for New Platforms, Languages, and Compilers
===================================================
- None
Bug Fixes since HDF5-1.8.10
===========================
Library
-------
- The library now behaves correctly when performing large I/O operations on
Mac OS-X. Previously, single I/O operations > 2 GB would fail since the
Darwin read/write calls cannot handle the number of bytes that their
parameter types imply.
Fixes HDFFV-7975 and HDFFV-8240 (DER - 07 JAN 2013)
- Fixed a bug in the core VFD that cause failures when opening files > 2 GB.
Fixes HDFFV-8124 and HDFFV-8158 (DER - 07 JAN 2013)
Tools
-----
- The following h5stat test case failed in BG/P machines (and potentially
other machines that display extra output if an MPI task returns with a
non-zero code.)
Testing h5stat notexist.h5
The test script was fixed to ignore the extra output.
HDFFV-8233 (AKC - 2012/12/17)
- h5diff: Fixed slowness when comparing HDF5 files with many attributes.
Much slower performance was identified with later release version
(from 1.8.7 to 1.8.10) compared to 1.8.6. The issue was introduced
from fixing an attribute related bug for 1.8.7 release in the past.
HDFFV-8145 (JKM 2012/12/13)
Testing
-------
- None
Bug Fixes since HDF5-1.8.9
==========================
Configuration
-------------
- Fixed configure --enable-production to not use -O optimization for Lion
and Mountain Lion systems when gcc (i686-apple-darwin11-llvm-gcc-4.2
(GCC) 4.2.1) is used. Somehow the -O optimization will cause some of
the hard conversion code in test/dt_arith.c to fail. HDFFV-8017.
(AKC - 2012/10/10)
- Fixed AIX Fortran compiler flags to use appropriate settings for
debugging, profiling, optimization situations. HDFFV-8069. (AKC
2012/09/27)
debugging, profiling, and optimization situations. HDFFV-8069.
(AKC 2012/09/27)
Library
-------
- Fix a memory leak exposed when inserting/removing a property
from a property list several times. HDFFV-8022. (MSC 2012/05/18)
- Fixed a memory leak exposed when inserting/removing a property
from a property list several times. HDFFV-8022. (MSC 2012/05/18)
- The file_image test will fail in the "initial file image and callbacks in
the core VFD" sub-test if the source directory is read-only as the test
fails to create its test files in the build directory. This has been
fixed. HDFFV-8009 (AKC - 2012/07/06)
Parallel Library
----------------
@@ -136,27 +180,25 @@ Bug Fixes since HDF5-1.8.9
program will be retired or moved to another location. HDFFV-8156
(AKC 2012/10/01)
- Retired program perform/mpi-perf. Its purpose has been incorporated
into h5perf before. (AKC 2012/09/21)
into h5perf. (AKC 2012/09/21)
Tools
-----
- h5repack: "h5repack -f NONE file1.h5 out.h5" command failed if
source file contains chunked dataset and a chunk dim is bigger than
the dataset dim. Another issue is that the command changed max dims
if chunk dim is smaller than the dataset dim.
These issue occurred when dataset size is smaller than 64k (compact
size limit) Fixed both.
if chunk dim is smaller than the dataset dim. These issue occurred
when dataset size is smaller than 64k (compact size limit) Fixed both.
HDFFV-8012 (JKM 2012/09/24)
- h5diff: Fixed not to accumulate attribute difference to dataset
difference in verbose mode (-v, -r), which caused incorrect
difference between dataset and group/datatype object if attribute
exist with any differences. This also lead to fix inconsistent
format indicating difference between dataset and group/datatype
object. HDFFV-5919 (JKM 2012/09/10)
- h5diff: Fixed the counter in verbose mode (-v, -r) so that it will no
longer add together the differences between datasets and the differences
between attributes of those datasets. This change makes the output of
verbose mode consistent for datasets, groups, and committed datatypes.
HDFFV-5919 (JKM 2012/09/10)
- h5diff: Fixed the incorrect result when comparing attribute data
values and the data type has same class but different size.
values and the data type has the same class but different sizes.
HDFFV-7942 (JKM 2012/08/15)
- h5dump: Replace single element fwrite with block writes.
- h5dump: Replaced single element fwrite with block writes.
HDFFV-1208 (ADB 2012/08/13)
- h5diff: Fixed test failure for "make check" due to failure of
copying test files when performed in HDF5 source tree. Also applied
@@ -164,26 +206,43 @@ Bug Fixes since HDF5-1.8.9
- ph5diff: Fixed intermittent hang issue on a certain operation in
parallel mode. It was detected by daily test for comparing
non-comparable objects, but it could have occurred in other
operations depend on machine condition. HDFFV-8003 (JKM 2012/08/01)
- h5diff: Fixed the Function COPY_TESTFILES_TO_TESTDIR() of testh5diff.sh
operations depending on machine condition. HDFFV-8003 (JKM 2012/08/01)
- h5diff: Fixed the function COPY_TESTFILES_TO_TESTDIR() of testh5diff.sh
to better report when there is an error in the file copying.
HDFFV-8105 (AKC 2012/07/22)
- h5dump: Fix sort by name display to maintain correct parent / child
releationships between ascending / descending order.
- h5dump: Fixed the sort by name display to maintain correct parent/child
relationships between ascending/descending order.
HDFFV-8095 (ADB 2012/07/12)
- h5dump: Fix display by creation order when using option -n (print contents).
- h5dump: Fixed the display by creation order when using option -n
(print contents).
HDFFV-5942 (ADB 2012/07/09)
- h5dump: Allow H5T_CSET_UTF8 to be displayed in h5dump output. Use
technique like in h5ls (matches library options).
- h5dump: Changed to allow H5T_CSET_UTF8 to be displayed in h5dump output.
Used technique similar to what was done in h5ls (matches library
options).
HDFFV-7999 (ADB 2012/05/23)
- h5diff: Fixed not to check and display dangling link status without
--follow-symlinks option. This also improved performance when
comparing lots of external links without the --follow-symlinks
option. HDFFV-7998 (JKM 2012/04/26)
- h5diff: Fixed the tool so that it will not check and display the status
of dangling links without setting the --follow-symlinks option. This
also improved performance when comparing lots of external links without
the --follow-symlinks option.
HDFFV-7998 (JKM 2012/04/26)
F90 API
-------
- None
- Fixed a typo in return value of the nh5dread_f_c function (was 1
instead of 0 on success); fixed the return value to make it consistent
with other Fortran functions; cleaned debug statements from the code.
(EIP - 2012/06/23)
- Fixed a problem writing/reading control characters to a dataset; writing
a string containing alerts, backspace, carriage_return, form_feed,
horizontal_tab, vertical_tab, or new_line is now tested and working.
(MSB - 2012/09/01)
- Corrected the integer type of H5S_UNLIMITED_F to HSIZE_T (MSB - 2012/09/01)
- Corrected the number of continuation lines in the src files
to be less than 32 lines for F95 compliance. (MSB - 2012/10/01)
C++ API
------
@@ -191,75 +250,67 @@ Bug Fixes since HDF5-1.8.9
High-Level APIs:
------
- Corrected return type of H5TBAget_fill from herr_t to htri_t to reflect
that a return value of 1 indicates that a fill value is present, 0
indicates a fill value is not present and <0 indicates an error.
- Fixed problem with H5TBdelete_record destroying all data following the
deletion of a row. (MSB- 2012/7/26)
- Fixed H5LTget_attribute_string not closing an object identifier when an
error occurs. (MSB- 2012/7/21)
- Corrected the return type of H5TBAget_fill from herr_t to htri_t to
reflect that a return value of 1 indicates that a fill value is
present, 0 indicates a fill value is not present, and <0 indicates an
error.
Fortran High-Level APIs:
------
- None
Platforms Tested
================
The following platforms and compilers have been tested for this release.
Supported Platforms
===================
AIX 5.3 xlc 10.1.0.5
(NASA G-ADA) xlC 10.1.0.5
xlf90 12.1.0.6
FreeBSD 8.2-STABLE i386 gcc 4.2.1 [FreeBSD] 20070719
(loyalty) g++ 4.2.1 [FreeBSD] 20070719
gcc 4.6.1 20110422
g++ 4.6.1 20110422
gfortran 4.6.1 20110422
FreeBSD 8.2-STABLE amd64 gcc 4.2.1 [FreeBSD] 20070719
(freedom) g++ 4.2.1 [FreeBSD] 20070719
gcc 4.6.1 20110422
g++ 4.6.1 20110422
gfortran 4.6.1 20110422
Linux 2.6.18-194.3.1.el5PAE GNU C (gcc), Fortran (gfortran), C++ (g++)
Linux 2.6.18-308.13.1.el5PAE GNU C (gcc), Fortran (gfortran), C++ (g++)
#1 SMP i686 i686 i386 compilers for 32-bit applications;
(jam) Version 4.1.2 20080704 (Red Hat 4.1.2-52)
Version 4.5.2
Version 4.6.3
PGI C, Fortran, C++ Compilers for 32-bit
applications;
Version 11.8-0
Version 11.9-0
Intel(R) C, C++, Fortran Compiler for 32-bit
applications;
Version 12.0
Version 12.1
MPICH mpich2-1.3.1 compiled with
MPICH mpich2-1.4.1p1 compiled with
gcc 4.1.2 and gfortran 4.1.2
Linux 2.6.18-308.1.1.el5 GNU C (gcc), Fortran (gfortran), C++ (g++)
Linux 2.6.18-308.16.1.el5 GNU C (gcc), Fortran (gfortran), C++ (g++)
#1 SMP x86_64 GNU/Linux compilers for 32-bit applications;
(koala) Version 4.1.2 20080704 (Red Hat 4.1.2-52)
Version 4.5.2
Version 4.6.3
PGI C, Fortran, C++ for 64-bit target on
x86-64;
Version 11.9-0 (64-bit)
Version 11.8-0 (32-bit)
Version 11.9-0
Version 12.5-0
Intel(R) C, C++, Fortran Compilers for
applications running on Intel(R) 64;
Version 12.0
Version 12.1
MPICH mpich2-1.3.1 compiled with
Version 12.1 (Build 20110811)
Version 12.1 (Build 20120212)
MPICH mpich2-1.4.1p1 compiled with
gcc 4.1.2 and gfortran 4.1.2
Linux 2.6.32-220.7.1.el6.ppc64 gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
#1 SMP ppc64 GNU/Linux g++ (GCC) 4.4.6 20110731
(ostrich) GNU Fortran (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3)
Linux 2.6.18-108chaos Intel C, C++, Fortran Compilers Version 11.1
#1 SMP x86_64 GNU/Linux
Linux 2.6.32-220.23.1.1chaos Intel C, C++, Fortran Compilers
ch5.x86_64 GNU/Linux Version 12.1.5.339
(LLNL Aztec)
IBM Blue Gene/P XL C for Blue Gene/P, bgxlc V9.0
(LLNL uDawn) XL C++ for Blue Gene/P, bgxlC V9.0
XL Fortran for Blue Gene/P, bgxlf0 V11.1
XL Fortran for Blue Gene/P, bgxlf90 V11.1
SunOS 5.10 32- and 64-bit Sun C 5.9 Sun OS_sparc Patch 124867-16
(linew) Sun Fortran 95 8.3 Sun OS_sparc Patch 127000-13
@@ -268,17 +319,6 @@ The following platforms and compilers have been tested for this release.
Sun Fortran 95 8.5 SunOS_sparc
Sun C++ 5.11 SunOS_sparc
SGI Altix UV Intel(R) C, Fortran Compilers
SGI ProPack 7 Linux Version 11.1 20100806
2.6.32.24-0.2.1.2230.2.PTF- SGI MPT 2.02
default #1 SMP
(NCSA ember)
Dell NVIDIA Cluster Intel(R) C, Fortran Compilers
Red Hat Enterprise Linux 6 Version 12.0.4 20110427
2.6.32-131.4.1.el6.x86_64 mvapich2 1.7rc1-intel-12.0.4
(NCSA forge)
Windows XP Visual Studio 2008 w/ Intel Fortran 10.1 (project files)
Windows XP x64 Visual Studio 2008 w/ Intel Fortran 10.1 (project files)
@@ -286,73 +326,35 @@ The following platforms and compilers have been tested for this release.
Windows 7 Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
Visual Studio 2010 w/ Intel Fortran 12 (cmake)
Cygwin(CYGWIN_NT-6.1 1.7.15(0.260/5/3) gcc(4.5.3) compiler and gfortran)
(cmake and autotools)
Windows 7 x64 Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
Visual Studio 2010 w/ Intel Fortran 12 (cmake)
Cygwin(CYGWIN_NT-6.1 1.7.15(0.260/5/3) gcc(4.5.3) compiler and gfortran)
(cmake and autotools)
Mac OS X Snow Leopard 10.6.8 i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (gcc)
Darwin Kernel Version 10.8.0 i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (g++)
Intel 64-bit (Apple Inc. build 5666) (dot 3)
(fred) GNU Fortan (GCC) 4.6.1 (gfortran)
Mac OS X Snow Leopard 10.6.8 gcc i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 from Xcode 3.2.6
Darwin Kernel Version 10.8.0 g++ i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 from Xcode 3.2.6
(fred) gfortran GNU Fortran (GCC) 4.6.2
Intel C (icc), Fortran (ifort), C++ (icpc)
12.1.0.038 Build 20110811
Mac OS X Snow Leopard 10.6.8 i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (gcc)
Darwin Kernel Version 10.8.0 i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (g++)
Intel 32-bit (Apple Inc. build 5666) (dot 3)
(tejeda) GNU Fortran (GCC) 4.6.1 (gfortran)
Intel C (icc), Fortran (ifort), C++ (icpc)
Mac OS X Snow Leopard 10.6.8 gcc i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 from Xcode 3.2.6
Darwin Kernel Version 10.8.0 g++ i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 from Xcode 3.2.6
Intel 32-bit gfortran GNU Fortran (GCC) 4.6.1
(tejeda) Intel C (icc), Fortran (ifort), C++ (icpc)
12.1.0.038 Build 20110811
Mac OS X Lion 10.7.3 GCC 4.2.1 gcc
32- and 64-bit GNU Fortran (GCC) 4.6.1 gfortran
(duck) GCC 4.2.1. g++
Mac OS X Lion 10.7.3 gcc i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 from Xcode 4.2.1
32- and 64-bit g++ i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 from Xcode 4.2.1
(duck) gfortran GNU Fortran (GCC) 4.6.2
Mac OS X Mountain Lion 10.8.1 GCC 4.2.1 gcc
(owl) GNU Fortran (GCC) 4.6.1 gfortran
GCC 4.2.1. g++
Apple clang version 4.0 (cc)
Apple clang version 4.0 (c++)
Mac OS X Mountain Lion 10.8.1 cc Apple clang version 4.0 from Xcode 4.5.1
(owl) c++ Apple clang version 4.0 from Xcode 4.5.1
gcc i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 from Xcode 4.5.1
g++ i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 from Xcode 4.5.1
gfortran GNU Fortran (GCC) 4.6.2
Debian6.0.3 2.6.32-5-686 #1 SMP i686 GNU/Linux
gcc (Debian 4.4.5-8) 4.4.5
GNU Fortran (Debian 4.4.5-8) 4.4.5
Debian6.0.3 2.6.32-5-amd64 #1 SMP x86_64 GNU/Linux
gcc (Debian 4.4.5-8) 4.4.5
GNU Fortran (Debian 4.4.5-8) 4.4.5
Fedora17 3.5.2-1.fc17.i6866 #1 SMP i686 i686 i386 GNU/Linux
gcc (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
GNU Fortran (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
Fedora17 3.5.2-1.fc17.x86_64 #1 SMP x86_64 x86_64 x86_64 GNU/Linux
gcc (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
GNU Fortran (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
SUSE 12.2 3.4.6-2.10-desktop #1 SMP PREEMPT i686 i686 i386 GNU/Linux
gcc (SUSE Linux) 4.7.1
GNU Fortran (SUSE Linux) 4.7.1
SUSE 12.2 3.4.6-2.10-desktop #1 SMP PREEMPT x86_64 x86_64 x86_64 GNU/Linux
gcc (SUSE Linux) 4.7.1
GNU Fortran (SUSE Linux) 4.7.1
Ubuntu 12.04 3.2.0-29-generic #46-Ubuntu SMP i686 GNU/Linux
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
GNU Fortran (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Ubuntu 12.04 3.2.0-29-generic #46-Ubuntu SMP x86_64 GNU/Linux
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
GNU Fortran (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
(Use optimization level -O1)
Cray Linux Environment (CLE) PrgEnv-pgi 2.2.74
hopper.nersc.gov pgcc 11.9-0 64-bit target on x86-64 Linux -tp k8e
pgf90 11.9-0 64-bit target on x86-64 Linux -tp k8e
pgCC 11.9-0 64-bit target on x86-64 Linux -tp k8e
Tested Configuration Features Summary
=====================================
@@ -367,29 +369,25 @@ Tested Configuration Features Summary
( ) = footnote appears below second table
<blank> = testing incomplete on this feature or platform
Platform C F90 F90 C++ zlib SZIP
parallel parallel
Solaris2.10 32-bit n y n y y y
Solaris2.10 64-bit n y n y y y
Windows 7 y y n y y y
Windows 7 x64 y y n y y y
Mac OS X Snow Leopard 10.6.8 32-bit n y n y y n
Mac OS X Snow Leopard 10.6.8 64-bit n y n y y y
Mac OS X Lion 10.7.3 32-bit n y n y y n
Mac OS X Lion 10.7.3 64-bit n y n y y y
Mac OS X Mountain Lion 10.8.1 64-bit n y n y y n
AIX 5.3 32- and 64-bit y y y y y y
FreeBSD 8.2-STABLE 32&64 bit n x n x y y
CentOS 5.5 Linux 2.6.18-194 i686 GNU (1)W y y(2) y y y y
CentOS 5.5 Linux 2.6.18-194 i686 Intel W n y n y y y
CentOS 5.5 Linux 2.6.18-194 i686 PGI W n y n y y y
CentOS 5.5 Linux 2.6.18 x86_64 GNU (1) W y y(3) y y y y
CentOS 5.5 Linux 2.6.18 x86_64 Intel W n y n y y y
CentOS 5.5 Linux 2.6.18 x86_64 PGI W n y n y y y
Linux 2.6.32-220.7.1.el6.ppc64 n y n y y y
SGI ProPack 7 Linux 2.6.32.24 y y y y y y
Red Hat Enterprise Linux 6 y y y y y y
CLE hopper.nersc.gov y y(3) y y y n
Platform C F90/ F90 C++ zlib SZIP
parallel F2003 parallel
Solaris2.10 32-bit n y/y n y y y
Solaris2.10 64-bit n y/n n y y y
Windows 7 y y/n n y y y
Windows 7 x64 y y/n n y y y
Mac OS X Snow Leopard 10.6.8 32-bit n y/y n y y n
Mac OS X Snow Leopard 10.6.8 64-bit n y/y n y y y
Mac OS X Lion 10.7.3 32-bit n y/y n y y n
Mac OS X Lion 10.7.3 64-bit n y/y n y y y
Mac OS X Mountain Lion 10.8.1 64-bit n y/n n y y n
AIX 5.3 32- and 64-bit y y/n y y y y
CentOS 5.5 Linux 2.6.18-308 i686 GNU y y/y y y y y
CentOS 5.5 Linux 2.6.18-308 i686 Intel n y/y n y y y
CentOS 5.5 Linux 2.6.18-308 i686 PGI n y/y n y y y
CentOS 5.5 Linux 2.6.18 x86_64 GNU y y/y y y y y
CentOS 5.5 Linux 2.6.18 x86_64 Intel n y/y n y y y
CentOS 5.5 Linux 2.6.18 x86_64 PGI n y/y n y y y
Linux 2.6.32-220.7.1.el6.ppc64 n y/n n y y y
Platform Shared Shared Shared Thread-
@@ -404,60 +402,85 @@ Mac OS X Lion 10.7.3 32-bit y n y y
Mac OS X Lion 10.7.3 64-bit y n y y
Mac OS X Mountain Lion 10.8.1 64-bit y n y y
AIX 5.3 32- and 64-bit n n n y
FreeBSD 8.2-STABLE 32&64 bit y x x y
CentOS 5.5 Linux 2.6.18-194 i686 GNU (1)W y y(2) y y
CentOS 5.5 Linux 2.6.18-194 i686 Intel W y y y n
CentOS 5.5 Linux 2.6.18-194 i686 PGI W y y y n
CentOS 5.5 Linux 2.6.18 x86_64 GNU (1) W y y y y
CentOS 5.5 Linux 2.6.18 x86_64 Intel W y y y n
CentOS 5.5 Linux 2.6.18 x86_64 PGI W y y y n
CentOS 5.5 Linux 2.6.18-308 i686 GNU y y y y
CentOS 5.5 Linux 2.6.18-308 i686 Intel y y y n
CentOS 5.5 Linux 2.6.18-308 i686 PGI y y y n
CentOS 5.5 Linux 2.6.18 x86_64 GNU y y y y
CentOS 5.5 Linux 2.6.18 x86_64 Intel y y y n
CentOS 5.5 Linux 2.6.18 x86_64 PGI y y y n
Linux 2.6.32-220.7.1.el6.ppc64 y y y n
SGI ProPack 7 Linux 2.6.32.24 y y y n
Red Hat Enterprise Linux 6 y y y n
CLE hopper.nersc.gov n n n n
(1) Fortran compiled with gfortran.
(2) With PGI and Absoft compilers.
(3) With PGI compiler for Fortran.
(4) Using Visual Studio 2008 w/ Intel Fortran 10.1 (Cygwin shared libraries are not supported)
(5) C and C++ shared libraries will not be built when Fortran is enabled.
Compiler versions for each platform are listed in the preceding
"Platforms Tested" table.
Compiler versions for each platform are listed in the preceding
"Supported Platforms" table.
More Tested Platforms
=====================
The following platforms are not supported but have been tested for this release.
FreeBSD 8.2-STABLE i386 gcc 4.2.1 [FreeBSD] 20070719
(loyalty) gcc 4.6.1 20110422
g++ 4.6.1 20110422
gfortran 4.6.1 20110422
FreeBSD 8.2-STABLE amd64 gcc 4.2.1 [FreeBSD] 20070719
(freedom) gcc 4.6.1 20110422
g++ 4.6.1 20110422
gfortran 4.6.1 20110422
Debian6.0.3 2.6.32-5-686 #1 SMP i686 GNU/Linux
gcc (Debian 4.4.5-8) 4.4.5
GNU Fortran (Debian 4.4.5-8) 4.4.5
(cmake and autotools)
Debian6.0.3 2.6.32-5-amd64 #1 SMP x86_64 GNU/Linux
gcc (Debian 4.4.5-8) 4.4.5
GNU Fortran (Debian 4.4.5-8) 4.4.5
(cmake and autotools)
Fedora17 3.5.2-1.fc17.i6866 #1 SMP i686 i686 i386 GNU/Linux
gcc (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
GNU Fortran (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
(cmake and autotools)
Fedora17 3.5.2-1.fc17.x86_64 #1 SMP x86_64 x86_64 x86_64 GNU/Linux
gcc (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
GNU Fortran (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
(cmake and autotools)
SUSE 12.2 3.4.6-2.10-desktop #1 SMP PREEMPT i686 i686 i386 GNU/Linux
gcc (SUSE Linux) 4.7.1
GNU Fortran (SUSE Linux) 4.7.1
(cmake and autotools)
SUSE 12.2 3.4.6-2.10-desktop #1 SMP PREEMPT x86_64 x86_64 x86_64 GNU/Linux
gcc (SUSE Linux) 4.7.1
GNU Fortran (SUSE Linux) 4.7.1
(cmake and autotools)
Ubuntu 12.04 3.2.0-29-generic #46-Ubuntu SMP i686 GNU/Linux
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
GNU Fortran (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
(cmake and autotools)
Ubuntu 12.04 3.2.0-29-generic #46-Ubuntu SMP x86_64 GNU/Linux
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
GNU Fortran (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
(cmake and autotools)
(Use optimization level -O1)
Cray Linux Environment (CLE) PrgEnv-pgi/4.0.46
hopper.nersc.gov pgcc 12.5-0 64-bit target on x86-64 Linux -tp shanghai
pgf90 12.5-0 64-bit target on x86-64 Linux -tp shanghai
pgCC 12.5-0 64-bit target on x86-64 Linux -tp shanghai
Known Problems
==============
* The data conversion test dt_arith.c has failures (segmentation fault) from
"long double" to other datatypes during hard conversion when the library
is built with the default GCC 4.2.1 on Mac Lion system. It only happens
with optimization (-O3, -O2, and -O1). Some newer versions of GCC do not
have this problem. Users should disable optimization or try newer version
of GCC.
(SLU - 2012/06/12 - HDFFV-8017)
* The h5repacktst test fails on AIX 32-bit because the test uses more
memory than the default amount. The failure message typically looks like:
"time: 0551-010 The process was stopped abnormally. Try again."
This is an issue with the test only and does not represent a problem with
the library. To allow the test to pass, request more memory when testing
via appropriate command such as:
$ env LDR_CNRTL=MAXDATA=0x20000000@DSA make check
(AKC - 2012/05/09 - HDFFV-8016)
* The file_image test will fail in the "initial file image and callbacks in
the core VFD" sub-test if the source directory is read-only as the test
fails to create its test files in the build directory. This will be
resolved in a future release.
(AKC - 2012/05/05 - HDFFV-8009)
* The dt_arith test reports several errors involving "long double" on
Mac OS X 10.7 Lion when any level of optimization is enabled. The test does
not fail in debug mode. This will be addressed in a future release.
(SLU - 2012/05/08)
* The C++ and FORTRAN bindings are not currently working on FreeBSD with the
native release 8.2 compilers (4.2.1), but are working with gcc 4.6 from the
ports (and probably gcc releases after that).
(QAK - 2012/10/19)
* The following h5dump test case fails in BG/P machines (and potentially other
machines that use a command script to launch executables):
@@ -471,11 +494,6 @@ Known Problems
not via the test script.
(AKC - 2012/05/03)
* The ph5diff (parallel h5diff) tool can intermittently hang in parallel mode
when comparing two HDF5 files that contain objects with the same names but
with different object types.
(JKM - 2012/04/27)
* On hopper, the build failed when RUNSERIAL and RUNPARALLEL are set
to aprun -np X, because the H5lib_settings.c file was not generated
properly. Not setting those environment variables works, because
@@ -500,7 +518,7 @@ Known Problems
64-bit SunOS 5.10 on SPARC when built with -m64 and 32-bit OS X/Darwin
10.7.0. The STDIO VFD test has been disabled while we investigate and
a fix should appear in a future release.
(DER - 2011/10/14)
(DER - 2011/10/14 - HDFFV-8235)
* h5diff can report inconsistent results when comparing datasets of enum type
that contain invalid values. This is due to how enum types are handled in
@@ -570,11 +588,6 @@ Known Problems
it is (see bug report #1279). Quincey will make a plan for 1.10.
(SLU - 2010/02/02)
* MinGW has a missing libstdc++.dll.a library file and will not successfully link
C++ applications/tests. Do not use the enable-cxx configure option. Read all of
the INSTALL_MINGW.txt file for all restrictions.
(ADB - 2009/11/11)
* The --enable-static-exec configure flag will only statically link libraries
if the static version of that library is present. If only the shared version
of a library exists (i.e., most system libraries on Solaris, AIX, and Mac,
@@ -584,63 +597,16 @@ Known Problems
executable is statically linked with just the HDF5 library.
(MAM - 2009/11/04)
* The PathScale MPI implementation, accessing a Panasas file system, would
cause H5Fcreate() with H5F_ACC_EXCL to fail even when the file does not
exist. This is due to the MPI_File_open() call failing if the mode has
the MPI_MODE_EXCL bit set.
(AKC - 2009/08/11 - HDFFV-988)
* Parallel tests failed with 16 processes with data inconsistency at testphdf5
/ dataset_readAll. Parallel tests also failed with 32 and 64 processes with
collective abort of all ranks at t_posix_compliant / allwrite_allread_blocks
with MPI IO.
(CMC - 2009/04/28)
* For Red Storm, a Cray XT3 system, the tools/h5ls/testh5ls.sh and
tools/h5copy/testh5copy.sh will fail some of its sub-tests. These sub-tests
are expected to fail and should exit with a non-zero code but the yod
command does not propagate the exit code of the executables. Yod always
returns 0 if it can launch the executable. The test suite shell expects
a non-zero for this particular test, therefore it concludes the test has
failed when it receives 0 from yod. Skip all the "failing" test for now
by changing them as following.
======== Original tools/h5ls/testh5ls.sh =========
TOOLTEST tgroup-1.ls 1 -w80 -r -g tgroup.h5
======== Change to ===============================
echo SKIP TOOLTEST tgroup-1.ls 1 -w80 -r -g tgroup.h5
==================================================
======== Original tools/h5copy/testh5copy.sh =========
TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets -d grp_rename
TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets -d /grp_rename/grp_dsets
TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_dsets -d /E/F/grp_dsets
TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_nested -d /G/H/grp_nested
H5LSTEST $FILEOUT
======== Change to ===============================
echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets -d grp_rename
echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -v -s grp_dsets -d /grp_rename/grp_dsets
echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_dsets -d /E/F/grp_dsets
echo SKIP TOOLTEST_FAIL -i $TESTFILE -o $FILEOUT -vp -s /grp_nested -d /G/H/grp_nested
echo SKIP H5LSTEST $FILEOUT
==================================================
(AKC - 2008/11/10)
* For Red Storm, a Cray XT3 system, the yod command sometimes gives the
message, "yod allocation delayed for node recovery". This interferes with
test suites that do not expect to see this message. See the section of "Red
Storm" in file INSTALL_parallel for a way to deal with this problem.
(AKC - 2008/05/28)
* On an Intel 64 Linux cluster (RH 4, Linux 2.6.9) with Intel 10.0 compilers,
use -mp -O1 compilation flags to build the libraries. A higher level of
optimization causes failures in several HDF5 library tests.
* On mpich 1.2.5 and 1.2.6, if more than two processes contribute no IO and
the application asks to do collective IO, we have found that when using 4
processors, a simple collective write will sometimes be hung. This can be
verified with t_mpi test under testpar.
* A dataset created or rewritten with a v1.6.3 library or after cannot be read
with the v1.6.2 library or before when the Fletcher32 EDC filter is enabled.
There was a bug in the calculation of the Fletcher32 checksum in the
@@ -650,17 +616,3 @@ Known Problems
before on little-endian system. Library releases after 1.6.4 can still read
datasets created or rewritten with an HDF5 library of v1.6.2 or before.
(SLU - 2005/06/30)
* On IBM AIX systems, parallel HDF5 mode will fail some tests with error
messages like "INFO: 0031-XXX ...". This is from the command `poe'.
Set the environment variable MP_INFOLEVEL to 0 to minimize the messages
and run the tests again.
The tests may fail with messages like "The socket name is already in use",
but HDF5 does not use sockets. This failure is due to problems with the
poe command trying to set up the debug socket. To resolve this problem,
check to see whether there are many old /tmp/s.pedb.* files staying around.
These are sockets used by the poe command and left behind due to failed
commands. First, ask your system administrator to clean them out.
Lastly, request IBM to provide a means to run poe without the debug socket.
(AKC - 2004/12/08)

View File

@@ -17,57 +17,40 @@
* Programmer: Robb Matzke <matzke@llnl.gov>
* Tuesday, August 10, 1999
*
* Purpose: A driver which stores the HDF5 data in main memory using
* only the HDF5 public API. This driver is useful for fast
* access to small, temporary hdf5 files.
* Purpose: A driver which stores the HDF5 data in main memory using
* only the HDF5 public API. This driver is useful for fast
* access to small, temporary hdf5 files.
*/
/* Interface initialization */
#define H5_INTERFACE_INIT_FUNC H5FD_core_init_interface
#include "H5private.h" /* Generic Functions */
#include "H5Eprivate.h" /* Error handling */
#include "H5Fprivate.h" /* File access */
#include "H5FDprivate.h" /* File drivers */
#include "H5FDcore.h" /* Core file driver */
#include "H5Iprivate.h" /* IDs */
#include "H5MMprivate.h" /* Memory management */
#include "H5Pprivate.h" /* Property lists */
#include "H5private.h" /* Generic Functions */
#include "H5Eprivate.h" /* Error handling */
#include "H5Fprivate.h" /* File access */
#include "H5FDprivate.h" /* File drivers */
#include "H5FDcore.h" /* Core file driver */
#include "H5Iprivate.h" /* IDs */
#include "H5MMprivate.h" /* Memory management */
#include "H5Pprivate.h" /* Property lists */
/* The driver identification number, initialized at runtime */
static hid_t H5FD_CORE_g = 0;
/* Since Windows doesn't follow the rest of the world when it comes
* to POSIX I/O types, some typedefs and constants are needed to avoid
* making the code messy with #ifdefs.
* NOTE: These are only used when writing data to the backing store on
* file close.
*/
#ifdef H5_HAVE_WIN32_API
typedef unsigned int h5_core_io_t;
typedef int h5_core_io_ret_t;
static int H5_CORE_MAX_IO_BYTES_g = INT_MAX;
#else
/* Unix, everyone else */
typedef size_t h5_core_io_t;
typedef ssize_t h5_core_io_ret_t;
static size_t H5_CORE_MAX_IO_BYTES_g = SSIZET_MAX;
#endif /* H5_HAVE_WIN32_API */
/* The description of a file belonging to this driver. The `eoa' and `eof'
/* The description of a file belonging to this driver. The 'eoa' and 'eof'
* determine the amount of hdf5 address space in use and the high-water mark
* of the file (the current size of the underlying memory).
*/
typedef struct H5FD_core_t {
H5FD_t pub; /*public stuff, must be first */
char *name; /*for equivalence testing */
unsigned char *mem; /*the underlying memory */
haddr_t eoa; /*end of allocated region */
haddr_t eof; /*current allocated size */
size_t increment; /*multiples for mem allocation */
hbool_t backing_store; /*write to file name on flush */
int fd; /*backing store file descriptor */
H5FD_t pub; /* public stuff, must be first */
char *name; /* for equivalence testing */
unsigned char *mem; /* the underlying memory */
haddr_t eoa; /* end of allocated region */
haddr_t eof; /* current allocated size */
size_t increment; /* multiples for mem allocation */
hbool_t backing_store; /* write to file name on flush */
int fd; /* backing store file descriptor */
/* Information for determining uniqueness of a file with a backing store */
#ifndef H5_HAVE_WIN32_API
/* On most systems the combination of device and i-node number uniquely
@@ -100,38 +83,38 @@ typedef struct H5FD_core_t {
HANDLE hFile; /* Native windows file handle */
#endif /* H5_HAVE_WIN32_API */
hbool_t dirty; /*changes not saved? */
H5FD_file_image_callbacks_t fi_callbacks; /* file image callbacks */
hbool_t dirty; /* changes not saved? */
H5FD_file_image_callbacks_t fi_callbacks; /* file image callbacks */
} H5FD_core_t;
/* Driver-specific file access properties */
typedef struct H5FD_core_fapl_t {
size_t increment; /*how much to grow memory */
hbool_t backing_store; /*write to file name on flush */
size_t increment; /* how much to grow memory */
hbool_t backing_store; /* write to file name on flush */
} H5FD_core_fapl_t;
/* Allocate memory in multiples of this size by default */
#define H5FD_CORE_INCREMENT 8192
#define H5FD_CORE_INCREMENT 8192
/* These macros check for overflow of various quantities. These macros
* assume that file_offset_t is signed and haddr_t and size_t are unsigned.
*
* ADDR_OVERFLOW: Checks whether a file address of type `haddr_t'
* is too large to be represented by the second argument
* of the file seek function.
* ADDR_OVERFLOW: Checks whether a file address of type `haddr_t'
* is too large to be represented by the second argument
* of the file seek function.
*
* SIZE_OVERFLOW: Checks whether a buffer size of type `hsize_t' is too
* large to be represented by the `size_t' type.
* SIZE_OVERFLOW: Checks whether a buffer size of type `hsize_t' is too
* large to be represented by the `size_t' type.
*
* REGION_OVERFLOW: Checks whether an address and size pair describe data
* which can be addressed entirely in memory.
* REGION_OVERFLOW: Checks whether an address and size pair describe data
* which can be addressed entirely in memory.
*/
#define MAXADDR ((haddr_t)((~(size_t)0)-1))
#define ADDR_OVERFLOW(A) (HADDR_UNDEF==(A) || (A) > (haddr_t)MAXADDR)
#define SIZE_OVERFLOW(Z) ((Z) > (hsize_t)MAXADDR)
#define REGION_OVERFLOW(A,Z) (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) || \
HADDR_UNDEF==(A)+(Z) || \
(size_t)((A)+(Z))<(size_t)(A))
#define MAXADDR ((haddr_t)((~(size_t)0)-1))
#define ADDR_OVERFLOW(A) (HADDR_UNDEF==(A) || (A) > (haddr_t)MAXADDR)
#define SIZE_OVERFLOW(Z) ((Z) > (hsize_t)MAXADDR)
#define REGION_OVERFLOW(A,Z) (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) || \
HADDR_UNDEF==(A)+(Z) || \
(size_t)((A)+(Z))<(size_t)(A))
/* Prototypes */
static void *H5FD_core_fapl_get(H5FD_t *_file);
@@ -145,60 +128,57 @@ static herr_t H5FD_core_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t addr);
static haddr_t H5FD_core_get_eof(const H5FD_t *_file);
static herr_t H5FD_core_get_handle(H5FD_t *_file, hid_t fapl, void** file_handle);
static herr_t H5FD_core_read(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id, haddr_t addr,
size_t size, void *buf);
size_t size, void *buf);
static herr_t H5FD_core_write(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id, haddr_t addr,
size_t size, const void *buf);
static herr_t H5FD_core_flush(H5FD_t *_file, hid_t dxpl_id, unsigned closing);
static herr_t H5FD_core_truncate(H5FD_t *_file, hid_t dxpl_id, hbool_t closing);
static const H5FD_class_t H5FD_core_g = {
"core", /*name */
MAXADDR, /*maxaddr */
H5F_CLOSE_WEAK, /*fc_degree */
NULL, /*sb_size */
NULL, /*sb_encode */
NULL, /*sb_decode */
sizeof(H5FD_core_fapl_t), /*fapl_size */
H5FD_core_fapl_get, /*fapl_get */
NULL, /*fapl_copy */
NULL, /*fapl_free */
0, /*dxpl_size */
NULL, /*dxpl_copy */
NULL, /*dxpl_free */
H5FD_core_open, /*open */
H5FD_core_close, /*close */
H5FD_core_cmp, /*cmp */
H5FD_core_query, /*query */
NULL, /*get_type_map */
NULL, /*alloc */
NULL, /*free */
H5FD_core_get_eoa, /*get_eoa */
H5FD_core_set_eoa, /*set_eoa */
H5FD_core_get_eof, /*get_eof */
H5FD_core_get_handle, /*get_handle */
H5FD_core_read, /*read */
H5FD_core_write, /*write */
H5FD_core_flush, /*flush */
H5FD_core_truncate, /*truncate */
NULL, /*lock */
NULL, /*unlock */
H5FD_FLMAP_DICHOTOMY /*fl_map */
"core", /* name */
MAXADDR, /* maxaddr */
H5F_CLOSE_WEAK, /* fc_degree */
NULL, /* sb_size */
NULL, /* sb_encode */
NULL, /* sb_decode */
sizeof(H5FD_core_fapl_t), /* fapl_size */
H5FD_core_fapl_get, /* fapl_get */
NULL, /* fapl_copy */
NULL, /* fapl_free */
0, /* dxpl_size */
NULL, /* dxpl_copy */
NULL, /* dxpl_free */
H5FD_core_open, /* open */
H5FD_core_close, /* close */
H5FD_core_cmp, /* cmp */
H5FD_core_query, /* query */
NULL, /* get_type_map */
NULL, /* alloc */
NULL, /* free */
H5FD_core_get_eoa, /* get_eoa */
H5FD_core_set_eoa, /* set_eoa */
H5FD_core_get_eof, /* get_eof */
H5FD_core_get_handle, /* get_handle */
H5FD_core_read, /* read */
H5FD_core_write, /* write */
H5FD_core_flush, /* flush */
H5FD_core_truncate, /* truncate */
NULL, /* lock */
NULL, /* unlock */
H5FD_FLMAP_DICHOTOMY /* fl_map */
};
/*--------------------------------------------------------------------------
NAME
H5FD_core_init_interface -- Initialize interface-specific information
USAGE
herr_t H5FD_core_init_interface()
RETURNS
Non-negative on success/Negative on failure
DESCRIPTION
Initializes any interface-specific data or routines. (Just calls
H5FD_core_init currently).
--------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------
* Function: H5FD_core_init_interface
*
* Purpose: Initializes any interface-specific data or routines.
*
* Return: Success: The driver ID for the core driver.
* Failure: Negative.
*
*-------------------------------------------------------------------------
*/
static herr_t
H5FD_core_init_interface(void)
{
@@ -209,14 +189,13 @@ H5FD_core_init_interface(void)
/*-------------------------------------------------------------------------
* Function: H5FD_core_init
* Function: H5FD_core_init
*
* Purpose: Initialize this driver by registering the driver with the
* library.
* Purpose: Initialize this driver by registering the driver with the
* library.
*
* Return: Success: The driver ID for the core driver.
*
* Failure: Negative.
* Return: Success: The driver ID for the core driver.
* Failure: Negative.
*
* Programmer: Robb Matzke
* Thursday, July 29, 1999
@@ -226,15 +205,15 @@ H5FD_core_init_interface(void)
hid_t
H5FD_core_init(void)
{
hid_t ret_value=H5FD_CORE_g; /* Return value */
hid_t ret_value = H5FD_CORE_g; /* Return value */
FUNC_ENTER_NOAPI(FAIL)
if (H5I_VFL!=H5Iget_type(H5FD_CORE_g))
if(H5I_VFL != H5Iget_type(H5FD_CORE_g))
H5FD_CORE_g = H5FD_register(&H5FD_core_g,sizeof(H5FD_class_t),FALSE);
/* Set return value */
ret_value=H5FD_CORE_g;
ret_value = H5FD_CORE_g;
done:
FUNC_LEAVE_NOAPI(ret_value)
@@ -242,11 +221,11 @@ done:
/*---------------------------------------------------------------------------
* Function: H5FD_core_term
* Function: H5FD_core_term
*
* Purpose: Shut down the VFD
* Purpose: Shut down the VFD
*
* Return: <none>
* Returns: <none>
*
* Programmer: Quincey Koziol
* Friday, Jan 30, 2004
@@ -259,32 +238,32 @@ H5FD_core_term(void)
FUNC_ENTER_NOAPI_NOINIT_NOERR
/* Reset VFL ID */
H5FD_CORE_g=0;
H5FD_CORE_g = 0;
FUNC_LEAVE_NOAPI_VOID
} /* end H5FD_core_term() */
/*-------------------------------------------------------------------------
* Function: H5Pset_fapl_core
* Function: H5Pset_fapl_core
*
* Purpose: Modify the file access property list to use the H5FD_CORE
* driver defined in this source file. The INCREMENT specifies
* how much to grow the memory each time we need more.
* Purpose: Modify the file access property list to use the H5FD_CORE
* driver defined in this source file. The INCREMENT specifies
* how much to grow the memory each time we need more.
*
* Return: Non-negative on success/Negative on failure
* Return: SUCCEED/FAIL
*
* Programmer: Robb Matzke
* Thursday, February 19, 1998
* Thursday, February 19, 1998
*
*-------------------------------------------------------------------------
*/
herr_t
H5Pset_fapl_core(hid_t fapl_id, size_t increment, hbool_t backing_store)
{
H5FD_core_fapl_t fa;
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value;
H5FD_core_fapl_t fa;
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value;
FUNC_ENTER_API(FAIL)
H5TRACE3("e", "izb", fapl_id, increment, backing_store);
@@ -304,13 +283,11 @@ done:
/*-------------------------------------------------------------------------
* Function: H5Pget_fapl_core
* Function: H5Pget_fapl_core
*
* Purpose: Queries properties set by the H5Pset_fapl_core() function.
* Purpose: Queries properties set by the H5Pset_fapl_core() function.
*
* Return: Success: Non-negative
*
* Failure: Negative
* Return: SUCCEED/FAIL
*
* Programmer: Robb Matzke
* Tuesday, August 10, 1999
@@ -318,12 +295,11 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
H5Pget_fapl_core(hid_t fapl_id, size_t *increment/*out*/,
hbool_t *backing_store/*out*/)
H5Pget_fapl_core(hid_t fapl_id, size_t *increment /*out*/, hbool_t *backing_store /*out*/)
{
H5FD_core_fapl_t *fa;
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value=SUCCEED; /* Return value */
H5FD_core_fapl_t *fa;
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_API(FAIL)
H5TRACE3("e", "ixx", fapl_id, increment, backing_store);
@@ -346,13 +322,13 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_core_fapl_get
* Function: H5FD_core_fapl_get
*
* Purpose: Returns a copy of the file access properties.
* Purpose: Returns a copy of the file access properties.
*
* Return: Success: Ptr to new file access properties.
* Return: Success: Ptr to new file access properties.
*
* Failure: NULL
* Failure: NULL
*
* Programmer: Robb Matzke
* Friday, August 13, 1999
@@ -362,9 +338,9 @@ done:
static void *
H5FD_core_fapl_get(H5FD_t *_file)
{
H5FD_core_t *file = (H5FD_core_t*)_file;
H5FD_core_fapl_t *fa;
void *ret_value; /* Return value */
H5FD_core_t *file = (H5FD_core_t*)_file;
H5FD_core_fapl_t *fa;
void *ret_value; /* Return value */
FUNC_ENTER_NOAPI_NOINIT
@@ -375,7 +351,7 @@ H5FD_core_fapl_get(H5FD_t *_file)
fa->backing_store = (hbool_t)(file->fd >= 0);
/* Set return value */
ret_value=fa;
ret_value = fa;
done:
FUNC_LEAVE_NOAPI(ret_value)
@@ -383,15 +359,15 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_core_open
* Function: H5FD_core_open
*
* Purpose: Create memory as an HDF5 file.
* Purpose: Create memory as an HDF5 file.
*
* Return: Success: A pointer to a new file data structure. The
* public fields will be initialized by the
* caller, which is always H5FD_open().
* Return: Success: A pointer to a new file data structure. The
* public fields will be initialized by the
* caller, which is always H5FD_open().
*
* Failure: NULL
* Failure: NULL
*
* Programmer: Robb Matzke
* Thursday, July 29, 1999
@@ -399,20 +375,19 @@ done:
*-------------------------------------------------------------------------
*/
static H5FD_t *
H5FD_core_open(const char *name, unsigned flags, hid_t fapl_id,
haddr_t maxaddr)
H5FD_core_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
{
int o_flags;
H5FD_core_t *file=NULL;
H5FD_core_fapl_t *fa=NULL;
H5P_genplist_t *plist; /* Property list pointer */
int o_flags;
H5FD_core_t *file = NULL;
H5FD_core_fapl_t *fa = NULL;
H5P_genplist_t *plist; /* Property list pointer */
#ifdef H5_HAVE_WIN32_API
struct _BY_HANDLE_FILE_INFORMATION fileinfo;
#endif
h5_stat_t sb;
int fd=-1;
H5FD_file_image_info_t file_image_info;
H5FD_t *ret_value;
h5_stat_t sb;
int fd = -1;
H5FD_file_image_info_t file_image_info;
H5FD_t *ret_value;
FUNC_ENTER_NOAPI_NOINIT
@@ -552,20 +527,23 @@ H5FD_core_open(const char *name, unsigned flags, hid_t fapl_id,
/* Read in existing data, being careful of interrupted system calls,
* partial results, and the end of the file.
*/
uint8_t *mem = file->mem; /* memory pointer for writes */
while(size > 0) {
h5_core_io_t bytes_in = 0; /* # of bytes to read */
h5_core_io_ret_t bytes_read = -1; /* # of bytes actually read */
h5_posix_io_t bytes_in = 0; /* # of bytes to read */
h5_posix_io_ret_t bytes_read = -1; /* # of bytes actually read */
/* Trying to read more bytes than the return type can handle is
* undefined behavior in POSIX.
*/
if(size > H5_CORE_MAX_IO_BYTES_g)
bytes_in = H5_CORE_MAX_IO_BYTES_g;
if(size > H5_POSIX_MAX_IO_BYTES)
bytes_in = H5_POSIX_MAX_IO_BYTES;
else
bytes_in = (h5_core_io_t)size;
bytes_in = (h5_posix_io_t)size;
do {
bytes_read = HDread(file->fd, file->mem, bytes_in);
bytes_read = HDread(file->fd, mem, bytes_in);
} while(-1 == bytes_read && EINTR == errno);
if(-1 == bytes_read) { /* error */
@@ -573,12 +551,13 @@ H5FD_core_open(const char *name, unsigned flags, hid_t fapl_id,
time_t mytime = HDtime(NULL);
HDoff_t myoffset = HDlseek(file->fd, (HDoff_t)0, SEEK_CUR);
HGOTO_ERROR(H5E_IO, H5E_READERROR, NULL, "file read failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', file->mem = %p, size = %lu, offset = %llu", HDctime(&mytime), file->name, file->fd, myerrno, HDstrerror(myerrno), file->mem, (unsigned long)size, (unsigned long long)myoffset);
HGOTO_ERROR(H5E_IO, H5E_READERROR, NULL, "file read failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', file->mem = %p, total read size = %llu, bytes this sub-read = %llu, bytes actually read = %llu, offset = %llu", HDctime(&mytime), file->name, file->fd, myerrno, HDstrerror(myerrno), file->mem, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_read, (unsigned long long)myoffset);
} /* end if */
HDassert(bytes_read >= 0);
HDassert((size_t)bytes_read <= size);
mem += bytes_read;
size -= (size_t)bytes_read;
} /* end while */
} /* end else */
@@ -594,13 +573,11 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_core_close
* Function: H5FD_core_close
*
* Purpose: Closes the file.
* Purpose: Closes the file.
*
* Return: Success: 0
*
* Failure: -1
* Return: SUCCEED/FAIL
*
* Programmer: Robb Matzke
* Thursday, July 29, 1999
@@ -610,8 +587,8 @@ done:
static herr_t
H5FD_core_close(H5FD_t *_file)
{
H5FD_core_t *file = (H5FD_core_t*)_file;
herr_t ret_value = SUCCEED; /* Return value */
H5FD_core_t *file = (H5FD_core_t*)_file;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI_NOINIT
@@ -642,17 +619,17 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_core_cmp
* Function: H5FD_core_cmp
*
* Purpose: Compares two files belonging to this driver by name. If one
* file doesn't have a name then it is less than the other file.
* If neither file has a name then the comparison is by file
* address.
* Purpose: Compares two files belonging to this driver by name. If one
* file doesn't have a name then it is less than the other file.
* If neither file has a name then the comparison is by file
* address.
*
* Return: Success: A value like strcmp()
* Return: Success: A value like strcmp()
*
* Failure: never fails (arguments were checked by the
* caller).
* Failure: never fails (arguments were checked by the
* caller).
*
* Programmer: Robb Matzke
* Thursday, July 29, 1999
@@ -662,9 +639,9 @@ done:
static int
H5FD_core_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
{
const H5FD_core_t *f1 = (const H5FD_core_t*)_f1;
const H5FD_core_t *f2 = (const H5FD_core_t*)_f2;
int ret_value = 0;
const H5FD_core_t *f1 = (const H5FD_core_t*)_f1;
const H5FD_core_t *f2 = (const H5FD_core_t*)_f2;
int ret_value = 0;
FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -726,13 +703,12 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_core_query
* Function: H5FD_core_query
*
* Purpose: Set the flags that this VFL driver is capable of supporting.
* Purpose: Set the flags that this VFL driver is capable of supporting.
* (listed in H5FDpublic.h)
*
* Return: Success: non-negative
* Failure: negative
* Return: SUCCEED (Can't fail)
*
* Programmer: Quincey Koziol
* Tuesday, October 7, 2008
@@ -742,7 +718,7 @@ done:
static herr_t
H5FD_core_query(const H5FD_t * _file, unsigned long *flags /* out */)
{
const H5FD_core_t *file = (const H5FD_core_t*)_file;
const H5FD_core_t *file = (const H5FD_core_t*)_file;
FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -766,15 +742,13 @@ H5FD_core_query(const H5FD_t * _file, unsigned long *flags /* out */)
/*-------------------------------------------------------------------------
* Function: H5FD_core_get_eoa
* Function: H5FD_core_get_eoa
*
* Purpose: Gets the end-of-address marker for the file. The EOA marker
* is the first address past the last byte allocated in the
* format address space.
* Purpose: Gets the end-of-address marker for the file. The EOA marker
* is the first address past the last byte allocated in the
* format address space.
*
* Return: Success: The end-of-address marker.
*
* Failure: HADDR_UNDEF
* Return: The end-of-address marker. (Can't fail)
*
* Programmer: Robb Matzke
* Monday, August 2, 1999
@@ -784,7 +758,7 @@ H5FD_core_query(const H5FD_t * _file, unsigned long *flags /* out */)
static haddr_t
H5FD_core_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type)
{
const H5FD_core_t *file = (const H5FD_core_t*)_file;
const H5FD_core_t *file = (const H5FD_core_t*)_file;
FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -793,15 +767,13 @@ H5FD_core_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type)
/*-------------------------------------------------------------------------
* Function: H5FD_core_set_eoa
* Function: H5FD_core_set_eoa
*
* Purpose: Set the end-of-address marker for the file. This function is
* called shortly after an existing HDF5 file is opened in order
* to tell the driver where the end of the HDF5 data is located.
* Purpose: Set the end-of-address marker for the file. This function is
* called shortly after an existing HDF5 file is opened in order
* to tell the driver where the end of the HDF5 data is located.
*
* Return: Success: 0
*
* Failure: -1
* Return: SUCCEED/FAIL
*
* Programmer: Robb Matzke
* Thursday, July 29, 1999
@@ -811,8 +783,8 @@ H5FD_core_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type)
static herr_t
H5FD_core_set_eoa(H5FD_t *_file, H5FD_mem_t UNUSED type, haddr_t addr)
{
H5FD_core_t *file = (H5FD_core_t*)_file;
herr_t ret_value = SUCCEED; /* Return value */
H5FD_core_t *file = (H5FD_core_t*)_file;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI_NOINIT
@@ -827,17 +799,15 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_core_get_eof
* Function: H5FD_core_get_eof
*
* Purpose: Returns the end-of-file marker, which is the greater of
* either the size of the underlying memory or the HDF5
* end-of-address markers.
* Purpose: Returns the end-of-file marker, which is the greater of
* either the size of the underlying memory or the HDF5
* end-of-address markers.
*
* Return: Success: End of file address, the first address past
* the end of the "file", either the memory
* or the HDF5 file.
*
* Failure: HADDR_UNDEF
* Return: End of file address, the first address past
* the end of the "file", either the memory
* or the HDF5 file. (Can't fail)
*
* Programmer: Robb Matzke
* Thursday, July 29, 1999
@@ -847,7 +817,7 @@ done:
static haddr_t
H5FD_core_get_eof(const H5FD_t *_file)
{
const H5FD_core_t *file = (const H5FD_core_t*)_file;
const H5FD_core_t *file = (const H5FD_core_t*)_file;
FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -858,9 +828,9 @@ H5FD_core_get_eof(const H5FD_t *_file)
/*-------------------------------------------------------------------------
* Function: H5FD_core_get_handle
*
* Purpose: Returns the file handle of CORE file driver.
* Purpose: Gets the file handle of CORE file driver.
*
* Returns: Non-negative if succeed or negative if fails.
* Returns: SUCCEED/FAIL
*
* Programmer: Raymond Lu
* Sept. 16, 2002
@@ -871,7 +841,7 @@ static herr_t
H5FD_core_get_handle(H5FD_t *_file, hid_t fapl, void** file_handle)
{
H5FD_core_t *file = (H5FD_core_t *)_file; /* core VFD info */
herr_t ret_value = SUCCEED; /* Return value */
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI_NOINIT
@@ -916,26 +886,25 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_core_read
* Function: H5FD_core_read
*
* Purpose: Reads SIZE bytes of data from FILE beginning at address ADDR
* into buffer BUF according to data transfer properties in
* DXPL_ID.
* Purpose: Reads SIZE bytes of data from FILE beginning at address ADDR
* into buffer BUF according to data transfer properties in
* DXPL_ID.
*
* Return: Success: Zero. Result is stored in caller-supplied
* buffer BUF.
* Return: Success: SUCCEED. Result is stored in caller-supplied
* buffer BUF.
*
* Failure: -1, Contents of buffer BUF are undefined.
* Failure: FAIL, Contents of buffer BUF are undefined.
*
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static herr_t
H5FD_core_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr_t addr,
size_t size, void *buf/*out*/)
size_t size, void *buf/*out*/)
{
H5FD_core_t *file = (H5FD_core_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
@@ -982,28 +951,25 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_core_write
* Function: H5FD_core_write
*
* Purpose: Writes SIZE bytes of data to FILE beginning at address ADDR
* from buffer BUF according to data transfer properties in
* DXPL_ID.
* Purpose: Writes SIZE bytes of data to FILE beginning at address ADDR
* from buffer BUF according to data transfer properties in
* DXPL_ID.
*
* Return: Success: Zero
*
* Failure: -1
* Return: SUCCEED/FAIL
*
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static herr_t
H5FD_core_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr_t addr,
size_t size, const void *buf)
size_t size, const void *buf)
{
H5FD_core_t *file = (H5FD_core_t*)_file;
herr_t ret_value = SUCCEED; /* Return value */
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI_NOINIT
@@ -1042,7 +1008,7 @@ H5FD_core_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, had
} /* end else */
#ifdef H5_CLEAR_MEMORY
HDmemset(x + file->eof, 0, (size_t)(new_eof - file->eof));
HDmemset(x + file->eof, 0, (size_t)(new_eof - file->eof));
#endif /* H5_CLEAR_MEMORY */
file->mem = x;
@@ -1061,49 +1027,46 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_core_flush
* Function: H5FD_core_flush
*
* Purpose: Flushes the file to backing store if there is any and if the
* dirty flag is set.
* Purpose: Flushes the file to backing store if there is any and if the
* dirty flag is set.
*
* Return: Success: 0
*
* Failure: -1
* Return: SUCCEED/FAIL
*
* Programmer: Robb Matzke
* Friday, October 15, 1999
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static herr_t
H5FD_core_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing)
{
H5FD_core_t *file = (H5FD_core_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
H5FD_core_t *file = (H5FD_core_t*)_file;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI_NOINIT
/* Write to backing store */
if (file->dirty && file->fd>=0 && file->backing_store) {
if (file->dirty && file->fd >= 0 && file->backing_store) {
haddr_t size = file->eof;
unsigned char *ptr = file->mem;
if (0!=HDlseek(file->fd, (off_t)0, SEEK_SET))
if(0 != HDlseek(file->fd, (off_t)0, SEEK_SET))
HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "error seeking in backing store")
while (size > 0) {
h5_core_io_t bytes_in = 0; /* # of bytes to write */
h5_core_io_ret_t bytes_wrote = -1; /* # of bytes written */
h5_posix_io_t bytes_in = 0; /* # of bytes to write */
h5_posix_io_ret_t bytes_wrote = -1; /* # of bytes written */
/* Trying to write more bytes than the return type can handle is
* undefined behavior in POSIX.
*/
if(size > H5_CORE_MAX_IO_BYTES_g)
bytes_in = H5_CORE_MAX_IO_BYTES_g;
if(size > H5_POSIX_MAX_IO_BYTES)
bytes_in = H5_POSIX_MAX_IO_BYTES;
else
bytes_in = (h5_core_io_t)size;
bytes_in = (h5_posix_io_t)size;
do {
bytes_wrote = HDwrite(file->fd, ptr, bytes_in);
@@ -1114,7 +1077,7 @@ H5FD_core_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing)
time_t mytime = HDtime(NULL);
HDoff_t myoffset = HDlseek(file->fd, (HDoff_t)0, SEEK_CUR);
HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "write to backing store failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', ptr = %p, size = %lu, offset = %llu", HDctime(&mytime), file->name, file->fd, myerrno, HDstrerror(myerrno), ptr, (unsigned long)size, (unsigned long long)myoffset);
HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "write to backing store failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', ptr = %p, total write size = %llu, bytes this sub-write = %llu, bytes actually written = %llu, offset = %llu", HDctime(&mytime), file->name, file->fd, myerrno, HDstrerror(myerrno), ptr, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_wrote, (unsigned long long)myoffset);
} /* end if */
HDassert(bytes_wrote > 0);
@@ -1134,42 +1097,40 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_core_truncate
* Function: H5FD_core_truncate
*
* Purpose: Makes sure that the true file size is the same (or larger)
* than the end-of-address.
* Purpose: Makes sure that the true file size is the same (or larger)
* than the end-of-address.
*
* Addendum -- 12/2/11
* For file images opened with the core file driver, it is
* necessary that we avoid reallocating the core file driver's
* buffer uneccessarily.
* Addendum -- 12/2/11
* For file images opened with the core file driver, it is
* necessary that we avoid reallocating the core file driver's
* buffer uneccessarily.
*
* To this end, I have made the following functional changes
* to this function.
* To this end, I have made the following functional changes
* to this function.
*
* If we are closing, and there is no backing store, this
* function becomes a no-op.
* If we are closing, and there is no backing store, this
* function becomes a no-op.
*
* If we are closing, and there is backing store, we set the
* eof to equal the eoa, and truncate the backing store to
* the new eof
* If we are closing, and there is backing store, we set the
* eof to equal the eoa, and truncate the backing store to
* the new eof
*
* If we are not closing, we realloc the buffer to size equal
* to the smallest multiple of the allocation increment that
* equals or exceeds the eoa and set the eof accordingly.
* Note that we no longer truncate the backing store to the
* new eof if applicable.
* -- JRM
* If we are not closing, we realloc the buffer to size equal
* to the smallest multiple of the allocation increment that
* equals or exceeds the eoa and set the eof accordingly.
* Note that we no longer truncate the backing store to the
* new eof if applicable.
* -- JRM
*
* Return: Success: Non-negative
* Failure: Negative
* Return: SUCCEED/FAIL
*
* Programmer: Quincey Koziol
* Tuesday, October 7, 2008
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static herr_t
H5FD_core_truncate(H5FD_t *_file, hid_t UNUSED dxpl_id, hbool_t closing)
{
@@ -1260,4 +1221,3 @@ H5FD_core_truncate(H5FD_t *_file, hid_t UNUSED dxpl_id, hbool_t closing)
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_core_truncate() */

View File

@@ -14,50 +14,35 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
* Programmer: Quincey Koziol <koziol@hdfgroup.org>
* Monday, April 17, 2000
*
* Purpose: The POSIX unbuffered file driver using only the HDF5 public
* API and with a few optimizations: the lseek() call is made
* only when the current file position is unknown or needs to be
* changed based on previous I/O through this driver (don't mix
* I/O from this driver with I/O from other parts of the
* application to the same file).
* With custom modifications...
* Purpose: The POSIX unbuffered file driver using only the HDF5 public
* API and with a few optimizations: the lseek() call is made
* only when the current file position is unknown or needs to be
* changed based on previous I/O through this driver (don't mix
* I/O from this driver with I/O from other parts of the
* application to the same file).
* With custom modifications...
*/
/* Interface initialization */
#define H5_INTERFACE_INIT_FUNC H5FD_log_init_interface
#include "H5private.h" /* Generic Functions */
#include "H5Eprivate.h" /* Error handling */
#include "H5Fprivate.h" /* File access */
#include "H5FDprivate.h" /* File drivers */
#include "H5FDlog.h" /* Logging file driver */
#include "H5FLprivate.h" /* Free Lists */
#include "H5Iprivate.h" /* IDs */
#include "H5MMprivate.h" /* Memory management */
#include "H5Pprivate.h" /* Property lists */
#include "H5private.h" /* Generic Functions */
#include "H5Eprivate.h" /* Error handling */
#include "H5Fprivate.h" /* File access */
#include "H5FDprivate.h" /* File drivers */
#include "H5FDlog.h" /* Logging file driver */
#include "H5FLprivate.h" /* Free Lists */
#include "H5Iprivate.h" /* IDs */
#include "H5MMprivate.h" /* Memory management */
#include "H5Pprivate.h" /* Property lists */
/* The driver identification number, initialized at runtime */
static hid_t H5FD_LOG_g = 0;
/* Since Windows doesn't follow the rest of the world when it comes
* to POSIX I/O types, some typedefs and constants are needed to avoid
* making the code messy with #ifdefs.
*/
#ifdef H5_HAVE_WIN32_API
typedef unsigned int h5_log_io_t;
typedef int h5_log_io_ret_t;
static int H5_LOG_MAX_IO_BYTES_g = INT_MAX;
#else
/* Unix, everyone else */
typedef size_t h5_log_io_t;
typedef ssize_t h5_log_io_ret_t;
static size_t H5_LOG_MAX_IO_BYTES_g = SSIZET_MAX;
#endif /* H5_HAVE_WIN32_API */
/* Driver-specific file access properties */
typedef struct H5FD_log_fapl_t {
char *logfile; /* Allocated log file name */
@@ -161,31 +146,30 @@ typedef struct H5FD_log_t {
* These macros check for overflow of various quantities. These macros
* assume that HDoff_t is signed and haddr_t and size_t are unsigned.
*
* ADDR_OVERFLOW: Checks whether a file address of type `haddr_t'
* is too large to be represented by the second argument
* of the file seek function.
* ADDR_OVERFLOW: Checks whether a file address of type `haddr_t'
* is too large to be represented by the second argument
* of the file seek function.
*
* SIZE_OVERFLOW: Checks whether a buffer size of type `hsize_t' is too
* large to be represented by the `size_t' type.
* SIZE_OVERFLOW: Checks whether a buffer size of type `hsize_t' is too
* large to be represented by the `size_t' type.
*
* REGION_OVERFLOW: Checks whether an address and size pair describe data
* which can be addressed entirely by the second
* argument of the file seek function.
* REGION_OVERFLOW: Checks whether an address and size pair describe data
* which can be addressed entirely by the second
* argument of the file seek function.
*/
#define MAXADDR (((haddr_t)1<<(8*sizeof(HDoff_t)-1))-1)
#define ADDR_OVERFLOW(A) (HADDR_UNDEF==(A) || \
((A) & ~(haddr_t)MAXADDR))
#define SIZE_OVERFLOW(Z) ((Z) & ~(hsize_t)MAXADDR)
#define REGION_OVERFLOW(A,Z) (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) || \
HADDR_UNDEF==(A)+(Z) || \
(HDoff_t)((A)+(Z))<(HDoff_t)(A))
#define MAXADDR (((haddr_t)1<<(8*sizeof(HDoff_t)-1))-1)
#define ADDR_OVERFLOW(A) (HADDR_UNDEF==(A) || ((A) & ~(haddr_t)MAXADDR))
#define SIZE_OVERFLOW(Z) ((Z) & ~(hsize_t)MAXADDR)
#define REGION_OVERFLOW(A,Z) (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) || \
HADDR_UNDEF==(A)+(Z) || \
(HDoff_t)((A)+(Z))<(HDoff_t)(A))
/* Prototypes */
static void *H5FD_log_fapl_get(H5FD_t *file);
static void *H5FD_log_fapl_copy(const void *_old_fa);
static herr_t H5FD_log_fapl_free(void *_fa);
static H5FD_t *H5FD_log_open(const char *name, unsigned flags, hid_t fapl_id,
haddr_t maxaddr);
haddr_t maxaddr);
static herr_t H5FD_log_close(H5FD_t *_file);
static int H5FD_log_cmp(const H5FD_t *_f1, const H5FD_t *_f2);
static herr_t H5FD_log_query(const H5FD_t *_f1, unsigned long *flags);
@@ -195,9 +179,9 @@ static herr_t H5FD_log_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t addr);
static haddr_t H5FD_log_get_eof(const H5FD_t *_file);
static herr_t H5FD_log_get_handle(H5FD_t *_file, hid_t fapl, void** file_handle);
static herr_t H5FD_log_read(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id, haddr_t addr,
size_t size, void *buf);
size_t size, void *buf);
static herr_t H5FD_log_write(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id, haddr_t addr,
size_t size, const void *buf);
size_t size, const void *buf);
static herr_t H5FD_log_truncate(H5FD_t *_file, hid_t dxpl_id, hbool_t closing);
static const H5FD_class_t H5FD_log_g = {
@@ -238,19 +222,16 @@ static const H5FD_class_t H5FD_log_g = {
H5FL_DEFINE_STATIC(H5FD_log_t);
/*--------------------------------------------------------------------------
NAME
H5FD_log_init_interface -- Initialize interface-specific information
USAGE
herr_t H5FD_log_init_interface()
RETURNS
Non-negative on success/Negative on failure
DESCRIPTION
Initializes any interface-specific data or routines. (Just calls
H5FD_log_init currently).
--------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------
* Function: H5FD_log_init_interface
*
* Purpose: Initializes any interface-specific data or routines.
*
* Return: Success: The driver ID for the log driver.
* Failure: Negative.
*
*-------------------------------------------------------------------------
*/
static herr_t
H5FD_log_init_interface(void)
{
@@ -261,15 +242,15 @@ H5FD_log_init_interface(void)
/*-------------------------------------------------------------------------
* Function: H5FD_log_init
* Function: H5FD_log_init
*
* Purpose: Initialize this driver by registering the driver with the
* library.
* Purpose: Initialize this driver by registering the driver with the
* library.
*
* Return: Success: The driver ID for the log driver.
* Failure: Negative.
* Return: Success: The driver ID for the log driver.
* Failure: Negative.
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
@@ -293,9 +274,9 @@ done:
/*---------------------------------------------------------------------------
* Function: H5FD_log_term
* Function: H5FD_log_term
*
* Purpose: Shut down the VFD
* Purpose: Shut down the VFD
*
* Returns: <none>
*
@@ -317,15 +298,15 @@ H5FD_log_term(void)
/*-------------------------------------------------------------------------
* Function: H5Pset_fapl_log
* Function: H5Pset_fapl_log
*
* Purpose: Modify the file access property list to use the H5FD_LOG
* driver defined in this source file.
* Purpose: Modify the file access property list to use the H5FD_LOG
* driver defined in this source file.
*
* Return: Non-negative on success/Negative on failure
* Return: SUCCEED/FAIL
*
* Programmer: Robb Matzke
* Thursday, February 19, 1998
* Programmer: Robb Matzke
* Thursday, February 19, 1998
*
*-------------------------------------------------------------------------
*/
@@ -358,17 +339,17 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_log_fapl_get
* Function: H5FD_log_fapl_get
*
* Purpose: Returns a file access property list which indicates how the
* specified file is being accessed. The return list could be
* used to access another file the same way.
* Purpose: Returns a file access property list which indicates how the
* specified file is being accessed. The return list could be
* used to access another file the same way.
*
* Return: Success: Ptr to new file access property list with all
* members copied from the file struct.
* Failure: NULL
* Return: Success: Ptr to new file access property list with all
* members copied from the file struct.
* Failure: NULL
*
* Programmer: Quincey Koziol
* Programmer: Quincey Koziol
* Thursday, April 20, 2000
*
*-------------------------------------------------------------------------
@@ -376,8 +357,8 @@ done:
static void *
H5FD_log_fapl_get(H5FD_t *_file)
{
H5FD_log_t *file = (H5FD_log_t *)_file;
void *ret_value; /* Return value */
H5FD_log_t *file = (H5FD_log_t *)_file;
void *ret_value; /* Return value */
FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -389,14 +370,14 @@ H5FD_log_fapl_get(H5FD_t *_file)
/*-------------------------------------------------------------------------
* Function: H5FD_log_fapl_copy
* Function: H5FD_log_fapl_copy
*
* Purpose: Copies the log-specific file access properties.
* Purpose: Copies the log-specific file access properties.
*
* Return: Success: Ptr to a new property list
* Failure: NULL
* Return: Success: Ptr to a new property list
* Failure: NULL
*
* Programmer: Quincey Koziol
* Programmer: Quincey Koziol
* Thursday, April 20, 2000
*
*-------------------------------------------------------------------------
@@ -404,9 +385,9 @@ H5FD_log_fapl_get(H5FD_t *_file)
static void *
H5FD_log_fapl_copy(const void *_old_fa)
{
const H5FD_log_fapl_t *old_fa = (const H5FD_log_fapl_t*)_old_fa;
H5FD_log_fapl_t *new_fa = NULL; /* New FAPL info */
void *ret_value; /* Return value */
const H5FD_log_fapl_t *old_fa = (const H5FD_log_fapl_t*)_old_fa;
H5FD_log_fapl_t *new_fa = NULL; /* New FAPL info */
void *ret_value; /* Return value */
FUNC_ENTER_NOAPI_NOINIT
@@ -440,14 +421,13 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_log_fapl_free
* Function: H5FD_log_fapl_free
*
* Purpose: Frees the log-specific file access properties.
* Purpose: Frees the log-specific file access properties.
*
* Return: Success: 0
* Failure: -1
* Return: SUCCEED (Can't fail)
*
* Programmer: Quincey Koziol
* Programmer: Quincey Koziol
* Thursday, April 20, 2000
*
*-------------------------------------------------------------------------
@@ -469,16 +449,16 @@ H5FD_log_fapl_free(void *_fa)
/*-------------------------------------------------------------------------
* Function: H5FD_log_open
* Function: H5FD_log_open
*
* Purpose: Create and/or opens a file as an HDF5 file.
* Purpose: Create and/or opens a file as an HDF5 file.
*
* Return: Success: A pointer to a new file data structure. The
* public fields will be initialized by the
* caller, which is always H5FD_open().
* Failure: NULL
* Return: Success: A pointer to a new file data structure. The
* public fields will be initialized by the
* caller, which is always H5FD_open().
* Failure: NULL
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
@@ -486,11 +466,11 @@ H5FD_log_fapl_free(void *_fa)
static H5FD_t *
H5FD_log_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
{
H5FD_log_t *file = NULL;
H5P_genplist_t *plist; /* Property list */
H5FD_log_fapl_t *fa; /* File access property list information */
int fd = (-1); /* File descriptor */
int o_flags; /* Flags for open() call */
H5FD_log_t *file = NULL;
H5P_genplist_t *plist; /* Property list */
H5FD_log_fapl_t *fa; /* File access property list information */
int fd = -1; /* File descriptor */
int o_flags; /* Flags for open() call */
#ifdef H5_HAVE_WIN32_API
struct _BY_HANDLE_FILE_INFORMATION fileinfo;
#endif
@@ -499,8 +479,8 @@ H5FD_log_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
struct timeval open_timeval_diff;
struct timeval stat_timeval_diff;
#endif /* H5_HAVE_GETTIMEOFDAY */
h5_stat_t sb;
H5FD_t *ret_value; /* Return value */
h5_stat_t sb;
H5FD_t *ret_value; /* Return value */
FUNC_ENTER_NOAPI_NOINIT
@@ -677,14 +657,14 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_log_close
* Function: H5FD_log_close
*
* Purpose: Closes an HDF5 file.
* Purpose: Closes an HDF5 file.
*
* Return: Success: 0
* Failure: -1, file not closed.
* Return: Success: SUCCEED
* Failure: FAIL, file not closed.
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
@@ -825,16 +805,16 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_log_cmp
* Function: H5FD_log_cmp
*
* Purpose: Compares two files belonging to this driver using an
* arbitrary (but consistent) ordering.
* Purpose: Compares two files belonging to this driver using an
* arbitrary (but consistent) ordering.
*
* Return: Success: A value like strcmp()
* Failure: never fails (arguments were checked by the
* caller).
* Return: Success: A value like strcmp()
* Failure: never fails (arguments were checked by the
* caller).
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
@@ -842,8 +822,8 @@ done:
static int
H5FD_log_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
{
const H5FD_log_t *f1 = (const H5FD_log_t *)_f1;
const H5FD_log_t *f2 = (const H5FD_log_t *)_f2;
const H5FD_log_t *f1 = (const H5FD_log_t *)_f1;
const H5FD_log_t *f2 = (const H5FD_log_t *)_f2;
int ret_value = 0;
FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -886,15 +866,14 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_log_query
* Function: H5FD_log_query
*
* Purpose: Set the flags that this VFL driver is capable of supporting.
* Purpose: Set the flags that this VFL driver is capable of supporting.
* (listed in H5FDpublic.h)
*
* Return: Success: non-negative
* Failure: negative
* Return: SUCCEED (Can't fail)
*
* Programmer: Quincey Koziol
* Programmer: Quincey Koziol
* Friday, August 25, 2000
*
*-------------------------------------------------------------------------
@@ -902,7 +881,7 @@ done:
static herr_t
H5FD_log_query(const H5FD_t *_file, unsigned long *flags /* out */)
{
const H5FD_log_t *file = (const H5FD_log_t *)_file;
const H5FD_log_t *file = (const H5FD_log_t *)_file;
FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -925,19 +904,18 @@ H5FD_log_query(const H5FD_t *_file, unsigned long *flags /* out */)
/*-------------------------------------------------------------------------
* Function: H5FD_log_alloc
* Function: H5FD_log_alloc
*
* Purpose: Allocate file memory.
* Purpose: Allocate file memory.
*
* Return: Success: Address of new memory
* Failure: HADDR_UNDEF
* Return: Success: Address of new memory
* Failure: HADDR_UNDEF
*
* Programmer: Quincey Koziol
* Programmer: Quincey Koziol
* Monday, April 17, 2000
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static haddr_t
H5FD_log_alloc(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, hsize_t size)
{
@@ -979,16 +957,16 @@ H5FD_log_alloc(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, hsize_t siz
/*-------------------------------------------------------------------------
* Function: H5FD_log_get_eoa
* Function: H5FD_log_get_eoa
*
* Purpose: Gets the end-of-address marker for the file. The EOA marker
* is the first address past the last byte allocated in the
* format address space.
* Purpose: Gets the end-of-address marker for the file. The EOA marker
* is the first address past the last byte allocated in the
* format address space.
*
* Return: Success: The end-of-address marker.
* Failure: HADDR_UNDEF
* Return: Success: The end-of-address marker.
* Failure: HADDR_UNDEF
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Monday, August 2, 1999
*
*-------------------------------------------------------------------------
@@ -996,7 +974,7 @@ H5FD_log_alloc(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, hsize_t siz
static haddr_t
H5FD_log_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type)
{
const H5FD_log_t *file = (const H5FD_log_t *)_file;
const H5FD_log_t *file = (const H5FD_log_t *)_file;
FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -1005,16 +983,15 @@ H5FD_log_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type)
/*-------------------------------------------------------------------------
* Function: H5FD_log_set_eoa
* Function: H5FD_log_set_eoa
*
* Purpose: Set the end-of-address marker for the file. This function is
* called shortly after an existing HDF5 file is opened in order
* to tell the driver where the end of the HDF5 data is located.
* Purpose: Set the end-of-address marker for the file. This function is
* called shortly after an existing HDF5 file is opened in order
* to tell the driver where the end of the HDF5 data is located.
*
* Return: Success: 0
* Failure: -1
* Return: SUCCEED (Can't fail)
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
@@ -1022,25 +999,25 @@ H5FD_log_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type)
static herr_t
H5FD_log_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t addr)
{
H5FD_log_t *file = (H5FD_log_t *)_file;
H5FD_log_t *file = (H5FD_log_t *)_file;
FUNC_ENTER_NOAPI_NOINIT_NOERR
if(file->fa.flags != 0) {
if(H5F_addr_gt(addr, file->eoa) && H5F_addr_gt(addr, 0)) {
hsize_t size = addr - file->eoa;
if(H5F_addr_gt(addr, file->eoa) && H5F_addr_gt(addr, 0)) {
hsize_t size = addr - file->eoa;
/* Retain the flavor of the space allocated by the extension */
if(file->fa.flags & H5FD_LOG_FLAVOR) {
HDassert(addr < file->iosize);
H5_CHECK_OVERFLOW(size, hsize_t, size_t);
HDmemset(&file->flavor[file->eoa], (int)type, (size_t)size);
} /* end if */
if(file->fa.flags & H5FD_LOG_FLAVOR) {
HDassert(addr < file->iosize);
H5_CHECK_OVERFLOW(size, hsize_t, size_t);
HDmemset(&file->flavor[file->eoa], (int)type, (size_t)size);
} /* end if */
/* Log the extension like an allocation */
if(file->fa.flags & H5FD_LOG_ALLOC)
HDfprintf(file->logfp, "%10a-%10a (%10Hu bytes) (%s) Allocated\n", file->eoa, addr, size, flavors[type]);
} /* end if */
if(file->fa.flags & H5FD_LOG_ALLOC)
HDfprintf(file->logfp, "%10a-%10a (%10Hu bytes) (%s) Allocated\n", file->eoa, addr, size, flavors[type]);
} /* end if */
} /* end if */
file->eoa = addr;
@@ -1050,18 +1027,18 @@ H5FD_log_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t addr)
/*-------------------------------------------------------------------------
* Function: H5FD_log_get_eof
* Function: H5FD_log_get_eof
*
* Purpose: Returns the end-of-file marker, which is the greater of
* either the filesystem end-of-file or the HDF5 end-of-address
* markers.
* Purpose: Returns the end-of-file marker, which is the greater of
* either the filesystem end-of-file or the HDF5 end-of-address
* markers.
*
* Return: Success: End of file address, the first address past
* the end of the "file", either the filesystem file
* or the HDF5 file.
* Failure: HADDR_UNDEF
* Return: Success: End of file address, the first address past
* the end of the "file", either the filesystem file
* or the HDF5 file.
* Failure: HADDR_UNDEF
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
@@ -1082,14 +1059,13 @@ H5FD_log_get_eof(const H5FD_t *_file)
*
* Purpose: Returns the file handle of LOG file driver.
*
* Returns: Non-negative if succeed or negative if fails.
* Returns: SUCCEED/FAIL
*
* Programmer: Raymond Lu
* Sept. 16, 2002
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static herr_t
H5FD_log_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void **file_handle)
{
@@ -1109,27 +1085,26 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_log_read
* Function: H5FD_log_read
*
* Purpose: Reads SIZE bytes of data from FILE beginning at address ADDR
* into buffer BUF according to data transfer properties in
* DXPL_ID.
* Purpose: Reads SIZE bytes of data from FILE beginning at address ADDR
* into buffer BUF according to data transfer properties in
* DXPL_ID.
*
* Return: Success: Zero. Result is stored in caller-supplied
* buffer BUF.
* Failure: -1, Contents of buffer BUF are undefined.
* Return: Success: SUCCEED. Result is stored in caller-supplied
* buffer BUF.
* Failure: FAIL, Contents of buffer BUF are undefined.
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static herr_t
H5FD_log_read(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t addr,
size_t size, void *buf/*out*/)
size_t size, void *buf/*out*/)
{
H5FD_log_t *file = (H5FD_log_t *)_file;
H5FD_log_t *file = (H5FD_log_t *)_file;
size_t orig_size = size; /* Save the original size for later */
haddr_t orig_addr = addr;
#ifdef H5_HAVE_GETTIMEOFDAY
@@ -1217,16 +1192,16 @@ H5FD_log_read(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t addr
#endif /* H5_HAVE_GETTIMEOFDAY */
while(size > 0) {
h5_log_io_t bytes_in = 0; /* # of bytes to read */
h5_log_io_ret_t bytes_read = -1; /* # of bytes actually read */
h5_posix_io_t bytes_in = 0; /* # of bytes to read */
h5_posix_io_ret_t bytes_read = -1; /* # of bytes actually read */
/* Trying to read more bytes than the return type can handle is
* undefined behavior in POSIX.
*/
if(size > H5_LOG_MAX_IO_BYTES_g)
bytes_in = H5_LOG_MAX_IO_BYTES_g;
if(size > H5_POSIX_MAX_IO_BYTES)
bytes_in = H5_POSIX_MAX_IO_BYTES;
else
bytes_in = (h5_log_io_t)size;
bytes_in = (h5_posix_io_t)size;
do {
bytes_read = HDread(file->fd, buf, bytes_in);
@@ -1240,7 +1215,7 @@ H5FD_log_read(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t addr
if(file->fa.flags & H5FD_LOG_LOC_READ)
HDfprintf(file->logfp, "Error! Reading: %10a-%10a (%10Zu bytes)\n", orig_addr, (orig_addr + orig_size) - 1, orig_size);
HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', buf = %p, size = %lu, offset = %llu", HDctime(&mytime), file->filename, file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long)size, (unsigned long long)myoffset);
HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', buf = %p, total read size = %llu, bytes this sub-read = %llu, bytes actually read = %llu, offset = %llu", HDctime(&mytime), file->filename, file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_read, (unsigned long long)myoffset);
} /* end if */
if(0 == bytes_read) {
@@ -1311,26 +1286,24 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_log_write
* Function: H5FD_log_write
*
* Purpose: Writes SIZE bytes of data to FILE beginning at address ADDR
* from buffer BUF according to data transfer properties in
* DXPL_ID.
* Purpose: Writes SIZE bytes of data to FILE beginning at address ADDR
* from buffer BUF according to data transfer properties in
* DXPL_ID.
*
* Return: Success: Zero
* Failure: -1
* Return: SUCCEED/FAIL
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static herr_t
H5FD_log_write(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t addr,
size_t size, const void *buf)
size_t size, const void *buf)
{
H5FD_log_t *file = (H5FD_log_t *)_file;
H5FD_log_t *file = (H5FD_log_t *)_file;
size_t orig_size = size; /* Save the original size for later */
haddr_t orig_addr = addr;
#ifdef H5_HAVE_GETTIMEOFDAY
@@ -1423,16 +1396,16 @@ H5FD_log_write(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t add
#endif /* H5_HAVE_GETTIMEOFDAY */
while(size > 0) {
h5_log_io_t bytes_in = 0; /* # of bytes to write */
h5_log_io_ret_t bytes_wrote = -1; /* # of bytes written */
h5_posix_io_t bytes_in = 0; /* # of bytes to write */
h5_posix_io_ret_t bytes_wrote = -1; /* # of bytes written */
/* Trying to write more bytes than the return type can handle is
* undefined behavior in POSIX.
*/
if(size > H5_LOG_MAX_IO_BYTES_g)
bytes_in = H5_LOG_MAX_IO_BYTES_g;
if(size > H5_POSIX_MAX_IO_BYTES)
bytes_in = H5_POSIX_MAX_IO_BYTES;
else
bytes_in = (h5_log_io_t)size;
bytes_in = (h5_posix_io_t)size;
do {
bytes_wrote = HDwrite(file->fd, buf, bytes_in);
@@ -1446,7 +1419,7 @@ H5FD_log_write(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t add
if(file->fa.flags & H5FD_LOG_LOC_WRITE)
HDfprintf(file->logfp, "Error! Writing: %10a-%10a (%10Zu bytes)\n", orig_addr, (orig_addr + orig_size) - 1, orig_size);
HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', buf = %p, size = %lu, offset = %llu", HDctime(&mytime), file->filename, file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long)size, (unsigned long long)myoffset);
HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', buf = %p, total write size = %llu, bytes this sub-write = %llu, bytes actually written = %llu, offset = %llu", HDctime(&mytime), file->filename, file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_wrote, (unsigned long long)myoffset);
} /* end if */
HDassert(bytes_wrote > 0);
@@ -1516,25 +1489,23 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_log_truncate
* Function: H5FD_log_truncate
*
* Purpose: Makes sure that the true file size is the same (or larger)
* than the end-of-address.
* Purpose: Makes sure that the true file size is the same (or larger)
* than the end-of-address.
*
* Return: Success: Non-negative
* Failure: Negative
* Return: SUCCEED/FAIL
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Wednesday, August 4, 1999
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static herr_t
H5FD_log_truncate(H5FD_t *_file, hid_t UNUSED dxpl_id, hbool_t UNUSED closing)
{
H5FD_log_t *file = (H5FD_log_t *)_file;
herr_t ret_value = SUCCEED; /* Return value */
H5FD_log_t *file = (H5FD_log_t *)_file;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI_NOINIT
@@ -1595,4 +1566,3 @@ H5FD_log_truncate(H5FD_t *_file, hid_t UNUSED dxpl_id, hbool_t UNUSED closing)
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_log_truncate() */

View File

@@ -71,21 +71,6 @@
*/
static hid_t H5FD_MPIPOSIX_g = 0;
/* Since Windows doesn't follow the rest of the world when it comes
* to POSIX I/O types, some typedefs and constants are needed to avoid
* making the code messy with #ifdefs.
*/
#ifdef H5_HAVE_WIN32_API
typedef unsigned int h5_mpiposix_io_t;
typedef int h5_mpiposix_io_ret_t;
static int H5_MPIPOSIX_MAX_IO_BYTES_g = INT_MAX;
#else
/* Unix, everyone else */
typedef size_t h5_mpiposix_io_t;
typedef ssize_t h5_mpiposix_io_ret_t;
static size_t H5_MPIPOSIX_MAX_IO_BYTES_g = SSIZET_MAX;
#endif /* H5_HAVE_WIN32_API */
/*
* The description of a file belonging to this driver.
* The EOF value is only used just after the file is opened in order for the
@@ -236,19 +221,16 @@ static const H5FD_class_mpi_t H5FD_mpiposix_g = {
};
/*--------------------------------------------------------------------------
NAME
H5FD_mpiposix_init_interface -- Initialize interface-specific information
USAGE
herr_t H5FD_mpiposix_init_interface()
RETURNS
Non-negative on success/Negative on failure
DESCRIPTION
Initializes any interface-specific data or routines. (Just calls
H5FD_mpiposix_init currently).
--------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------
* Function: H5FD_mpiposix_init_interface
*
* Purpose: Initializes any interface-specific data or routines.
*
* Return: Success: The driver ID for the mpiposix driver.
* Failure: Negative.
*
*-------------------------------------------------------------------------
*/
static herr_t
H5FD_mpiposix_init_interface(void)
{
@@ -1079,16 +1061,16 @@ H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
*/
while(size > 0) {
h5_mpiposix_io_t bytes_in = 0; /* # of bytes to read */
h5_mpiposix_io_ret_t bytes_read = -1; /* # of bytes actually read */
h5_posix_io_t bytes_in = 0; /* # of bytes to read */
h5_posix_io_ret_t bytes_read = -1; /* # of bytes actually read */
/* Trying to read more bytes than the return type can handle is
* undefined behavior in POSIX.
*/
if(size > H5_MPIPOSIX_MAX_IO_BYTES_g)
bytes_in = H5_MPIPOSIX_MAX_IO_BYTES_g;
if(size > H5_POSIX_MAX_IO_BYTES)
bytes_in = H5_POSIX_MAX_IO_BYTES;
else
bytes_in = (h5_mpiposix_io_t)size;
bytes_in = (h5_posix_io_t)size;
do {
bytes_read = HDread(file->fd, buf, bytes_in);
@@ -1099,7 +1081,7 @@ H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
time_t mytime = HDtime(NULL);
HDoff_t myoffset = HDlseek(file->fd, (HDoff_t)0, SEEK_CUR);
HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed: time = %s, file descriptor = %d, errno = %d, error message = '%s', buf = %p, size = %lu, offset = %llu", HDctime(&mytime), file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long)size, (unsigned long long)myoffset);
HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed: time = %s, file descriptor = %d, errno = %d, error message = '%s', buf = %p, total read size = %llu, bytes this sub-read = %llu, bytes actually read = %llu, offset = %llu", HDctime(&mytime), file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_read, (unsigned long long)myoffset);
} /* end if */
if(0 == bytes_read) {
@@ -1263,16 +1245,16 @@ H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
*/
while(size > 0) {
h5_mpiposix_io_t bytes_in = 0; /* # of bytes to write */
h5_mpiposix_io_ret_t bytes_wrote = -1; /* # of bytes actually written */
h5_posix_io_t bytes_in = 0; /* # of bytes to write */
h5_posix_io_ret_t bytes_wrote = -1; /* # of bytes actually written */
/* Trying to write more bytes than the return type can handle is
* undefined behavior in POSIX.
*/
if(size > H5_MPIPOSIX_MAX_IO_BYTES_g)
bytes_in = H5_MPIPOSIX_MAX_IO_BYTES_g;
if(size > H5_POSIX_MAX_IO_BYTES)
bytes_in = H5_POSIX_MAX_IO_BYTES;
else
bytes_in = (h5_mpiposix_io_t)size;
bytes_in = (h5_posix_io_t)size;
do {
bytes_wrote = HDwrite(file->fd, buf, bytes_in);
@@ -1283,7 +1265,7 @@ H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
time_t mytime = HDtime(NULL);
HDoff_t myoffset = HDlseek(file->fd, (HDoff_t)0, SEEK_CUR);
HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file write failed: time = %s, file descriptor = %d, errno = %d, error message = '%s', buf = %p, size = %lu, offset = %llu", HDctime(&mytime), file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long)size, (unsigned long long)myoffset);
HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file write failed: time = %s, file descriptor = %d, errno = %d, error message = '%s', buf = %p, total write size = %llu, bytes this sub-write = %llu, bytes actually written = %llu, offset = %llu", HDctime(&mytime), file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_wrote, (unsigned long long)myoffset);
} /* end if */
if(0 == bytes_wrote) {

View File

@@ -17,56 +17,41 @@
* Programmer: Robb Matzke <matzke@llnl.gov>
* Thursday, July 29, 1999
*
* Purpose: The POSIX unbuffered file driver using only the HDF5 public
* API and with a few optimizations: the lseek() call is made
* only when the current file position is unknown or needs to be
* changed based on previous I/O through this driver (don't mix
* I/O from this driver with I/O from other parts of the
* application to the same file).
* Purpose: The POSIX unbuffered file driver using only the HDF5 public
* API and with a few optimizations: the lseek() call is made
* only when the current file position is unknown or needs to be
* changed based on previous I/O through this driver (don't mix
* I/O from this driver with I/O from other parts of the
* application to the same file).
*/
/* Interface initialization */
#define H5_INTERFACE_INIT_FUNC H5FD_sec2_init_interface
#define H5_INTERFACE_INIT_FUNC H5FD_sec2_init_interface
#include "H5private.h" /* Generic Functions */
#include "H5Eprivate.h" /* Error handling */
#include "H5Fprivate.h" /* File access */
#include "H5FDprivate.h" /* File drivers */
#include "H5FDsec2.h" /* Sec2 file driver */
#include "H5FLprivate.h" /* Free Lists */
#include "H5Iprivate.h" /* IDs */
#include "H5MMprivate.h" /* Memory management */
#include "H5Pprivate.h" /* Property lists */
#include "H5private.h" /* Generic Functions */
#include "H5Eprivate.h" /* Error handling */
#include "H5Fprivate.h" /* File access */
#include "H5FDprivate.h" /* File drivers */
#include "H5FDsec2.h" /* Sec2 file driver */
#include "H5FLprivate.h" /* Free Lists */
#include "H5Iprivate.h" /* IDs */
#include "H5MMprivate.h" /* Memory management */
#include "H5Pprivate.h" /* Property lists */
/* The driver identification number, initialized at runtime */
static hid_t H5FD_SEC2_g = 0;
/* Since Windows doesn't follow the rest of the world when it comes
* to POSIX I/O types, some typedefs and constants are needed to avoid
* making the code messy with #ifdefs.
*/
#ifdef H5_HAVE_WIN32_API
typedef unsigned int h5_sec2_io_t;
typedef int h5_sec2_io_ret_t;
static int H5_SEC2_MAX_IO_BYTES_g = INT_MAX;
#else
/* Unix, everyone else */
typedef size_t h5_sec2_io_t;
typedef ssize_t h5_sec2_io_ret_t;
static size_t H5_SEC2_MAX_IO_BYTES_g = SSIZET_MAX;
#endif /* H5_HAVE_WIN32_API */
/* The description of a file belonging to this driver. The `eoa' and `eof'
/* The description of a file belonging to this driver. The 'eoa' and 'eof'
* determine the amount of hdf5 address space in use and the high-water mark
* of the file (the current size of the underlying filesystem file). The
* `pos' value is used to eliminate file position updates when they would be a
* 'pos' value is used to eliminate file position updates when they would be a
* no-op. Unfortunately we've found systems that use separate file position
* indicators for reading and writing so the lseek can only be eliminated if
* the current operation is the same as the previous operation. When opening
* a file the `eof' will be set to the current file size, `eoa' will be set
* to zero, `pos' will be set to H5F_ADDR_UNDEF (as it is when an error
* occurs), and `op' will be set to H5F_OP_UNKNOWN.
* a file the 'eof' will be set to the current file size, `eoa' will be set
* to zero, 'pos' will be set to H5F_ADDR_UNDEF (as it is when an error
* occurs), and 'op' will be set to H5F_OP_UNKNOWN.
*/
typedef struct H5FD_sec2_t {
H5FD_t pub; /* public stuff, must be first */
@@ -123,28 +108,27 @@ typedef struct H5FD_sec2_t {
* These macros check for overflow of various quantities. These macros
* assume that HDoff_t is signed and haddr_t and size_t are unsigned.
*
* ADDR_OVERFLOW: Checks whether a file address of type `haddr_t'
* is too large to be represented by the second argument
* of the file seek function.
* ADDR_OVERFLOW: Checks whether a file address of type `haddr_t'
* is too large to be represented by the second argument
* of the file seek function.
*
* SIZE_OVERFLOW: Checks whether a buffer size of type `hsize_t' is too
* large to be represented by the `size_t' type.
* SIZE_OVERFLOW: Checks whether a buffer size of type `hsize_t' is too
* large to be represented by the `size_t' type.
*
* REGION_OVERFLOW: Checks whether an address and size pair describe data
* which can be addressed entirely by the second
* argument of the file seek function.
* REGION_OVERFLOW: Checks whether an address and size pair describe data
* which can be addressed entirely by the second
* argument of the file seek function.
*/
#define MAXADDR (((haddr_t)1<<(8*sizeof(HDoff_t)-1))-1)
#define ADDR_OVERFLOW(A) (HADDR_UNDEF==(A) || \
((A) & ~(haddr_t)MAXADDR))
#define SIZE_OVERFLOW(Z) ((Z) & ~(hsize_t)MAXADDR)
#define REGION_OVERFLOW(A,Z) (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) || \
HADDR_UNDEF==(A)+(Z) || \
(HDoff_t)((A)+(Z))<(HDoff_t)(A))
#define ADDR_OVERFLOW(A) (HADDR_UNDEF==(A) || ((A) & ~(haddr_t)MAXADDR))
#define SIZE_OVERFLOW(Z) ((Z) & ~(hsize_t)MAXADDR)
#define REGION_OVERFLOW(A,Z) (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) || \
HADDR_UNDEF==(A)+(Z) || \
(HDoff_t)((A)+(Z))<(HDoff_t)(A))
/* Prototypes */
static H5FD_t *H5FD_sec2_open(const char *name, unsigned flags, hid_t fapl_id,
haddr_t maxaddr);
haddr_t maxaddr);
static herr_t H5FD_sec2_close(H5FD_t *_file);
static int H5FD_sec2_cmp(const H5FD_t *_f1, const H5FD_t *_f2);
static herr_t H5FD_sec2_query(const H5FD_t *_f1, unsigned long *flags);
@@ -153,62 +137,59 @@ static herr_t H5FD_sec2_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t addr);
static haddr_t H5FD_sec2_get_eof(const H5FD_t *_file);
static herr_t H5FD_sec2_get_handle(H5FD_t *_file, hid_t fapl, void** file_handle);
static herr_t H5FD_sec2_read(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id, haddr_t addr,
size_t size, void *buf);
size_t size, void *buf);
static herr_t H5FD_sec2_write(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id, haddr_t addr,
size_t size, const void *buf);
size_t size, const void *buf);
static herr_t H5FD_sec2_truncate(H5FD_t *_file, hid_t dxpl_id, hbool_t closing);
static const H5FD_class_t H5FD_sec2_g = {
"sec2", /*name */
MAXADDR, /*maxaddr */
H5F_CLOSE_WEAK, /* fc_degree */
NULL, /*sb_size */
NULL, /*sb_encode */
NULL, /*sb_decode */
0, /*fapl_size */
NULL, /*fapl_get */
NULL, /*fapl_copy */
NULL, /*fapl_free */
0, /*dxpl_size */
NULL, /*dxpl_copy */
NULL, /*dxpl_free */
H5FD_sec2_open, /*open */
H5FD_sec2_close, /*close */
H5FD_sec2_cmp, /*cmp */
H5FD_sec2_query, /*query */
NULL, /*get_type_map */
NULL, /*alloc */
NULL, /*free */
H5FD_sec2_get_eoa, /*get_eoa */
H5FD_sec2_set_eoa, /*set_eoa */
H5FD_sec2_get_eof, /*get_eof */
H5FD_sec2_get_handle, /*get_handle */
H5FD_sec2_read, /*read */
H5FD_sec2_write, /*write */
NULL, /*flush */
H5FD_sec2_truncate, /*truncate */
NULL, /*lock */
NULL, /*unlock */
H5FD_FLMAP_DICHOTOMY /*fl_map */
"sec2", /* name */
MAXADDR, /* maxaddr */
H5F_CLOSE_WEAK, /* fc_degree */
NULL, /* sb_size */
NULL, /* sb_encode */
NULL, /* sb_decode */
0, /* fapl_size */
NULL, /* fapl_get */
NULL, /* fapl_copy */
NULL, /* fapl_free */
0, /* dxpl_size */
NULL, /* dxpl_copy */
NULL, /* dxpl_free */
H5FD_sec2_open, /* open */
H5FD_sec2_close, /* close */
H5FD_sec2_cmp, /* cmp */
H5FD_sec2_query, /* query */
NULL, /* get_type_map */
NULL, /* alloc */
NULL, /* free */
H5FD_sec2_get_eoa, /* get_eoa */
H5FD_sec2_set_eoa, /* set_eoa */
H5FD_sec2_get_eof, /* get_eof */
H5FD_sec2_get_handle, /* get_handle */
H5FD_sec2_read, /* read */
H5FD_sec2_write, /* write */
NULL, /* flush */
H5FD_sec2_truncate, /* truncate */
NULL, /* lock */
NULL, /* unlock */
H5FD_FLMAP_DICHOTOMY /* fl_map */
};
/* Declare a free list to manage the H5FD_sec2_t struct */
H5FL_DEFINE_STATIC(H5FD_sec2_t);
/*--------------------------------------------------------------------------
NAME
H5FD_sec2_init_interface -- Initialize interface-specific information
USAGE
herr_t H5FD_sec2_init_interface()
RETURNS
Non-negative on success/Negative on failure
DESCRIPTION
Initializes any interface-specific data or routines. (Just calls
H5FD_sec2_init currently).
--------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------
* Function: H5FD_sec2_init_interface
*
* Purpose: Initializes any interface-specific data or routines.
*
* Return: Success: The driver ID for the sec2 driver.
* Failure: Negative
*
*-------------------------------------------------------------------------
*/
static herr_t
H5FD_sec2_init_interface(void)
{
@@ -219,15 +200,15 @@ H5FD_sec2_init_interface(void)
/*-------------------------------------------------------------------------
* Function: H5FD_sec2_init
* Function: H5FD_sec2_init
*
* Purpose: Initialize this driver by registering the driver with the
* library.
* Purpose: Initialize this driver by registering the driver with the
* library.
*
* Return: Success: The driver ID for the sec2 driver.
* Failure: Negative.
* Return: Success: The driver ID for the sec2 driver.
* Failure: Negative
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
@@ -251,9 +232,9 @@ done:
/*---------------------------------------------------------------------------
* Function: H5FD_sec2_term
* Function: H5FD_sec2_term
*
* Purpose: Shut down the VFD
* Purpose: Shut down the VFD
*
* Returns: <none>
*
@@ -275,16 +256,16 @@ H5FD_sec2_term(void)
/*-------------------------------------------------------------------------
* Function: H5Pset_fapl_sec2
* Function: H5Pset_fapl_sec2
*
* Purpose: Modify the file access property list to use the H5FD_SEC2
* driver defined in this source file. There are no driver
* specific properties.
* Purpose: Modify the file access property list to use the H5FD_SEC2
* driver defined in this source file. There are no driver
* specific properties.
*
* Return: Non-negative on success/Negative on failure
* Return: SUCCEED/FAIL
*
* Programmer: Robb Matzke
* Thursday, February 19, 1998
* Programmer: Robb Matzke
* Thursday, February 19, 1998
*
*-------------------------------------------------------------------------
*/
@@ -308,16 +289,16 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_sec2_open
* Function: H5FD_sec2_open
*
* Purpose: Create and/or opens a file as an HDF5 file.
* Purpose: Create and/or opens a file as an HDF5 file.
*
* Return: Success: A pointer to a new file data structure. The
* public fields will be initialized by the
* caller, which is always H5FD_open().
* Failure: NULL
* Return: Success: A pointer to a new file data structure. The
* public fields will be initialized by the
* caller, which is always H5FD_open().
* Failure: NULL
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
@@ -433,14 +414,14 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_sec2_close
* Function: H5FD_sec2_close
*
* Purpose: Closes an HDF5 file.
* Purpose: Closes an HDF5 file.
*
* Return: Success: 0
* Failure: -1, file not closed.
* Return: Success: SUCCEED
* Failure: FAIL, file not closed.
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
@@ -448,8 +429,8 @@ done:
static herr_t
H5FD_sec2_close(H5FD_t *_file)
{
H5FD_sec2_t *file = (H5FD_sec2_t *)_file;
herr_t ret_value = SUCCEED; /* Return value */
H5FD_sec2_t *file = (H5FD_sec2_t *)_file;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI_NOINIT
@@ -469,16 +450,16 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_sec2_cmp
* Function: H5FD_sec2_cmp
*
* Purpose: Compares two files belonging to this driver using an
* arbitrary (but consistent) ordering.
* Purpose: Compares two files belonging to this driver using an
* arbitrary (but consistent) ordering.
*
* Return: Success: A value like strcmp()
* Failure: never fails (arguments were checked by the
* caller).
* Return: Success: A value like strcmp()
* Failure: never fails (arguments were checked by the
* caller).
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
@@ -486,8 +467,8 @@ done:
static int
H5FD_sec2_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
{
const H5FD_sec2_t *f1 = (const H5FD_sec2_t *)_f1;
const H5FD_sec2_t *f2 = (const H5FD_sec2_t *)_f2;
const H5FD_sec2_t *f1 = (const H5FD_sec2_t *)_f1;
const H5FD_sec2_t *f2 = (const H5FD_sec2_t *)_f2;
int ret_value = 0;
FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -528,15 +509,14 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_sec2_query
* Function: H5FD_sec2_query
*
* Purpose: Set the flags that this VFL driver is capable of supporting.
* Purpose: Set the flags that this VFL driver is capable of supporting.
* (listed in H5FDpublic.h)
*
* Return: Success: non-negative
* Failure: negative
* Return: SUCCEED (Can't fail)
*
* Programmer: Quincey Koziol
* Programmer: Quincey Koziol
* Friday, August 25, 2000
*
*-------------------------------------------------------------------------
@@ -567,21 +547,19 @@ H5FD_sec2_query(const H5FD_t *_file, unsigned long *flags /* out */)
/*-------------------------------------------------------------------------
* Function: H5FD_sec2_get_eoa
* Function: H5FD_sec2_get_eoa
*
* Purpose: Gets the end-of-address marker for the file. The EOA marker
* is the first address past the last byte allocated in the
* format address space.
* Purpose: Gets the end-of-address marker for the file. The EOA marker
* is the first address past the last byte allocated in the
* format address space.
*
* Return: Success: The end-of-address marker.
* Failure: HADDR_UNDEF
* Return: The end-of-address marker.
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Monday, August 2, 1999
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static haddr_t
H5FD_sec2_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type)
{
@@ -594,21 +572,19 @@ H5FD_sec2_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type)
/*-------------------------------------------------------------------------
* Function: H5FD_sec2_set_eoa
* Function: H5FD_sec2_set_eoa
*
* Purpose: Set the end-of-address marker for the file. This function is
* called shortly after an existing HDF5 file is opened in order
* to tell the driver where the end of the HDF5 data is located.
* Purpose: Set the end-of-address marker for the file. This function is
* called shortly after an existing HDF5 file is opened in order
* to tell the driver where the end of the HDF5 data is located.
*
* Return: Success: 0
* Failure: -1
* Return: SUCCEED (Can't fail)
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static herr_t
H5FD_sec2_set_eoa(H5FD_t *_file, H5FD_mem_t UNUSED type, haddr_t addr)
{
@@ -623,18 +599,16 @@ H5FD_sec2_set_eoa(H5FD_t *_file, H5FD_mem_t UNUSED type, haddr_t addr)
/*-------------------------------------------------------------------------
* Function: H5FD_sec2_get_eof
* Function: H5FD_sec2_get_eof
*
* Purpose: Returns the end-of-file marker, which is the greater of
* either the filesystem end-of-file or the HDF5 end-of-address
* markers.
* Purpose: Returns the end-of-file marker, which is the greater of
* either the filesystem end-of-file or the HDF5 end-of-address
* markers.
*
* Return: Success: End of file address, the first address past
* the end of the "file", either the filesystem file
* or the HDF5 file.
* Failure: HADDR_UNDEF
* Return: End of file address, the first address past the end of the
* "file", either the filesystem file or the HDF5 file.
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
@@ -642,7 +616,7 @@ H5FD_sec2_set_eoa(H5FD_t *_file, H5FD_mem_t UNUSED type, haddr_t addr)
static haddr_t
H5FD_sec2_get_eof(const H5FD_t *_file)
{
const H5FD_sec2_t *file = (const H5FD_sec2_t *)_file;
const H5FD_sec2_t *file = (const H5FD_sec2_t *)_file;
FUNC_ENTER_NOAPI_NOINIT_NOERR
@@ -655,14 +629,13 @@ H5FD_sec2_get_eof(const H5FD_t *_file)
*
* Purpose: Returns the file handle of sec2 file driver.
*
* Returns: Non-negative if succeed or negative if fails.
* Returns: SUCCEED/FAIL
*
* Programmer: Raymond Lu
* Sept. 16, 2002
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static herr_t
H5FD_sec2_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void **file_handle)
{
@@ -682,22 +655,21 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_sec2_read
* Function: H5FD_sec2_read
*
* Purpose: Reads SIZE bytes of data from FILE beginning at address ADDR
* into buffer BUF according to data transfer properties in
* DXPL_ID.
* Purpose: Reads SIZE bytes of data from FILE beginning at address ADDR
* into buffer BUF according to data transfer properties in
* DXPL_ID.
*
* Return: Success: Zero. Result is stored in caller-supplied
* buffer BUF.
* Failure: -1, Contents of buffer BUF are undefined.
* Return: Success: SUCCEED. Result is stored in caller-supplied
* buffer BUF.
* Failure: FAIL, Contents of buffer BUF are undefined.
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static herr_t
H5FD_sec2_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
haddr_t addr, size_t size, void *buf /*out*/)
@@ -730,16 +702,16 @@ H5FD_sec2_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
*/
while(size > 0) {
h5_sec2_io_t bytes_in = 0; /* # of bytes to read */
h5_sec2_io_ret_t bytes_read = -1; /* # of bytes actually read */
h5_posix_io_t bytes_in = 0; /* # of bytes to read */
h5_posix_io_ret_t bytes_read = -1; /* # of bytes actually read */
/* Trying to read more bytes than the return type can handle is
* undefined behavior in POSIX.
*/
if(size > H5_SEC2_MAX_IO_BYTES_g)
bytes_in = H5_SEC2_MAX_IO_BYTES_g;
if(size > H5_POSIX_MAX_IO_BYTES)
bytes_in = H5_POSIX_MAX_IO_BYTES;
else
bytes_in = (h5_sec2_io_t)size;
bytes_in = (h5_posix_io_t)size;
do {
bytes_read = HDread(file->fd, buf, bytes_in);
@@ -750,7 +722,7 @@ H5FD_sec2_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
time_t mytime = HDtime(NULL);
HDoff_t myoffset = HDlseek(file->fd, (HDoff_t)0, SEEK_CUR);
HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', buf = %p, size = %lu, offset = %llu", HDctime(&mytime), file->filename, file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long)size, (unsigned long long)myoffset);
HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', buf = %p, total read size = %llu, bytes this sub-read = %llu, bytes actually read = %llu, offset = %llu", HDctime(&mytime), file->filename, file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_read, (unsigned long long)myoffset);
} /* end if */
if(0 == bytes_read) {
@@ -783,21 +755,19 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_sec2_write
* Function: H5FD_sec2_write
*
* Purpose: Writes SIZE bytes of data to FILE beginning at address ADDR
* from buffer BUF according to data transfer properties in
* DXPL_ID.
* Purpose: Writes SIZE bytes of data to FILE beginning at address ADDR
* from buffer BUF according to data transfer properties in
* DXPL_ID.
*
* Return: Success: Zero
* Failure: -1
* Return: SUCCEED/FAIL
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Thursday, July 29, 1999
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static herr_t
H5FD_sec2_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
haddr_t addr, size_t size, const void *buf)
@@ -829,16 +799,16 @@ H5FD_sec2_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
*/
while(size > 0) {
h5_sec2_io_t bytes_in = 0; /* # of bytes to write */
h5_sec2_io_ret_t bytes_wrote = -1; /* # of bytes written */
h5_posix_io_t bytes_in = 0; /* # of bytes to write */
h5_posix_io_ret_t bytes_wrote = -1; /* # of bytes written */
/* Trying to write more bytes than the return type can handle is
* undefined behavior in POSIX.
*/
if(size > H5_SEC2_MAX_IO_BYTES_g)
bytes_in = H5_SEC2_MAX_IO_BYTES_g;
if(size > H5_POSIX_MAX_IO_BYTES)
bytes_in = H5_POSIX_MAX_IO_BYTES;
else
bytes_in = (h5_sec2_io_t)size;
bytes_in = (h5_posix_io_t)size;
do {
bytes_wrote = HDwrite(file->fd, buf, bytes_in);
@@ -849,7 +819,7 @@ H5FD_sec2_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
time_t mytime = HDtime(NULL);
HDoff_t myoffset = HDlseek(file->fd, (HDoff_t)0, SEEK_CUR);
HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', buf = %p, size = %lu, offset = %llu", HDctime(&mytime), file->filename, file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long)size, (unsigned long long)myoffset);
HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed: time = %s, filename = '%s', file descriptor = %d, errno = %d, error message = '%s', buf = %p, total write size = %llu, bytes this sub-write = %llu, bytes actually written = %llu, offset = %llu", HDctime(&mytime), file->filename, file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_wrote, (unsigned long long)myoffset);
} /* end if */
HDassert(bytes_wrote > 0);
@@ -878,20 +848,18 @@ done:
/*-------------------------------------------------------------------------
* Function: H5FD_sec2_truncate
* Function: H5FD_sec2_truncate
*
* Purpose: Makes sure that the true file size is the same (or larger)
* than the end-of-address.
* Purpose: Makes sure that the true file size is the same (or larger)
* than the end-of-address.
*
* Return: Success: Non-negative
* Failure: Negative
* Return: SUCCEED/FAIL
*
* Programmer: Robb Matzke
* Programmer: Robb Matzke
* Wednesday, August 4, 1999
*
*-------------------------------------------------------------------------
*/
/* ARGSUSED */
static herr_t
H5FD_sec2_truncate(H5FD_t *_file, hid_t UNUSED dxpl_id, hbool_t UNUSED closing)
{
@@ -952,4 +920,3 @@ H5FD_sec2_truncate(H5FD_t *_file, hid_t UNUSED dxpl_id, hbool_t UNUSED closing)
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_sec2_truncate() */

View File

@@ -78,6 +78,9 @@
/* Define if the function stack tracing code is to be compiled in */
#undef HAVE_CODESTACK
/* Define if Darwin or Mac OS X */
#undef HAVE_DARWIN
/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
*/
#undef HAVE_DECL_TZNAME

View File

@@ -426,6 +426,24 @@
#define HSSIZET_MAX ((hssize_t)LLONG_MAX)
#define HSSIZET_MIN (~(HSSIZET_MAX))
/*
* Types and max sizes for POSIX I/O.
* OS X (Darwin) is odd since the max I/O size does not match the types.
*/
#if defined(H5_HAVE_WIN32_API)
# define h5_posix_io_t unsigned int
# define h5_posix_io_ret_t int
# define H5_POSIX_MAX_IO_BYTES INT_MAX
#elif defined(H5_HAVE_DARWIN)
# define h5_posix_io_t size_t
# define h5_posix_io_ret_t ssize_t
# define H5_POSIX_MAX_IO_BYTES INT_MAX
#else
# define h5_posix_io_t size_t
# define h5_posix_io_ret_t ssize_t
# define H5_POSIX_MAX_IO_BYTES SSIZET_MAX
#endif
/*
* A macro to portably increment enumerated types.
*/

View File

@@ -76,9 +76,9 @@ extern "C" {
#define H5_VERS_MAJOR 1 /* For major interface/format changes */
#define H5_VERS_MINOR 8 /* For minor interface/format changes */
#define H5_VERS_RELEASE 10 /* For tweaks, bug-fixes, or development */
#define H5_VERS_SUBRELEASE "snap14" /* For pre-releases like snap0 */
#define H5_VERS_SUBRELEASE "patch1" /* For pre-releases like snap0 */
/* Empty string for real releases. */
#define H5_VERS_INFO "HDF5 library version: 1.8.10-snap14" /* Full version string */
#define H5_VERS_INFO "HDF5 library version: 1.8.10-patch1" /* Full version string */
#define H5check() H5check_version(H5_VERS_MAJOR,H5_VERS_MINOR, \
H5_VERS_RELEASE)

View File

@@ -730,8 +730,8 @@ test_h5s_zero_dim(void)
ret = H5Pset_chunk(plist_id, SPACE1_RANK, chunk_dims);
CHECK(ret, FAIL, "H5Pset_chunk");
// ret = H5Pset_alloc_time(plist_id, alloc_time);
// CHECK(ret, FAIL, "H5Pset_alloc_time");
/* ret = H5Pset_alloc_time(plist_id, alloc_time); */
/* CHECK(ret, FAIL, "H5Pset_alloc_time"); */
dset1 = H5Dcreate2(fid1, BASICDATASET1, H5T_NATIVE_INT, sid_chunk, H5P_DEFAULT, plist_id, H5P_DEFAULT);
CHECK(dset1, FAIL, "H5Dcreate2");

View File

@@ -133,6 +133,9 @@ TESTING() {
echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
}
# Source in the output filter function definitions.
. $srcdir/../../bin/output_filter.sh
# Run a test and print PASS or *FAIL*. If a test fails then increment
# the `nerrors' global variable and (if $verbose is set) display the
# difference between the actual output and the expected output. The
@@ -145,6 +148,8 @@ TOOLTEST() {
expect="$TESTDIR/$1"
actual="$TESTDIR/`basename $1 .ddl`.out"
actual_err="$TESTDIR/`basename $1 .ddl`.err"
actual_sav=${actual}-sav
actual_err_sav=${actual_err}-sav
shift
# Run test.
@@ -156,8 +161,13 @@ TOOLTEST() {
cd $TESTDIR
$RUNSERIAL $STAT_BIN $@
) >$actual 2>$actual_err
cat $actual_err >> $actual
# save actual and actual_err in case they are needed later.
cp $actual $actual_sav
STDOUT_FILTER $actual
cp $actual_err $actual_err_sav
STDERR_FILTER $actual_err
cat $actual_err >> $actual
if [ ! -f $expect ]; then
# Create the expect file if it doesn't yet exist.
@@ -174,7 +184,7 @@ TOOLTEST() {
# Clean up output file
if test -z "$HDF5_NOCLEANUP"; then
rm -f $actual $actual_err
rm -f $actual $actual_err $actual_sav $actual_err_sav
fi
}

View File

@@ -207,6 +207,12 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
table_lp->nattrs_only2++;
curr2++;
}
/* close for next turn */
H5Aclose(attr1_id);
attr1_id = -1;
H5Aclose(attr2_id);
attr2_id = -1;
} /* end while */
/* list1 did not end */
@@ -225,6 +231,10 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
table_attr_mark_exist(infile, name1, table_lp);
table_lp->nattrs_only1++;
curr1++;
/* close for next turn */
H5Aclose(attr1_id);
attr1_id = -1;
}
/* list2 did not end */
@@ -243,6 +253,9 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
table_attr_mark_exist(infile, name2, table_lp);
table_lp->nattrs_only2++;
curr2++;
/* close for next turn */
H5Aclose(attr2_id);
}
/*------------------------------------------------------
@@ -272,6 +285,11 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
return 0;
error:
if (0 < attr1_id)
H5Aclose(attr1_id);
if (0 < attr2_id)
H5Aclose(attr2_id);
return -1;
}

View File

@@ -502,7 +502,7 @@
#define H5_PACKAGE_NAME "HDF5"
/* Define to the full name and version of this package. */
#define H5_PACKAGE_STRING "HDF5 1.8.10-snap14"
#define H5_PACKAGE_STRING "HDF5 1.8.10-patch1"
/* Define to the one symbol short name of this package. */
#define H5_PACKAGE_TARNAME "hdf5"
@@ -511,7 +511,7 @@
#define H5_PACKAGE_URL ""
/* Define to the version of this package. */
#define H5_PACKAGE_VERSION "1.8.10-snap14"
#define H5_PACKAGE_VERSION "1.8.10-patch1"
/* Width for printf() for type `long long' or `__int64', use `ll' */
#define H5_PRINTF_LL_WIDTH "ll"
@@ -674,7 +674,7 @@
/* #undef H5_USING_MEMCHECKER */
/* Version number of package */
#define H5_VERSION "1.8.10-snap14"
#define H5_VERSION "1.8.10-patch1"
/* Define if vsnprintf() returns the correct value for formatted strings that
don't fit into size allowed */

View File

@@ -552,7 +552,7 @@
#define H5_PACKAGE_NAME "HDF5"
/* Define to the full name and version of this package. */
#define H5_PACKAGE_STRING "HDF5 1.8.10-snap14"
#define H5_PACKAGE_STRING "HDF5 1.8.10-patch1"
/* Define to the one symbol short name of this package. */
#define H5_PACKAGE_TARNAME "hdf5"
@@ -561,7 +561,7 @@
#define H5_PACKAGE_URL "http://www.hdfgroup.org"
/* Define to the version of this package. */
#define H5_PACKAGE_VERSION "1.8.10-snap14"
#define H5_PACKAGE_VERSION "1.8.10-patch1"
/* Width for printf() for type `long long' or `__int64', use `ll' */
#define H5_PRINTF_LL_WIDTH "ll"
@@ -732,7 +732,7 @@
/* #undef H5_USING_MEMCHECKER */
/* Version number of package */
#define H5_VERSION "1.8.10-snap14"
#define H5_VERSION "1.8.10-patch1"
/* Define if vsnprintf() returns the correct value for formatted strings that
don't fit into size allowed */