* commit 'a7648879d729c1b75bd32f3a151831e9cbfbe31c':
Add test for reference shutdown issue
H5R: set app ref when incrementing ref_count on location held by reference (fix HDFFV-10992)
* commit '0a2bb11b248df6841daabca3970df5d8504adfc7':
address problems from comments
fix and address comments
change according to previous comments
add missing piece
remove unnecessary check macro
fix intel compile warnings
Revert "fix warnings from Intel compiler"
Revert "fix warnings and some text alignment"
Revert "let hdf5 pick up the right compiler in Intel environment"
Revert "fix issues from previous PR comments"
Revert "using a different MACRO"
using a different MACRO
fix issues from previous PR comments
let hdf5 pick up the right compiler in Intel environment
fix warnings and some text alignment
fix warnings from Intel compiler
of the va_list, so it's at least possible for another connector to know what
the operation is and decide whether to implement it or not.
Added a new VOL sub-class called "introspect" where callbacks that report
information about the connector or container can be placed. Added an
'opt_query' callback to this sub-class, for a connector to report back
to the library whether a particular optional callback operation is supported.
Also added a 'get_conn_cls' introspection callback, to retrieve the H5VL_class_t
of a connector (either the "current" connector, H5VL_GET_CONN_LVL_CURR, or
the terminal connector, H5VL_GET_CONN_LVL_TERM).
Moved the "post open" operation from a file 'specific' operation to a file
'optional' operation, now that it's possible to detect (with the 'opt_query'
introspection callback) whether a VOL connector implements an optional
operation, without just returning an error.
Added new internal VOL helper routines: H5VL_object_is_native, to determine
if an object is in (or is a) native file, and H5VL_file_is_same, to determine
if two objects are in (or are) the same terminal VOL connector's container.
(And moved the special handling for FILE_IS_EQUAL operation out of internal VOL
callback routine into H5VL_file_is_same)
Made new dataset 'get' operation for H5Dvlen_get_buf_size, aligning it better
with other 'get' operations in API.
Fixed several issues with pass-through connectors, which are now passing the
'make check-passthrough-vol' tests again.
A bunch of warning and style cleanups as well.
* commit 'b42325e8f5ff3b6bfa2ce446af5b6dc5cbbff666':
More fixes for previous committed PR #2079 dated Dec 5 2019. (1) H5O_dtype_ver_bounds[] for V112 should be H5O_DTYPE_VRESION_4 (2) The tests for the new reference types should work for V112 and beyond
* commit '7b03a1c03633d695b487642e54f897c715f8622e':
Fix H5VL_token_t type and fix H5VL_loc_by_token to use H5VL_token_t *
Change hdset_reg_ref_t and H5R_ref_t from arrays of unsigned char to structs containing those arrays. Encapsulating the arrays in this way makes it easier to write and think about pointers to these types, casts to/from these types, etc.
structs containing those arrays. Encapsulating the arrays in this way
makes it easier to write and think about pointers to these types, casts
to/from these types, etc.
An interesting side-effect that we probably should *not* rely on is
that the struct-encapsulation changes the alignment so that some GCC
warnings about casts that increase the alignment requirement of the
operand go away. Warnings like that have to be taken seriously: I will
add -Werror=cast-align to the default compiler flags so that they stop
the build quickly.
GCC warnings led me to some surprising casts in test/trefer.c. I found
that it was possible to make many simplifications after introducing the
struct-encapsulation that I described, above.
In test objcopy_ref `same_file` is assigned but never used. Delete it.
structs containing those arrays. Encapsulating the arrays in this way
makes it easier to write and think about pointers to these types, casts
to/from these types, etc.
An interesting side-effect that we probably should *not* rely on is
that the struct-encapsulation changes the alignment so that some GCC
warnings about casts that increase the alignment requirement of the
operand go away. Warnings like that have to be taken seriously: I will
add -Werror=cast-align to the default compiler flags so that they stop
the build quickly.
GCC warnings led me to some surprising casts in test/trefer.c. I found
that it was possible to make many simplifications after introducing the
struct-encapsulation that I described, above.
of `hsize_t`, `start`, to `long long`, but I think the way that I have
rewritten it, it probably produces a more useful result? As a bonus,
GCC has stopped warning about it.
* commit '4d834adba4aeb1a0174bddb83212b7073b64e269':
Use HD prefix.
Fix HDFFV-10937: use a more reliable (and probably faster) scheme for visiting all elements of a matrix in an arbitrary order.
* commit '0b721858e46a317c370a24115032d5be41688f67':
Make these scripts relocatable again: derive a relative path for the original installation prefix from the examples prefix. Use that relative path to locate the current installation prefix, always. Fall back to an absolute installation prefix if the relative path cannot be derived.
Get the path to prefix right: needs a ../ to back out of subdirectory c/.
Make this script relocatable again: derive a relative path for the original installation prefix from the examples prefix. Use that relative path to locate the current installation prefix, always. Fall back to an absolute installation prefix if the relative path cannot be derived.
Let us override the examples directory using --with-examplesdir=DIR. This is handy for NetBSD where HDF5 examples are installed by convention in $prefix/share/examples/hdf5/ rather than in ${prefix}/share/hdf5_examples/, which is the HDF5 default.
Follow longstanding execv convention for compatibility with NetBSD.
Under the examples directories, always find the installed HDF5 executables and scripts using @prefix@ instead of a relative path, because the number of ../ in the relative path will be different on NetBSD than on other systems.
Make the HDF5 configure script grok NetBSD.
For portability, insulate the HDF5 library from some system macros.
Not every system has perl installed in /usr/bin/, so change the shebang (#!) line to `/usr/bin/env perl` to locate perl on the PATH.
For portability, use the POSIX sh(1) string-comparison operator `=` instead of `==`.
Also support references to external files
Add new H5T_REF type and type conversion routines
Support conversion from H5T_REF_OBJ/DSET_REG to H5T_REF
Add H5Treclaim() API to reclaim memory of vlen/reference types
Deprecate H5Dvlen_reclaim()
Fix H5T_vlen_reclaim() and H5T_reclaim() to use private callback
Add H5T_ref_reclaim()
Move previous H5R APIs to H5Rdeprec.c
Clean up H5Ocopy
Separate H5O_copy_expand_ref() to H5Ocopy_ref()
Add support for copying new reference types
Clean up deprecated routines to go through VOL and same code path
Fix return codes in existing trefer.c test
Rename trefer.c to trefer_deprec.c
trefer.c is for new references
Add performance test for trefer
Add additional obj_copy_ref test
Make use of tokens and blobs to store references
Skip blob encoding for object references
Start adding new reference examples
H5Gget_objinfo() call had changed and passing in a non-existing
soft link with a statbuf of NULL passed instead of failed (as
it should as per the RM). The HDF5 1.8 and 1.10 behavior was
restored and H5Gget_objinfo() will now fail and return -1 as
before.
* commit '7924eee0e5ee0745b784c635042b8633886fb799':
(1) Address the feedback from the PR review (2) Add release notes
Fix for HDFFV-10585 investigate hyperslab slowness: 1) Improve hyperslab performance when doing I/O from 1-d disjoint file dataspace to 1-d contiguous memory dataspace. 2) Move coding in H5D__chunk_io_init() that is constructing the chunk mappings to a separate routine.
* commit '0ea77179d507bd2c29f3b9b357a0c35d4077b29c': (39 commits)
Fix the errors when updating the versions in the new 1.13 develop branch.
add missing version to list
Add new versioned filename to list
Update N_FSINFO_VERSION_BOUNDS to H5F_LIBVER_NBOUND.
Remove file script
Update versioning to next major version
Update develop branch version to 1.13.0 after creation of hdf5_1_12 branch.
Merge Binh-Minh's changes for code improvement to chunk_info.c (PR #1942) to develop branch.
Update to current external file population.
Revert else-if to single line.
Fix missing option and incorrect close
Revert "Moved NDEBUG guards to H5EA_DEBUG in H5EA package."
Revert "Fix for H5EA debug package when built in release mode."
Change print calls to HD-wrapped. Minor formatting tweaks (inc. regressions and in-file style-matching).
Refactor h5repackgentest to have more modular internals, for easier addition of new tests. Update manifest and test script for new hdf5 external-storage .h5 files.
Remove obsolete symbol
small syntax changes
Renamed get/set_time() calls in the tools library to avoid name clash when building static parallel HDF5 w/ static linking to OpenMPI.
Change unused variable to generic form
Whitespace cleanup
...
1) Improve hyperslab performance when doing I/O from 1-d disjoint file dataspace
to 1-d contiguous memory dataspace.
2) Move coding in H5D__chunk_io_init() that is constructing the chunk mappings to
a separate routine.
Description:
Fixed tests to handle the case when a requested compression filter
is not available.
Platform tested
Linux/64 (jelly)
Darwin (osx1011test)
- Added new chunk query functions: H5Dget_num_chunks(), H5Dget_chunk_info(), and H5Dget_chunk_info_by_coord()
- Fixed iterator issue in H5EA_iterate(), H5FA_iterate(), and H5D__none_idx_iterate()
* commit '96dab622e3bbe75d85b0cef3ca2bd5288cf4ac32':
Fixed error code and error messages Tested on Jelly (very minor)
Changed H5VL_NATIVE_DATASET_GET_CHUNK_INFO_BY_COOR to H5VL_NATIVE_DATASET_GET_CHUNK_INFO_BY_COORD per a review comment.
Updated comments
Updated based on reviews and refactored test code
Code cleanup and refactor
Re-ordered items w.r.t. date.
Fixed typo
Added notes about HDFFV-10677 and HDFFV-10661
HDFFV-10677 and HDFFV-10661
Description:
- Added functions to query chunk information:
H5Dget_num_chunks(dset_id, fspace_id, *nchunks)
Gets the number of written chunks that intersect with the given
dataspace. However, in this version, the intersection is not
yet completed. Thus, the number of all written chunks will be
returned.
H5Dget_chunk_info_by_coord(dset_id, *offset, *filter_mask, *addr, *size)
Given a chunk's logical coordinates, returns the chunk's filter,
address, and size.
H5Dget_chunk_info(dset_id, fspace_id, index, *offset, *filter_mask, *addr, *size)
Given a chunk's index, returns the chunk's logical coordinates, filter,
address, and size. The chunk belongs to a set of chunks that have
nonempty intersection with the specified dataspace. However, in
this version, the intersection is not yet completed, and the index
is of all the written chunks.
These functions comply with VOL.
- Fixed some oversights found in the library for the tests in chunk_info.c
to work correctly. The returned value from a callback function was not
checked in H5EA_iterate(), H5FA_iterate(), and H5D__none_idx_iterate().
This oversight caused a callback function to continue iterating even though
it's supposed to stop.
Platforms tested:
Linux/64 (jelly)
Linux/64 (platypus)
Darwin (osx1011test)
* commit '2e5cd3d2b2d953420252c80ab5e32ac95ac0c5b3':
Fix compiler warnings with diabled ROS3 and HDFS VFDs. Fix misuse of [HD]strncpy and [HD]snprintf. Minor formatting changes. Fix test cleanup issue with java groups example.
* commit '0b868668bac0d268120844adb9ad216a9a8e1395':
Changed the directory name left out from the previous commit.
Changed the name of the temporary directory from 'tmp' to a special name to avoid possible conflicts.
* commit 'aeb145428f5e6bc51742fff031b0cf8cf6fbefbb':
Updated h5trav.c to emit output that doesn't require ddl changes for map support.
Fixed Map API CMake option
Renamed H5Mdelete_key to H5Mdelete and H5Mset to H5Mput.
Added ifdef for intel compilers, __GNUC__ has to be defined for header files which use it to work with intel compilers. This gives a warning for intel compiler about fallthrough, so added a check not to include fallthrough if using intel compilers.
Added the map (H5M) API
* commit '5fe1216a4e6af8feef0551f7bece8a0e193310a9':
Fix return type for H5Sselect_intersect_block().
Updated H5TRACE macro.
Add H5Sselect_shape_same and H5Sselect_intersect_block API routines, along with tests and minor cleanups and refactorings.
* commit '905d40aa6f6eb603c5507e7967130760e3a2e43c':
Fix return type for H5Sselect_intersect_block().
Updated H5TRACE macro.
Add H5Sselect_shape_same and H5Sselect_intersect_block API routines, along with tests and minor cleanups and refactorings.
* commit '363217073750d07e0eeb0aac2b404a799fda9f7a':
Update COPYING file. Remove hdfs from list of vfds for check-vfd testing as it is read-only.
Fixed the MANIFEST
* commit 'f97e11e7635a0cd8728d4604ca5dceb3925ba44c':
Update comment and check for strtoumax.
Modify CMakeLists.txt file for renamed h5tools_test_utils files.
Add HD to string functions. Switched strtoul to strtoumax in H5FDs3comms.c. Removed unused functions and variables in s3 and hdfs TestH5Pfapl*.java. Update Copyright headers.
Squashed commit of the following:
* commit '3768566139df18928aa29ece0eff3010b224633b':
Add release notes.
Correct hid_t error value to H5I_INVALID_HID in tests related to libver_bounds.
Fix for HDFFV-10808 H5Pset_file_space_strategy succeeds when using H5Pset_libver_bounds v18,v18. Fails file creation when non-default free-space info is set in fcpl and the library version high bound is less than v110 because free-space info message is introduced in library release v110.
Fails file creation when non-default free-space info is set in fcpl and the library version
high bound is less than v110 because free-space info message is introduced in library release v110.
* commit '35fd0ec8ceffe96cee352187154da15c967fb990':
Updated H5Tcopy() to get the dataset's datatype through the VOL when that is passed in as the object ID.
Fix fortran test and test library linking
Update GCC 6 & 7 flags for CMake builds
Move -Wnormalized down into GCC 6.x flags
Put the memcpy overlap check back into H5MM.
Fixed the heap overflow in t_filters_parallel
Fixed some low-hanging fruit from -fsanitize in t_filters_parallel.
Add lib dir for testing plugins
Add support for GCC 7.x warnings, update warnhist script to account for them, clean up warnings.
Add H5_HLDLL prefix for windows link
HDFFV-10805 cleanup examples and test code
Fix minor typo in H5S_select_iter_release
Add missing fortran mods
HDFFV-10805 Fix test of library libinfo
Cleanup possible CMake target conflicts
Correct CMake issues
* commit '2e973f7e12301975f9d8dfdd5534682525554e77':
Fix minor typo in H5S_select_iter_release
Fix memory leak in objcopy test after H5Aread of vlen data
* commit '6a1e9a1fbe9606d0dd3452092cab17794e131e64':
Fixed a problem in the ohdr test where hard-coded strings passed to H5Awrite() triggered -fsanitize failures.
* commit '712a2a13d8add828d053135a172abb2e819d59ad':
Fixed a warning in H5CX.c concerning incorrect use of freeing VOL connector info.
Add H5S_SEL_ITER_SHARE_WITH_DATASPACE selection iterator creation flag, to share dataspace's selection with iterator (and with caution about not modifying or closing the dataspace while the iterator is open).
Fix misc. typos, etc. from code review
New hyperslab selection routines and new public selection iterator routines.
* commit 'dfdc27b04b2e8bcd1985ba90ce6553d8b3805fda':
Fix release notes based on feedback from pull request.
Fix for HDFFV-10800 H5Ocopy failure: The value for the H5F_LIBVER_V18 index in H5O_fill_ver_bounds[], the format version bounds array for fill value message, should be version 3 not 2.
* H5VLconnector.h for terminal connector things
* H5VLconnector_passthru.h for passthrough connector things
Note that these headers are arranged such that they are included in
hdf5.h so VOL connectors only need to include that. The separation into
multiple headers is mainly for readability.
* commit '08b009cc4ab2a8d8d289697d6d4688c0e5c53c6e':
Clean up if-else chain.
Remove thread-local copy of hyperslab operation generation value.
Core changes to selection code from the hyperslab_updates branch.
* commit 'e66bf948a7acba0ddc76239f6d02f17c8b10eb0f':
Fix for split VFD and file cleanup when testing H5Fis_hdf5 and H5Fis_accessible in tfile.c.
Improvements to the H5Fis_accessible() and H5Fis_hdf5() tests in tfile.c. * General code tidying. * Expanded tests to work with multi-file VFDs.
* commit '62198c2436ac3787afb49fa990d1ba8204264dba':
Add an 'unwrap' VOL callback, so that connectors can unwrap an underlying object without closing it. (Especially needed for pass-through connectors)
* commit '53a5c3be903ce7c24d02a6bd3a8d9b07a3f82404':
Change the checking to H5I_INVALID_HID in test_attr_dense_rename().
Fix for HDFFV-10579 H5Arename fails when creation order of attributes is tracked. The attribute needs to be removed from the creation order index v2 B-tree before re-inserting the renamed attribute via H5A__dense_insert().
* commit 'b5ef82a1786605ae86502bc82086047720b7d4ca': (21 commits)
Moving the handling of null prefix into H5_combine_path.
Changing the prefix of external file and VDS from empty string to null for performance improvement.
Improving the condition checking of empty string.
Replacing string operation strdup with assignment for empty string.
Adding back links_env.out which I accidentally removed in my previous commit.
Taking out two unnecessary diff output files.
Taking out unnecessary diff files for output.
Adding some comments.
Some coding style changes.
Adding the standard output files for the external_env.c and vds_env.c tests.
Small correction for my previous commit.
Forgot to add external_common.c and external_common.h.
Updated CMake for the splitting of external.c and vds.c.
Minor fix: removal of unnecessary enum values.
Minor fixes: updating the test vds_env.c according to the set up of vds.c.
Left out this file in previous commit.
HDFFV-10658 - setting and getting properties in API context: 1. switched to use the existing H5F_prefix_open_t for enum type; 2. put the common private function used by external.c and external_env.c into external_common.c
This commit basically has the following changes: 1. restored the datatype, dataspace, and LCPL of the dataset for VOL connector back to the properties. 2. splitted external.c and vds.c because they called HDsetenv in the program, instead using shell scripts to set the environment variables. 3. changed H5CX_get_vds_prefix and H5CX_get_ext_file_prefix to use H5P_peek instead of H5P_get.
HDFFV-10658: I left out this file in my previous commit.
HDFFV-10658: 1. moving HDgetenv to dataset initialization stage to reduce the overhead; 2. restoring the retrieval of three vol properties to H5P_get instead of using API context to prepare for Quincey's upcoming refactoring work.
...
* commit '9ee3d472113fc3e66ef34e40a0990ed07a2824bc':
Renamed the HDF5_TEST_VOL option to HDF5_TEST_PASSTHROUGH_VOL.
Renamed the autotools check-vol target to check-passthrough-vol.
1. switched to use the existing H5F_prefix_open_t for enum type;
2. put the common private function used by external.c and external_env.c into external_common.c
1. restored the datatype, dataspace, and LCPL of the dataset for VOL connector back to the properties.
2. splitted external.c and vds.c because they called HDsetenv in the program, instead using shell scripts to set the environment variables.
3. changed H5CX_get_vds_prefix and H5CX_get_ext_file_prefix to use H5P_peek instead of H5P_get.
* commit 'fe104cc38ffbdb39d3e04da107d86ebfc7e8b622':
Test improvement Description Moved the new tests to a more appropriate test function. Platforms tested: Linux/64 (jelly)
Fixed HDFFV-10210 and HDFFV-10587 Description: - Added parameter validation (HDFFV-10210) - Added detection of division by zero (HDFFV-10587 - CVE-2018-17438) - Fixed typos in various tests Platforms tested: Linux/64 (jelly) Linux/64 (platypus) Darwin (osx1011test)
Description:
- Added parameter validation (HDFFV-10210)
- Added detection of division by zero (HDFFV-10587 - CVE-2018-17438)
- Fixed typos in various tests
Platforms tested:
Linux/64 (jelly)
Linux/64 (platypus)
Darwin (osx1011test)
This implicitly adds support for changing the VOL connector for command-line
tools or any application linked with the library.
Also, add 'make check-vol' support for all directories, clearing up necessary
issues in testing scripts, etc.