diff options
author | vchoi <vchoi@jelly.ad.hdfgroup.org> | 2021-11-17 17:25:20 (GMT) |
---|---|---|
committer | vchoi <vchoi@jelly.ad.hdfgroup.org> | 2021-11-17 17:25:20 (GMT) |
commit | 97a37aa84913808792418e6814126bdee856288e (patch) | |
tree | e613e8f34a3988777909e0fa813dd8b7ee60df44 /src/H5Fpublic.h | |
parent | f3293556b7af7191496909f4577e983da19a9e68 (diff) | |
download | hdf5-97a37aa84913808792418e6814126bdee856288e.zip hdf5-97a37aa84913808792418e6814126bdee856288e.tar.gz hdf5-97a37aa84913808792418e6814126bdee856288e.tar.bz2 |
1) Core changes for adding NFS/updater support as described in the RFC.
src/H5Pfapl.c
src/H5Fvfd_swmr.c
src/H5Fpublic.h
src/H5Fpkg.h
src/H5Fprivate.h
2) For VFD SWMR testing, add private property for checksum generation of metadata files:
src/H5Fint.c
src/H5Fvfd_swmr.c
src/H5Pfapl.c
src/H5Fpkg.h
src/H5Fprivate.h
3) Fix the following in H5F_vfd_swmr_init() and H5F_vfd_swmr_close_or_flush():
(a) Allocate metadata file index right after metadata file header.
(b) Set tick number to 0 when creating header and index for file open case.
(c) Remove tick number increment at file close.
src/H5Fvfd_swmr.c
src/H5Ftest.c
4) To be consistent with the RFC, change the name for field "chksum" to "checksum" in struct H5FD_vfd_swmr_idx_entry_t:
src/H5FDprivate.h
src/H5FDtest.c
src/H5FDvfd_swmr.c
src/H5Ftest.c
src/H5PB.c
4) Add tests for NFS/updater
test/vfd_swmr.c
5) Modify common routine init_vfd_swmr_config() to accept updater_file_path
test/vfd_swmr_common.c
test/vfd_swmr_common.h
6) Changes to the tests due to the common routine init_vfd_swmr_config():
test/vfd_swmr_addrem_writer.c
test/vfd_swmr_attrdset_writer.c
test/vfd_swmr_bigset_writer.c
test/vfd_swmr_dsetchks_writer.c
test/vfd_swmr_dsetops_writer.c
test/vfd_swmr_generator.c
test/vfd_swmr_gfail_writer.c
test/vfd_swmr_gperf_writer.c
test/vfd_swmr_group_writer.c
test/vfd_swmr_reader.c
test/vfd_swmr_remove_reader.c
test/vfd_swmr_remove_writer.c
test/vfd_swmr_sparse_reader.c
test/vfd_swmr_sparse_writer.c
test/vfd_swmr_vlstr_reader.c
test/vfd_swmr_vlstr_writer.c
test/vfd_swmr_writer.c
test/page_buffer.c
Diffstat (limited to 'src/H5Fpublic.h')
-rw-r--r-- | src/H5Fpublic.h | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/src/H5Fpublic.h b/src/H5Fpublic.h index d241816..5e0473a 100644 --- a/src/H5Fpublic.h +++ b/src/H5Fpublic.h @@ -275,6 +275,31 @@ typedef herr_t (*H5F_flush_cb_t)(hid_t object_id, void *udata); * A boolean flag indicating whether the file opened with this FAPL entry * will be opened R/W. (i.e. as a VFD SWMR writer) * + * maintain_metadata_file + * A boolean flag indicating whether the writer should create and + * maintain the metadata file. Note that this field is only revelant + * if the above writer flag is TRUE. + * If this flag is TRUE, the writer must create and maintain the + * metadata file in the location specified in the md_file_path. + * Observe that at least one of maintain_metadata_file and + * generate_updater_files fields must be TRUE if writer is TRUE. + * + * generate_updater_files + * A boolean flag indicating whether the writer should generate a + * sequence of updater files describing how the metadata file + * should be updated at the end of each tick. + * If the flag is TRUE, all modifications to the metadata file + * (including its creation) are described in an ordered sequence of + * updater files. These files are read in order by auxiliary processes, + * and used to generate local copies of the metadata file as required. + * This mechanism exists to allow VFD SWMR to operate on storage + * systems that do not support POSIX semantics. + * This field is only used by the VFD SWMR writer. VFD SWMR readers + * ignore this field, as they always look to the specified metadata + * file, regardless of whether it is generated and maintained + * directly by the VFD SWMR writer, or by an auxiliary process that + * polls for new updater files, and applies them as they appear. + * * flush_raw_data: * A boolean flag indicating whether raw data should be flushed * as part of the end of tick processing. If set to TRUE, raw @@ -307,11 +332,16 @@ typedef herr_t (*H5F_flush_cb_t)(hid_t object_id, void *udata); * of tick is triggered. * * md_file_path: - * POSIX: this field contains the path of the metadata file. - * NFS: it contains the path and base name of the metadata file - * updater files. - * Object store: it contains the base URL for the objects used - * to store metadata file updater objects. + * If both the writer and maintain_metadata_file fields are TRUE, this + * field contains the path of the metadata file. + * If writer is FALSE, this field contains the path of the (possibly + * local copy of the) metadata file. + * + * updater_file_path: + * If generate_updater_files is TRUE, the contents of this field depends + * on whether the writer field is TRUE. If it is, the field contains + * the path and base name of the metadatea file updater files. + * If writer is FALSE, the field is ignored. * * log_file_path: * This field contains the path to the log file. If defined, this path should @@ -324,10 +354,13 @@ typedef struct H5F_vfd_swmr_config_t { uint32_t tick_len; uint32_t max_lag; hbool_t writer; + hbool_t maintain_metadata_file; + hbool_t generate_updater_files; hbool_t flush_raw_data; uint32_t md_pages_reserved; uint32_t pb_expansion_threshold; char md_file_path[H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1]; + char updater_file_path[H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1]; char log_file_path[H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1]; } H5F_vfd_swmr_config_t; |