Commit Graph

38 Commits

Author SHA1 Message Date
Dana Robinson
693008ecaf Fix shutdown errors when using the HDF5_VOL_CONNECTOR environment
variable to set a dynamically loaded plugin as the default VOL
connector. Fixes HDFFV-11057
2020-03-18 13:58:02 -07:00
Dana Robinson
88b4c915e8 Updated the 'const memory free' changes based on PR feedback. 2020-01-30 16:31:11 -08:00
Dana Robinson
9da387342e Added a free wrapper that lets us free constant pointers without
generating warnings.

Also, brought the const-ness of the VOL connector info in line with
the VFD info (not visible externally).
2020-01-30 11:01:25 -08:00
Jordan Henderson
e41f671d2f Introduce new H5VL _by_value routines 2020-01-28 18:18:38 -06:00
Dana Robinson
a92c735c9b Squashed commit of the token_refactoring branch: 2020-01-16 13:29:34 -08:00
Jordan Henderson
ccf177344a Fix some places where H5P_DEFAULT gets passed down to a VOL connector 2020-01-03 12:43:51 -06:00
Quincey Koziol
58cf795321 Refactor all the 'H5VL_*_optional' callbacks to move the type of operation out
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.
2019-12-19 22:41:37 -06:00
Neil Fortner
ce653ff82b Modify H5VL initialization routines to initialize all VOL-managed object
types.  Modify H5VLwrap_register() to reject non-VOL-managed object
types.  Also fix overisights in h5trace.c from previous changes.
2019-12-12 15:52:21 -06:00
Neil Fortner
ece625e3b6 Fix bugs in H5VL file comparison code. Add short circuit success to
H5VL_cmp_connector_cls().
2019-11-27 22:48:01 -06:00
Neil Fortner
1dbec40d46 Implement H5VLget_file_type() to return a copy of a datatype with the
location set to be in a file.  Only meant to be used by VOL connectors.
Implement H5VLpeek_connector_id() to support connectors querying their
own IDs.  Fix app_ref with connector IDs in a couple places (external
VOLs registered as default through ENV should be visible to the
application).  Modify vlen and reference interfaces to work with
arbitrary VOL connectors.  Implement file "post open" specific
callback, to enable connectors to update their file structs after a
wrap context has been set.
2019-11-08 15:14:33 -06:00
Quincey Koziol
eaa65c862b Add 'blob' callbacks to VOL, along with a native implementation to store them
in the global heap, and changed the VL datatype conversion code to use blobs.

Move encode/decode of sequence lengths into VL datatype callbacks, from native
VOL blob routines.
2019-10-08 14:30:23 -05:00
Dana Robinson
5b6bd7c922 Added the map (H5M) API 2019-08-13 01:36:42 -07:00
Quincey Koziol
1ccbdfee58 Add support for GCC 7.x warnings, update warnhist script to account for them,
clean up warnings.
2019-06-21 10:05:34 -05:00
Quincey Koziol
62198c2436 Add an 'unwrap' VOL callback, so that connectors can unwrap an underlying
object without closing it.  (Especially needed for pass-through connectors)
2019-04-21 14:45:54 -05:00
Quincey Koziol
fc945999d0 Merge remote-tracking branch 'origin/develop' into env_vol_load 2019-04-03 17:27:10 -05:00
Dana Robinson
a98747c0f9 Added an H5MM_memcpy call that checks for buffer overlap. 2019-03-16 08:06:52 -07:00
Quincey Koziol
e6b8ebe954 Merge remote-tracking branch 'origin/develop' into env_vol_load 2019-03-12 11:49:03 -05:00
Quincey Koziol
8659857364 Add API routines to retrieve, restore, reset, and free library state.
(Primarily for use in the async VOL connector, which has to schedule API
operations for future execution and then restore the state of the library when
the operation actually executes)
2019-03-11 17:29:14 -05:00
Quincey Koziol
deeb302747 Specify the default VOL connector to use with an environment variable.
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.
2019-03-09 21:41:38 -06:00
Quincey Koziol
d6663b95ac Revise "management" VOL callbacks into 'info' and object 'wrap / retrieval'
classes.
2019-02-23 17:02:29 -06:00
Quincey Koziol
163dcebec5 Add ID type (of eventual hid_t) to the VOL "wrap" callback. 2019-02-07 14:31:26 -06:00
Quincey Koziol
92300f954f Corrected comment in src/H5VLint.c, fixed pass-through info size in
src/H5VLpassthru.c, switched to stashing VOL connector ID & info in
API context (in src/H5CX.c, src/H5CXprivate.h, src/H5F.c, src/H5Fint.c, and
src/H5Fefc.c), patched up all sorts of issues in the tests, to make them work
with 'check-vfd' (and 'check-vol' again).
2019-01-05 23:06:45 -06:00
Dana Robinson
544ab1c78a Added more sub-tests to the VOL plugin test. 2018-12-27 19:42:02 -08:00
Dana Robinson
f60e8bb05e Moved the optional enums to H5VLnative.h and converted to an int
typedef and a set of #defines.
2018-12-18 13:34:34 -08:00
Dana Robinson
bacabb3534 Merge pull request #1364 in HDFFV/hdf5 from ~DEROBINS/hdf5_der:h5i_reference_removal to develop
* commit 'e21c1cf7c6ee6dba5dd5bfd1a525227ac1304b53':
  Removed H5I_REFERENCE from the library. It has always been unused and has been marked 'deprecated' since 1.10.0. Fixes HDFFV-10252.
2018-12-17 17:35:59 -06:00
Jordan Henderson
74d167d738 Make sure to free copy of VOL connector's name when H5VL_register_connector fails 2018-12-14 13:15:09 -06:00
Dana Robinson
e21c1cf7c6 Removed H5I_REFERENCE from the library. It has always been unused
and has been marked 'deprecated' since 1.10.0. Fixes HDFFV-10252.
2018-12-08 08:14:05 -08:00
Quincey Koziol
bf79e1bd76 Added 'notify' callback for async requests; switched VOL class and info
comparison to return comparison value as parameter, so they can return error
values; "cancelled" -> "canceled"; switched order of 'wrap_object' and
'free_wrap_ctx' management callbacks.
2018-11-27 22:15:34 -06:00
Quincey Koziol
59c28780d3 Add VOL connector info to the flie access property list returned from
H5Fget_access_plist().  Also, other misc. cleanups, etc.
2018-11-18 00:38:29 -06:00
Quincey Koziol
1daa7b830a Switch driver | plugin => connector. 2018-11-04 01:27:23 -05:00
Quincey Koziol
aaaf1acc08 Add ref counter to VOL object wrapping in API contexts, so that re-entrant /
recursive routines work correctly.  Another minor cleanup in the attribute code.
2018-10-29 16:52:00 -05:00
Quincey Koziol
9bc6644ed1 Duplicate name of VOL plugin class, to avoid continuing to refer to the caller's
string when making a copy of the class for internal use.
2018-10-27 16:15:39 -05:00
Quincey Koziol
171deaa588 Checkpoint progress on stacking VOL plugins - all standalone regression tests
in the 'test' directory appear to be working.
2018-10-26 16:09:06 -05:00
Quincey Koziol
305997501d Updates after merging changes from develop. 2018-10-26 00:54:29 -05:00
Quincey Koziol
4a32895724 Merge branch 'develop' of https://bitbucket.hdfgroup.org/scm/hdffv/hdf5 into stackable_vol 2018-10-25 18:32:13 -05:00
Quincey Koziol
0df6e44a6e Squashed commit of private branch changes to support stackable VOL plugins.
modified:   test/dsets.c
2018-10-24 23:52:47 -05:00
Dana Robinson
2d6d5cad0c Updates to the VOL ID and object API calls.
This brings the H5VL code in line with the H5I code regarding
naming, parameter order, etc.

Several public API calls were affected by this change.

These changed names to reflect their use with VOL drivers:
    H5VLregister()          -->     H5VLregister_driver()
    H5VLregister_by_name()  -->     H5VLregister_driver_by_name()
    H5VLunregister()        -->     H5VLunregister_driver()
    H5VLis_registered()     -->     H5VLis_driver_registered()

This call was renamed to match H5Iregister(). The order of the first
two parameters also reversed and the object pointer is now const.
    H5VLobject_register()   -->     H5VLregister()
2018-10-17 02:06:28 -07:00
Dana Robinson
e962df1591 VOL FEATURE 2018-10-10 08:10:15 -07:00