creating a custom VOL plugin for HDF5 without changing core HDF5 code?

Hello all,

I started creating a custom VOL plugin after consulting the VOL User Guide
and Developer guide. Creating a VOL plugin requires to implement all the
function callbacks for the supported operations. I got as an example the
VOL native plugin, which implements the callbacks and they call core HDF5
code, like H5Fint.c, H5FD.c, H5FDsec2.c, H5Gobj.c, H5O.c, etc.
If I want to implement a new VOL plugin, how will I make it by only
implementing the function callbacks without changing the internal HDF5 core
code (H5Fint.c, H5FD.c, H5FDsec2.c, H5Gobj.c, H5O.c) ?

Does this mean that creating a custom VOL plugin may require to change core
HDF5 code? According to the VOL RFC implementing a VOL plugin should nor
require any change to the HDF5 library unless the plugin is an internal
plugin that modifies the current native file format. Also, in figure 1 of
the VOL RFC we see the Raw Mapping and Remote Access plugins to directly
access the file system, without going to the VFL first. This could mean
that going through the HDF5 core code (H5Fint.c, H5FD.c, H5FDsec2.c,
H5Gobj.c, H5O.c) is not always required.

Thanks in advance,

Dimos

Hello,

I am working on creating a custom VOL plugin, and I have trouble understanding how the h5dump determines the contents of the file.

Say for example that we have a file with two groups, like: /group1/group2.

I noticed that initially it calls native_file_get to get the structure containing information about accessing the file and then it calls native_group_open and native_group_get for each group in the file, so it would call:

1) native_file_open
2) native_group_open and native_group_get for “/“
3) native_group_open and native_group_get for “group1“
4) native_group_open and native_group_get for group2“

I understand that the VOL plugin developer is responsible for representing the contents of the file, but how does the h5dump tool know that the file contains these groups, and calls native_group_open and native_group_get for each of them?

Many thanks in advance,

Dimos