summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvchoi-hdfgroup <55293060+vchoi-hdfgroup@users.noreply.github.com>2022-04-21 22:27:08 (GMT)
committerGitHub <noreply@github.com>2022-04-21 22:27:08 (GMT)
commit702dd6910d45940533bad0ed9651c1de1af1cae2 (patch)
tree26899acd1a2e481065b1dd9083dd785caf494a9c
parentec14985c8555bda02021568ea20295384a2cef7e (diff)
parentfd3e7a178123dbe1c8ef0a50863ae9bd82c2a668 (diff)
downloadhdf5-702dd6910d45940533bad0ed9651c1de1af1cae2.zip
hdf5-702dd6910d45940533bad0ed9651c1de1af1cae2.tar.gz
hdf5-702dd6910d45940533bad0ed9651c1de1af1cae2.tar.bz2
Merge pull request #1671 from vchoi-hdfgroup/new_vds_feature_vfd_swmr
New vds feature vfd swmr
-rw-r--r--src/H5Dvirtual.c12
-rw-r--r--src/H5FDprivate.h14
-rw-r--r--src/H5FDpublic.h6
-rw-r--r--src/H5FDvfd_swmr.c386
-rw-r--r--src/H5Fint.c34
-rw-r--r--src/H5Fio.c18
-rw-r--r--src/H5Fpkg.h34
-rw-r--r--src/H5Fprivate.h4
-rw-r--r--src/H5Fpublic.h32
-rw-r--r--src/H5Fquery.c19
-rw-r--r--src/H5Ftest.c6
-rw-r--r--src/H5Fvfd_swmr.c62
-rw-r--r--src/H5Pfapl.c30
-rw-r--r--src/H5Pint.c3
-rw-r--r--src/H5Ppublic.h2
-rw-r--r--test/page_buffer.c4
-rw-r--r--test/test_vfd_swmr.sh.in6
-rw-r--r--test/vfd_swmr.c295
-rw-r--r--test/vfd_swmr_addrem_writer.c7
-rw-r--r--test/vfd_swmr_attrdset_writer.c200
-rw-r--r--test/vfd_swmr_bigset_writer.c27
-rw-r--r--test/vfd_swmr_common.c44
-rw-r--r--test/vfd_swmr_common.h9
-rw-r--r--test/vfd_swmr_dsetchks_writer.c9
-rw-r--r--test/vfd_swmr_dsetops_writer.c8
-rw-r--r--test/vfd_swmr_generator.c8
-rw-r--r--test/vfd_swmr_gfail_writer.c9
-rw-r--r--test/vfd_swmr_gperf_writer.c9
-rw-r--r--test/vfd_swmr_group_writer.c9
-rw-r--r--test/vfd_swmr_indep_rw_writer.c18
-rw-r--r--test/vfd_swmr_reader.c7
-rw-r--r--test/vfd_swmr_remove_reader.c7
-rw-r--r--test/vfd_swmr_remove_writer.c7
-rw-r--r--test/vfd_swmr_sparse_reader.c7
-rw-r--r--test/vfd_swmr_sparse_writer.c7
-rw-r--r--test/vfd_swmr_vlstr_reader.c7
-rw-r--r--test/vfd_swmr_vlstr_writer.c8
-rw-r--r--test/vfd_swmr_writer.c7
-rw-r--r--test/vfd_swmr_zoo_writer.c8
39 files changed, 944 insertions, 445 deletions
diff --git a/src/H5Dvirtual.c b/src/H5Dvirtual.c
index c26697c..c7d47ef 100644
--- a/src/H5Dvirtual.c
+++ b/src/H5Dvirtual.c
@@ -912,16 +912,10 @@ H5D__virtual_open_source_dset(const H5D_t *vdset, H5O_storage_virtual_ent_t *vir
/* Get the virtual dataset's file open flags ("intent") */
intent = H5F_INTENT(vdset->oloc.file);
- /* Try opening the file */
- /* XXX Pass the special file-access property list ID,
- * H5P_FILE_ACCESS_ANY_VFD, so that if the file is already open in
- * VFD SWMR mode, the library just creates a new H5F_t for the file
- * instead of returning an error because of the discrepancy between
- * the default file-access properties and the already-open file's
- * VFD SWMR properties.
- */
+ /* Remove H5P_FILE_ACCESS_ANY_VFD and restore the original code */
src_file = H5F_prefix_open_file(vdset->oloc.file, H5F_PREFIX_VDS, vdset->shared->vds_prefix,
- source_dset->file_name, intent, H5P_FILE_ACCESS_ANY_VFD);
+ source_dset->file_name, intent,
+ vdset->shared->layout.storage.u.virt.source_fapl);
/* If we opened the source file here, we should close it when leaving */
if (src_file)
diff --git a/src/H5FDprivate.h b/src/H5FDprivate.h
index fa51574..dae38b6 100644
--- a/src/H5FDprivate.h
+++ b/src/H5FDprivate.h
@@ -370,11 +370,15 @@ H5_DLL herr_t H5FD_set_paged_aggr(H5FD_t *file, hbool_t paged);
H5_DLL herr_t H5FD_init(void);
/* Function prototypes for VFD SWMR */
-H5_DLL herr_t H5FD_vfd_swmr_get_tick_and_idx(H5FD_t *_file, hbool_t read_index, uint64_t *tick_ptr,
- uint32_t *num_entries_ptr, H5FD_vfd_swmr_idx_entry_t index[]);
-H5_DLL void H5FD_vfd_swmr_dump_status(H5FD_t *file, uint64_t page);
-H5_DLL void H5FD_vfd_swmr_set_pb_configured(H5FD_t *_file);
-H5_DLL void H5FD_vfd_swmr_record_elapsed_ticks(H5FD_t *_file, uint64_t elapsed);
+H5_DLL herr_t H5FD_vfd_swmr_get_tick_and_idx(H5FD_t *_file, hbool_t read_index, uint64_t *tick_ptr,
+ uint32_t *num_entries_ptr, H5FD_vfd_swmr_idx_entry_t index[]);
+H5_DLL void H5FD_vfd_swmr_dump_status(H5FD_t *file, uint64_t page);
+H5_DLL void H5FD_vfd_swmr_set_pb_configured(H5FD_t *_file);
+H5_DLL void H5FD_vfd_swmr_record_elapsed_ticks(H5FD_t *_file, uint64_t elapsed);
+H5_DLL void H5FD_vfd_swmr_get_md_path_name(H5FD_t *_file, char **name);
+H5_DLL hbool_t H5FD_vfd_swmr_get_make_believe(H5FD_t *_file);
+H5_DLL void H5FD_vfd_swmr_set_make_believe(H5FD_t *_file, hbool_t make_believe);
+H5_DLL htri_t H5FD_vfd_swmr_assess_make_believe(H5FD_t *_file);
H5_DLL H5FD_t *H5FD_vfd_swmr_dedup(H5FD_t *_self, H5FD_t *_other, hid_t fapl_id);
/* Function prototypes for MPI based VFDs*/
diff --git a/src/H5FDpublic.h b/src/H5FDpublic.h
index a8d85c6..9411874 100644
--- a/src/H5FDpublic.h
+++ b/src/H5FDpublic.h
@@ -179,6 +179,12 @@
* operations when appropriate.
*/
#define H5FD_FEAT_MEMMANAGE 0x00010000
+/*
+ * Defining H5FD_FEAT_SUPPORTS_VFD_SWMR for a VFL driver means that the
+ * driver supports the SWMR feature that is implemented in a more modular
+ * fashion and simplifies maintenance.
+ */
+#define H5FD_FEAT_SUPPORTS_VFD_SWMR 0x00020000
/* ctl function definitions: */
#define H5FD_CTL_OPC_RESERVED 512 /* Opcodes below this value are reserved for library use */
diff --git a/src/H5FDvfd_swmr.c b/src/H5FDvfd_swmr.c
index fb88de3..892d084 100644
--- a/src/H5FDvfd_swmr.c
+++ b/src/H5FDvfd_swmr.c
@@ -15,9 +15,10 @@
*/
#include "H5FDdrvr_module.h" /* This source code file is part of the H5FD driver module */
+#define H5F_FRIEND /* Suppress error about including H5Fpkg */
#include "H5Eprivate.h" /* Error handling */
-#include "H5Fprivate.h" /* File access */
+#include "H5Fpkg.h" /* Files */
#include "H5FDprivate.h" /* File drivers */
#include "H5FDvfd_swmr.h" /* VFD SWMR file driver */
#include "H5FLprivate.h" /* Free Lists */
@@ -40,9 +41,9 @@ typedef struct H5FD_vfd_swmr_t {
/* Metadata file */
int md_fd; /* File descriptor for the metadata file */
uint32_t md_pages_reserved; /* # of pages reserved at the head of the metadata file */
- char md_file_path[H5FD_MAX_FILENAME_LEN]; /* Name of the metadate file */
- H5FD_vfd_swmr_md_header md_header; /* Metadata file header */
- H5FD_vfd_swmr_md_index md_index; /* Metadata file index */
+ char md_file_path_name[H5FD_MAX_FILENAME_LEN + 1]; /* Name of the metadate file */
+ H5FD_vfd_swmr_md_header md_header; /* Metadata file header */
+ H5FD_vfd_swmr_md_index md_index; /* Metadata file index */
/* Histogram of ticks elapsed inside the API (reader only).
* api_elapsed_ticks[elapsed] is the number of times
@@ -60,10 +61,15 @@ typedef struct H5FD_vfd_swmr_t {
* to the lower VFD instance.
*/
hbool_t writer;
+ /*
+ * Indicate whether we are in make_believe state or not
+ */
+ hbool_t make_believe;
} H5FD_vfd_swmr_t;
-#define MAXADDR (((haddr_t)1 << (8 * sizeof(HDoff_t) - 1)) - 1)
+#define MAXADDR (((haddr_t)1 << (8 * sizeof(HDoff_t) - 1)) - 1)
+#define VFD_SWMR_MD_SUFFIX ".md"
/* Prototypes */
static herr_t H5FD__vfd_swmr_term(void);
@@ -217,6 +223,10 @@ done:
*
* Return: SUCCEED/FAIL
*
+ * Modifications:
+ * Vailin Choi: 2/18/2022
+ * VDS changes: Try opening metadata file and loading header/index if make_believe is FALSE.
+ *
*-------------------------------------------------------------------------
*/
static herr_t
@@ -235,30 +245,119 @@ H5FD__swmr_reader_open(H5FD_vfd_swmr_t *file)
if (file->api_elapsed_ticks == NULL)
HGOTO_ERROR(H5E_VFL, H5E_CANTALLOC, FAIL, "could not allocate API elapsed ticks")
- /* Retry on opening the metadata file */
- for (do_try = H5_retry_init(&retry, H5FD_VFD_SWMR_MD_FILE_RETRY_MAX, H5_RETRY_DEFAULT_MINIVAL,
- H5_RETRY_DEFAULT_MAXIVAL);
- do_try; do_try = H5_retry_next(&retry)) {
- if ((file->md_fd = HDopen(file->md_file_path, O_RDONLY)) >= 0)
- break;
- }
+ if (!file->make_believe) {
+ /* Retry on opening the metadata file */
+ for (do_try = H5_retry_init(&retry, H5FD_VFD_SWMR_MD_FILE_RETRY_MAX, H5_RETRY_DEFAULT_MINIVAL,
+ H5_RETRY_DEFAULT_MAXIVAL);
+ do_try; do_try = H5_retry_next(&retry)) {
+ if ((file->md_fd = HDopen(file->md_file_path_name, O_RDONLY)) >= 0)
+ break;
+ }
- /* Exhaust all retries for opening the md file */
- if (!do_try)
- HGOTO_ERROR(H5E_VFL, H5E_OPENERROR, FAIL,
- "unable to open the metadata file after all retry attempts");
+ /* Exhaust all retries for opening the md file */
+ if (!do_try)
+ HGOTO_ERROR(H5E_VFL, H5E_OPENERROR, FAIL,
+ "unable to open the metadata file after all retry attempts");
- /* Retry on loading and decoding the header and index in the
- * metadata file
- */
- if (H5FD__vfd_swmr_load_hdr_and_idx(file, TRUE) < 0)
- HGOTO_ERROR(H5E_VFL, H5E_CANTGET, FAIL, "unable to load/decode the md file header/index");
+ /* Retry on loading and decoding the header and index in the
+ * metadata file
+ */
+ if (H5FD__vfd_swmr_load_hdr_and_idx(file, TRUE) < 0)
+ HGOTO_ERROR(H5E_VFL, H5E_CANTGET, FAIL, "unable to load/decode the md file header/index");
+ }
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD__swmr_reader_open() */
/*-------------------------------------------------------------------------
+ *
+ * Function: H5FD__vfd_swmr_build_md_path_name
+ *
+ * Purpose: To construct the metadata file's full name based on config's
+ * md_file_path and md_file_name. See RFC for details.
+ *
+ *
+ * Return: Success: SUCCEED
+ * Failure: FAIL
+ *
+ * Programmer: Vailin Choi -- 1/13/2022
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+H5FD__vfd_swmr_build_md_path_name(H5F_vfd_swmr_config_t *config, const char *hdf5_filename,
+ char *name /*out*/)
+{
+ size_t tot_len = 0;
+ size_t tmp_len = 0;
+ herr_t ret_value = SUCCEED; /* Return value */
+
+ FUNC_ENTER_PACKAGE
+
+ if ((tot_len = HDstrlen(config->md_file_path)) != 0) {
+
+ /* md_file_path + '/' */
+ if (++tot_len > H5F__MAX_VFD_SWMR_FILE_NAME_LEN)
+ HGOTO_ERROR(H5E_FILE, H5E_CANTCOPY, FAIL, "md_file_path and md_file_name exceeds maximum");
+ HDstrcat(name, config->md_file_path);
+ HDstrcat(name, "/");
+ }
+
+ if ((tmp_len = HDstrlen(config->md_file_name)) != 0) {
+ if ((tot_len += tmp_len) > H5F__MAX_VFD_SWMR_FILE_NAME_LEN)
+ HGOTO_ERROR(H5E_FILE, H5E_CANTCOPY, FAIL, "md_file_path and md_file_name exceeds maximum");
+ HDstrcat(name, config->md_file_name);
+ }
+ else {
+ /* Automatic generation of metadata file name based on hdf5_filename + '.md' */
+ if ((tot_len += (HDstrlen(hdf5_filename) + 3)) > H5F__MAX_VFD_SWMR_FILE_NAME_LEN)
+ HGOTO_ERROR(H5E_FILE, H5E_CANTCOPY, FAIL, "md_file_path and md_file_name maximum");
+
+ HDstrcat(name, hdf5_filename);
+ HDstrcat(name, VFD_SWMR_MD_SUFFIX);
+ }
+
+done:
+
+ FUNC_LEAVE_NOAPI(ret_value)
+
+} /* H5FD__vfd_swmr_build_md_path_name() */
+
+/*-------------------------------------------------------------------------
+ * Function: H5FD__vfd_swmr_create_make_believe_data
+ *
+ * Purpose: Set up pretend data when make_believe is true
+ *
+ * Return: VOID
+ *
+ * Programmer: Vailin Choi -- 1/13/2022
+ *
+ *-------------------------------------------------------------------------
+ */
+static void
+H5FD__vfd_swmr_create_make_believe_data(H5FD_vfd_swmr_t *_file)
+{
+ H5FD_vfd_swmr_t *file = (H5FD_vfd_swmr_t *)_file;
+
+ FUNC_ENTER_PACKAGE_NOERR
+
+ HDassert(file->make_believe);
+
+ /* Create make_believe data: empty header and index */
+ file->md_header.fs_page_size = 0;
+ file->md_header.tick_num = 0;
+ file->md_header.index_offset = H5FD_MD_HEADER_SIZE;
+ file->md_header.index_length = H5FD_MD_INDEX_SIZE(0);
+
+ file->md_index.tick_num = 0;
+ file->md_index.num_entries = 0;
+
+ FUNC_LEAVE_NOAPI_VOID
+
+} /* H5FD__vfd_swmr_create_make_believe_data() */
+
+/*-------------------------------------------------------------------------
* Function: H5FD__vfd_swmr_open
*
* Purpose: Open the metadata file and the underlying HDF5 file
@@ -268,6 +367,11 @@ done:
* caller, which is always H5FD_open().
* Failure: NULL
*
+ * Modifications:
+ * Vailin Choi: 2/18/2022
+ * VDS changes: --Build metadata file name
+ * --Determine make_believe or not
+ *
*-------------------------------------------------------------------------
*/
static H5FD_t *
@@ -278,6 +382,7 @@ H5FD__vfd_swmr_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t max
H5P_genplist_t * plist;
H5F_vfd_swmr_config_t *vfd_swmr_config;
H5FD_t * ret_value = NULL; /* Return value */
+ htri_t is_hdf5;
FUNC_ENTER_PACKAGE
@@ -314,16 +419,32 @@ H5FD__vfd_swmr_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t max
file->hdf5_filename[sizeof(file->hdf5_filename) - 1] = '\0';
/* Retain a copy of the metadata file name */
- HDstrncpy(file->md_file_path, vfd_swmr_config->md_file_path, sizeof(file->md_file_path));
- file->md_file_path[sizeof(file->md_file_path) - 1] = '\0';
+ if (H5FD__vfd_swmr_build_md_path_name(vfd_swmr_config, name, file->md_file_path_name) < 0)
+ HGOTO_ERROR(H5E_VFL, H5E_OPENERROR, NULL, "building md_file_path and md_file_name failed")
+
+ file->md_file_path_name[sizeof(file->md_file_path_name) - 1] = '\0';
file->writer = vfd_swmr_config->writer;
- /* Ensure that this is the reader */
- if (!vfd_swmr_config->writer && H5FD__swmr_reader_open(file) < 0)
- HGOTO_ERROR(H5E_VFL, H5E_OPENERROR, NULL, "perform reader-specific opening steps failed")
+ /* Make sure the hdf5 file exists and is valid */
+ is_hdf5 = H5F__is_hdf5(name, H5P_FILE_ACCESS_DEFAULT);
+
+ /* Ensure reader */
+ if (!vfd_swmr_config->writer) {
+ /* Metadata file does not exist, presume_posix is true, HDF5 file exist */
+ if (HDaccess(file->md_file_path_name, F_OK) < 0 && vfd_swmr_config->presume_posix_semantics &&
+ is_hdf5 == TRUE) {
+
+ file->make_believe = TRUE;
+ H5FD__vfd_swmr_create_make_believe_data(file);
+ }
+ if (H5FD__swmr_reader_open(file) < 0)
+ HGOTO_ERROR(H5E_VFL, H5E_OPENERROR, NULL, "perform reader-specific opening steps failed")
+ }
/* Hard-wired to open the underlying HDF5 file with SEC2 */
+ /* H5FD_SEC2 is the default driver for H5P_FILE_ACCESS_DEFAULT except when
+ the environment variable HDF5_DRIVER is set to otherwise */
if ((file->hdf5_file_lf = H5FD_open(name, flags, H5P_FILE_ACCESS_DEFAULT, maxaddr)) == NULL)
HGOTO_ERROR(H5E_VFL, H5E_CANTOPENFILE, NULL, "can't set driver info");
@@ -453,10 +574,10 @@ H5FD__vfd_swmr_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
ret_value = H5FD_cmp(f1->hdf5_file_lf, f2->hdf5_file_lf);
FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_vfd__swmr_cmp() */
+} /* end H5FD__vfd__swmr_cmp() */
/*-------------------------------------------------------------------------
- * Function: H5FD_vfd_swmr_dedup
+ * Function: H5FD_vfd_swmr_dedup (original description with H5P_FILE_ACCESS_ANY_VFD)
*
* Purpose: Compare the already-opened VFD instance `_self` with the
* VFD instance `_other` newly-opened with file-access properties
@@ -497,6 +618,42 @@ H5FD__vfd_swmr_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
* Failure: NULL
*-------------------------------------------------------------------------
*/
+/*-------------------------------------------------------------------------
+ * Function: H5FD_vfd_swmr_dedup (modified version without H5P_FILE_ACCESS_ANY_VFD)
+ *
+ * Purpose: Compare the already-opened VFD instance `_self` with the
+ * VFD instance `_other` newly-opened with file-access properties
+ * `fapl_id` and indicate whether the instances duplicate each
+ * other, if they conflict with each other, or if they are
+ * dissimilar.
+ *
+ * If `_self` duplicates `_other`, return `_self`.
+ *
+ * Return NULL on error, or if `_other` and `_self` refer to the
+ * same file but the file-access properties, `fapl_id`, conflict
+ * with the properties of `_self`.
+ *
+ * If `_other` neither duplicates nor conflicts with `_self`,
+ * then return `_other`.
+ *
+ * NOTE: Judging duplicate/conflicting/dissimilar VFD instances
+ *
+ * `_self` DUPLICATES `_other` if `_other` is also an instance
+ * of SWMR class, the instances' lower files are equal under
+ * `H5FD_cmp()`, and the file-access properties of `_self` match
+ * `fapl_id`.
+ *
+ * `_self` and `_other` CONFLICT if both are SWMR instances
+ * referring to the same lower file, and their file-access
+ * properties differ.
+ *
+ * `_self` and `_other` CONFLICT if `_other` is not a SWMR
+ * instance, it equals the lower file of `_self`.
+ *
+ * Return: Success: `_self' or `_other', as described above
+ * Failure: NULL
+ *-------------------------------------------------------------------------
+ */
H5FD_t *
H5FD_vfd_swmr_dedup(H5FD_t *_self, H5FD_t *_other, hid_t fapl_id)
{
@@ -523,12 +680,6 @@ H5FD_vfd_swmr_dedup(H5FD_t *_self, H5FD_t *_other, hid_t fapl_id)
if (H5FD_cmp(self->hdf5_file_lf, other->hdf5_file_lf) != 0)
HGOTO_DONE(_other)
- /* If fapl_id == _ANY_VFD, then the match between lower files is
- * sufficient.
- */
- if (fapl_id == H5P_FILE_ACCESS_ANY_VFD)
- HGOTO_DONE(_self)
-
/* If fapl_id != _ANY_VFD, then we have either a duplicate or
* a conflict. If the VFD SWMR parameters match, then
* return `self` to indicate a duplicate. Otherwise, return
@@ -552,7 +703,7 @@ H5FD_vfd_swmr_dedup(H5FD_t *_self, H5FD_t *_other, hid_t fapl_id)
HGOTO_ERROR(H5E_VFL, H5E_CANTGET, NULL, "inconsistent VFD SWMR config")
}
else if (H5FD_cmp(self->hdf5_file_lf, _other) == 0)
- ret_value = (fapl_id == H5P_FILE_ACCESS_ANY_VFD) ? _self : NULL;
+ ret_value = NULL;
else
ret_value = _other;
@@ -752,6 +903,11 @@ done:
* buffer BUF.
* Failure: FAIL, Contents of buffer BUF are undefined.
*
+ * Modifications:
+ * Vailin Choi: 2/18/2022
+ * VDS changes: If fs_page_size is 0, i.e. in make_believe state,
+ * read from the underlying HDF5 file
+ *
*-------------------------------------------------------------------------
*/
static herr_t
@@ -780,10 +936,17 @@ H5FD__vfd_swmr_read(H5FD_t *_file, H5FD_mem_t type, hid_t H5_ATTR_UNUSED dxpl_id
num_entries = file->md_index.num_entries;
fs_page_size = file->md_header.fs_page_size;
- /* Try finding the addr from the index */
- target_page = addr / fs_page_size;
+ if (!fs_page_size) {
+ HDassert(!num_entries);
+ HDassert(file->make_believe);
+ entry = NULL;
+ }
+ else {
+ /* Try finding the addr from the index */
+ target_page = addr / fs_page_size;
- entry = H5FD_vfd_swmr_pageno_to_mdf_idx_entry(index, num_entries, target_page, FALSE);
+ entry = H5FD_vfd_swmr_pageno_to_mdf_idx_entry(index, num_entries, target_page, FALSE);
+ }
if (entry == NULL) {
/* Cannot find addr in index, read from the underlying hdf5 file */
@@ -1008,6 +1171,10 @@ done:
* Return: Success: SUCCEED
* Failure: FAIL
*
+ * Modifications:
+ * Vailin Choi: 2/18/2022
+ * VDS changes: Update the header's fs_page size if it is still 0
+ *
*-------------------------------------------------------------------------
*/
static herr_t
@@ -1113,6 +1280,14 @@ H5FD__vfd_swmr_load_hdr_and_idx(H5FD_vfd_swmr_t *file, hbool_t open)
md_index.entries = NULL;
done:
+ /* Need to update the header's fs_page_size if it is still 0
+ because it is possible that md_header.tick_num == file->md_header.tick_num
+ and the loading is not done */
+ if (ret_value == SUCCEED && !file->md_header.fs_page_size) {
+ HDassert(md_header.fs_page_size);
+ HDassert(file->make_believe);
+ file->md_header.fs_page_size = md_header.fs_page_size;
+ }
FUNC_LEAVE_NOAPI(ret_value)
@@ -1501,3 +1676,138 @@ H5FD_vfd_swmr_record_elapsed_ticks(H5FD_t *_file, uint64_t elapsed)
FUNC_LEAVE_NOAPI_VOID
} /* end H5FD_vfd_swmr_record_elapsed_ticks() */
+
+/*-------------------------------------------------------------------------
+ * Function: H5FD_vfd_swmr_get_md_name
+ *
+ * Purpose: To retrieve the metadata file's full name
+ *
+ * Return: VOID
+ *
+ * Programmer: Vailin Choi; 02/18/2022
+ *
+ *-------------------------------------------------------------------------
+ *
+ */
+void
+H5FD_vfd_swmr_get_md_path_name(H5FD_t *_file, char **name)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOERR
+
+ H5FD_vfd_swmr_t *file = (H5FD_vfd_swmr_t *)_file;
+
+ *name = H5MM_xstrdup(file->md_file_path_name);
+
+ FUNC_LEAVE_NOAPI_VOID
+
+} /* H5FD_vfd_swmr_get_md_path_name() */
+
+/*-------------------------------------------------------------------------
+ * Function: H5FD_vfd_swmr_get_make_believe
+ *
+ * Purpose: To retrieve the value of make_believe
+ *
+ * Return: TRUE/FALSE
+ *
+ * Programmer: Vailin Choi; 02/18/2022
+ *
+ *-------------------------------------------------------------------------
+ *
+ */
+hbool_t
+H5FD_vfd_swmr_get_make_believe(H5FD_t *_file)
+{
+ H5FD_vfd_swmr_t *file = (H5FD_vfd_swmr_t *)_file;
+
+ FUNC_ENTER_NOAPI_NOINIT_NOERR
+
+ HDassert(file);
+
+ FUNC_LEAVE_NOAPI(file->make_believe)
+
+} /* H5FD_vfd_swmr_get_make_believe() */
+
+/*-------------------------------------------------------------------------
+ * Function: H5FD_vfd_swmr_set_make_believe
+ *
+ * Purpose: To set the VFD's make believe to the
+ * parameter "make_believe"
+ *
+ * Return: VOID
+ *
+ * Programmer: Vailin Choi; 02/18/2022
+ *
+ *-------------------------------------------------------------------------
+ *
+ */
+void
+H5FD_vfd_swmr_set_make_believe(H5FD_t *_file, hbool_t make_believe)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOERR
+
+ H5FD_vfd_swmr_t *file = (H5FD_vfd_swmr_t *)_file;
+
+ HDassert(file);
+
+ /* Set return value */
+ file->make_believe = make_believe;
+
+ FUNC_LEAVE_NOAPI_VOID
+
+} /* H5FD_vfd_swmr_make_believe() */
+
+/*-------------------------------------------------------------------------
+ * Function: H5FD_vfd_swmr_assess_make_believe
+ *
+ * Purpose: To determine whether continuing with make_believe or not.
+ * Return TRUE:
+ * --if metadata file does not exist, continue with make_believe
+ * Return FALSE:
+ * --if metadata file exists and can be opened successfully,
+ * discontinue with make_believe
+ * Return FAIL:
+ * --error in opening the metadata file
+ *
+ *
+ * Return: TRUE/FALSE/FAIL
+ *
+ * Programmer: Vailin Choi; 02/18/2022
+ *-------------------------------------------------------------------------
+ */
+htri_t
+H5FD_vfd_swmr_assess_make_believe(H5FD_t *_file)
+{
+ H5FD_vfd_swmr_t *file = (H5FD_vfd_swmr_t *)_file; /* VFD SWMR file struct */
+ h5_retry_t retry;
+ hbool_t do_try; /* more tries remain */
+ htri_t ret_value = TRUE; /* Return value */
+
+ FUNC_ENTER_NOAPI(FALSE)
+
+ HDassert(file->make_believe);
+
+ if (HDaccess(file->md_file_path_name, F_OK) >= 0) {
+ /* MD file exists now, proceed to open it */
+ HDassert(file->md_fd < 0);
+
+ /* Retry on opening the metadata file */
+ for (do_try = H5_retry_init(&retry, H5FD_VFD_SWMR_MD_FILE_RETRY_MAX, H5_RETRY_DEFAULT_MINIVAL,
+ H5_RETRY_DEFAULT_MAXIVAL);
+ do_try; do_try = H5_retry_next(&retry)) {
+ if ((file->md_fd = HDopen(file->md_file_path_name, O_RDONLY)) >= 0)
+ break;
+ }
+
+ /* Exhaust all retries for opening the md file */
+ if (!do_try)
+ HGOTO_ERROR(H5E_VFL, H5E_OPENERROR, FAIL,
+ "unable to open the metadata file after all retry attempts");
+
+ /* Succeed in opening the MD file, discontinue make_believe */
+ ret_value = FALSE;
+ }
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+
+} /* end H5FD_vfd_swmr_assess_make_believe() */
diff --git a/src/H5Fint.c b/src/H5Fint.c
index 2822d9d..68c53f2 100644
--- a/src/H5Fint.c
+++ b/src/H5Fint.c
@@ -1828,10 +1828,25 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
FUNC_ENTER_NOAPI(NULL)
+ /*
+ * If the driver has a 'cmp' method then the driver is capable of
+ * determining when two file handles refer to the same file and the
+ * library can insure that when the application opens a file twice
+ * that the two handles coordinate their operations appropriately.
+ * Otherwise it is the application's responsibility to never open the
+ * same file more than once at a time.
+ */
+ if (NULL == (drvr = H5FD_get_class(fapl_id)))
+ HGOTO_ERROR(H5E_FILE, H5E_CANTGET, NULL, "unable to retrieve VFL class")
+
/* Get the file access property list, for future queries */
if (NULL == (a_plist = (H5P_genplist_t *)H5I_object(fapl_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not file access property list")
+ /* Check if we are using file locking */
+ if (H5F__check_if_using_file_locks(a_plist, &use_file_locking) < 0)
+ HGOTO_ERROR(H5E_FILE, H5E_CANTGET, NULL, "unable to get file locking flag")
+
/* Allocate space for VFD SWMR configuration info */
if (NULL == (vfd_swmr_config_ptr = H5MM_calloc(sizeof(H5F_vfd_swmr_config_t))))
HGOTO_ERROR(H5E_RESOURCE, H5E_CANTALLOC, NULL, "can't allocate memory for mdc log file name")
@@ -1854,25 +1869,6 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
}
/*
- * If the driver has a 'cmp' method then the driver is capable of
- * determining when two file handles refer to the same file and the
- * library can insure that when the application opens a file twice
- * that the two handles coordinate their operations appropriately.
- * Otherwise it is the application's responsibility to never open the
- * same file more than once at a time.
- */
- if (NULL == (drvr = H5FD_get_class(fapl_id)))
- HGOTO_ERROR(H5E_FILE, H5E_CANTGET, NULL, "unable to retrieve VFL class")
-
- /* Get the file access property list, for future queries */
- if (NULL == (a_plist = (H5P_genplist_t *)H5I_object(fapl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not file access property list")
-
- /* Check if we are using file locking */
- if (H5F__check_if_using_file_locks(a_plist, &use_file_locking) < 0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTGET, NULL, "unable to get file locking flag")
-
- /*
* Opening a file is a two step process. First we try to open the
* file in a way which doesn't affect its state (like not truncating
* or creating it) so we can compare it with files that are already
diff --git a/src/H5Fio.c b/src/H5Fio.c
index ca069e0..7193199 100644
--- a/src/H5Fio.c
+++ b/src/H5Fio.c
@@ -83,7 +83,8 @@
herr_t
H5F_shared_block_read(H5F_shared_t *f_sh, H5FD_mem_t type, haddr_t addr, size_t size, void *buf /*out*/)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ H5FD_mem_t map_type = type; /* Mapped memory type */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(FAIL)
@@ -96,8 +97,12 @@ H5F_shared_block_read(H5F_shared_t *f_sh, H5FD_mem_t type, haddr_t addr, size_t
if (H5F_addr_le(f_sh->tmp_addr, (addr + size)))
HGOTO_ERROR(H5E_IO, H5E_BADRANGE, FAIL, "attempting I/O in temporary file space")
+ if (!H5F_SHARED_USE_VFD_SWMR(f_sh))
+ /* Treat global heap as raw data */
+ map_type = (type == H5FD_MEM_GHEAP) ? H5FD_MEM_DRAW : type;
+
/* Pass through page buffer layer */
- if (H5PB_read(f_sh, type, addr, size, buf) < 0)
+ if (H5PB_read(f_sh, map_type, addr, size, buf) < 0)
HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "read through page buffer failed")
done:
@@ -141,7 +146,8 @@ H5F_block_read(H5F_t *f, H5FD_mem_t type, haddr_t addr, size_t size, void *buf /
herr_t
H5F_shared_block_write(H5F_shared_t *f_sh, H5FD_mem_t type, haddr_t addr, size_t size, const void *buf)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ H5FD_mem_t map_type = type; /* Mapped memory type */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(FAIL)
@@ -155,8 +161,12 @@ H5F_shared_block_write(H5F_shared_t *f_sh, H5FD_mem_t type, haddr_t addr, size_t
if (H5F_addr_le(f_sh->tmp_addr, (addr + size)))
HGOTO_ERROR(H5E_IO, H5E_BADRANGE, FAIL, "attempting I/O in temporary file space")
+ if (!H5F_SHARED_USE_VFD_SWMR(f_sh))
+ /* Treat global heap as raw data */
+ map_type = (type == H5FD_MEM_GHEAP) ? H5FD_MEM_DRAW : type;
+
/* Pass through page buffer layer */
- if (H5PB_write(f_sh, type, addr, size, buf) < 0)
+ if (H5PB_write(f_sh, map_type, addr, size, buf) < 0)
HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "write through page buffer failed")
done:
diff --git a/src/H5Fpkg.h b/src/H5Fpkg.h
index ca714c1..95854cb 100644
--- a/src/H5Fpkg.h
+++ b/src/H5Fpkg.h
@@ -512,22 +512,24 @@ struct H5F_shared_t {
uint32_t old_mdf_idx_entries_used;
/* Metadata file and updater file for VFD SWMR writer */
- int vfd_swmr_md_fd; /* POSIX: file descriptor for the
- * metadata file or -1 if the metadata file
- * is not currently open.
- * The vfd_swmr_config.generate_updater_files
- * is FALSE.
- */
- /* NFS:
- * The vfd_swmr_config.generate_updater_files
- * is TRUE and:
- * --if vfd_swmr_config.writer is FALSE,
- * this field is the file descriptor of the local
- * copy of the metadata file, or -1 if the local
- * copy is not currently open.
- * --if vfd_swmr_config.writer is TRUE, this field
- * is not used and is set to -1.
- */
+ int vfd_swmr_md_fd; /* POSIX: file descriptor for the
+ * metadata file or -1 if the metadata file
+ * is not currently open.
+ * The vfd_swmr_config.generate_updater_files
+ * is FALSE.
+ */
+ /* NFS:
+ * The vfd_swmr_config.generate_updater_files
+ * is TRUE and:
+ * --if vfd_swmr_config.writer is FALSE,
+ * this field is the file descriptor of the local
+ * copy of the metadata file, or -1 if the local
+ * copy is not currently open.
+ * --if vfd_swmr_config.writer is TRUE, this field
+ * is not used and is set to -1.
+ */
+ char *md_file_path_name; /* Name composed of md_file_path and md_file_name from vfd_swmr_config */
+
H5F_generate_md_ck_t generate_md_ck_cb;
/* For testing only:
* Invoke the user-defined callback if exists to
diff --git a/src/H5Fprivate.h b/src/H5Fprivate.h
index ffc369b..c594ed8 100644
--- a/src/H5Fprivate.h
+++ b/src/H5Fprivate.h
@@ -374,6 +374,7 @@ typedef struct H5F_t H5F_t;
#define H5F_THRESHOLD(F) ((F)->shared->threshold)
#define H5F_PGEND_META_THRES(F) ((F)->shared->fs.pgend_meta_thres)
#define H5F_POINT_OF_NO_RETURN(F) ((F)->shared->fs.point_of_no_return)
+#define H5F_SHARED_USE_VFD_SWMR(F_SH) ((F_SH)->vfd_swmr)
#define H5F_USE_VFD_SWMR(F) ((F)->shared->vfd_swmr)
#define H5F_NULL_FSM_ADDR(F) ((F)->shared->null_fsm_addr)
#define H5F_GET_MIN_DSET_OHDR(F) ((F)->shared->crt_dset_min_ohdr_flag)
@@ -438,6 +439,7 @@ typedef struct H5F_t H5F_t;
#define H5F_THRESHOLD(F) (H5F_get_threshold(F))
#define H5F_PGEND_META_THRES(F) (H5F_get_pgend_meta_thres(F))
#define H5F_POINT_OF_NO_RETURN(F) (H5F_get_point_of_no_return(F))
+#define H5F_SHARED_USE_VFD_SWMR(F_SH) (H5F_shared_get_use_vfd_swmr(F_SH))
#define H5F_USE_VFD_SWMR(F) (H5F_get_use_vfd_swmr(F))
#define H5F_NULL_FSM_ADDR(F) (H5F_get_null_fsm_addr(F))
#define H5F_GET_MIN_DSET_OHDR(F) (H5F_get_min_dset_ohdr(F))
@@ -628,6 +630,7 @@ typedef struct H5F_t H5F_t;
/* int32_t version = */ 0, \
/* int32_t tick_len = */ 0, \
/* int32_t max_lag = */ 0, \
+ /* hbool_t presume_posix_semantics = */ FALSE, \
/* hbool_t vfd_swmr_writer = */ FALSE, \
/* hbool_t maintain_metadata_file = */ FALSE, \
/* hbool_t generate_updater_files = */ FALSE, \
@@ -635,6 +638,7 @@ typedef struct H5F_t H5F_t;
/* int32_t md_pages_reserved = */ 0, \
/* int32_t pb_expansion_threshold = */ 0, \
/* char md_file_path[] = */ "", \
+ /* char md_file_name[] = */ "", \
/* char updater_file_path[] = */ "", \
/* char log_file_path[] = */ "" \
}
diff --git a/src/H5Fpublic.h b/src/H5Fpublic.h
index e9d3340..0e8eda6 100644
--- a/src/H5Fpublic.h
+++ b/src/H5Fpublic.h
@@ -271,6 +271,20 @@ typedef herr_t (*H5F_flush_cb_t)(hid_t object_id, void *udata);
* between the writer and the readers. This value must be at least 3,
* with 10 being the recommended minimum value.
*
+ * presume_posix_semantics
+ * A boolean flag that is only relevant to the reader.
+ * This flag should be set to TRUE if both of the following conditions hold:
+ * 1) Both the metadata file and HDF5 file are being written on a POSIX
+ * file system that is local to the reader.
+ * 2) The metadata file is being maintained directly by the VFD SWMR
+ * writer (i.e. without use of updater files and the auxiliary process.)
+ * If this flag is FALSE, the VFD SWMR reader must make the two adjustments:
+ * 1) Per legacy SWMR, the VFD that reads the HDF5 file proper must allow
+ * reads past EOF without error.
+ * 2) The VFD SWMR reader is not permitted to open an existing HDF5 file
+ * either before the VFD SWMR writer has opened it, or after it has
+ * closed it.
+ *
* writer:
* A boolean flag indicating whether the file opened with this FAPL entry
* will be opened R/W. (i.e. as a VFD SWMR writer)
@@ -333,9 +347,19 @@ typedef herr_t (*H5F_flush_cb_t)(hid_t object_id, void *udata);
*
* md_file_path:
* 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.
+ * field contains the path but not the name of the metadata file.
+ * If writer is FALSE, this field contains the path (but not the name)
+ * of the (possibly local copy of the) metadata file.
+ *
+ * md_file_name:
+ * If both the writer and maintain_metadata_file fields are TRUE, this
+ * field is defined, and must contain the name (but not the path) of
+ * the metadata file, or NULL.
+ * If writer is FALSE, this field is defined, and must contain either
+ * the name (but not the path) of the metadata file, or NULL.
+ * If the field is defined but NULL, the metadata file name is
+ * generated by adding the ".md" suffix to the HDF5 file name.
+ * If the field is not NULL, the metadata file name is used as provided.
*
* updater_file_path:
* If generate_updater_files is TRUE, the contents of this field depends
@@ -353,6 +377,7 @@ typedef struct H5F_vfd_swmr_config_t {
int32_t version;
uint32_t tick_len;
uint32_t max_lag;
+ hbool_t presume_posix_semantics;
hbool_t writer;
hbool_t maintain_metadata_file;
hbool_t generate_updater_files;
@@ -360,6 +385,7 @@ typedef struct H5F_vfd_swmr_config_t {
uint32_t md_pages_reserved;
uint32_t pb_expansion_threshold;
char md_file_path[H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1];
+ char md_file_name[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;
diff --git a/src/H5Fquery.c b/src/H5Fquery.c
index acdf521..22b9f78 100644
--- a/src/H5Fquery.c
+++ b/src/H5Fquery.c
@@ -1344,6 +1344,25 @@ H5F_get_file_locking(const H5F_t *f)
} /* end H5F_get_file_locking */
/*-------------------------------------------------------------------------
+ * Function: H5F_shared_get_use_vfd_swmr
+ *
+ * Purpose: Determine if VFD SWMR is enabled for this file.
+ *
+ * Return: TRUE/FALSE
+ *-------------------------------------------------------------------------
+ */
+unsigned
+H5F_shared_get_use_vfd_swmr(const H5F_shared_t *f_sh)
+{
+ /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */
+ FUNC_ENTER_NOAPI_NOINIT_NOERR
+
+ HDassert(f_sh);
+
+ FUNC_LEAVE_NOAPI(f_sh->vfd_swmr)
+} /* end H5F_shared_get_use_vfd_swmr() */
+
+/*-------------------------------------------------------------------------
* Function: H5F_get_use_vfd_swmr
*
* Purpose: Determine if VFD SWMR is enabled for this file.
diff --git a/src/H5Ftest.c b/src/H5Ftest.c
index 0213cd1..86b3c0b 100644
--- a/src/H5Ftest.c
+++ b/src/H5Ftest.c
@@ -338,11 +338,11 @@ H5F__vfd_swmr_writer_create_open_flush_test(hid_t file_id, hbool_t file_create)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file")
/* Open the metadata file */
- if ((md_fd = HDopen(f->shared->vfd_swmr_config.md_file_path, O_RDONLY)) < 0)
+ if ((md_fd = HDopen(f->shared->md_file_path_name, O_RDONLY)) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "error opening metadata file")
/* Verify the minimum size for the metadata file */
- if (HDstat(f->shared->vfd_swmr_config.md_file_path, &stat_buf) < 0)
+ if (HDstat(f->shared->md_file_path_name, &stat_buf) < 0)
HGOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "unable to stat the metadata file")
if (file_create) { /* Creating file */
@@ -634,7 +634,7 @@ H5F__vfd_swmr_writer_md_test(hid_t file_id, unsigned num_entries, H5FD_vfd_swmr_
HGOTO_ERROR(H5E_FILE, H5E_BADVALUE, FAIL, "incorrect # of entries in the delayed list")
/* Open the metadata file */
- if ((md_fd = HDopen(f->shared->vfd_swmr_config.md_file_path, O_RDONLY)) < 0)
+ if ((md_fd = HDopen(f->shared->md_file_path_name, O_RDONLY)) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "error opening metadata file")
/* Decode the header in the metadata file */
diff --git a/src/H5Fvfd_swmr.c b/src/H5Fvfd_swmr.c
index cd3a345..9c4360e 100644
--- a/src/H5Fvfd_swmr.c
+++ b/src/H5Fvfd_swmr.c
@@ -186,9 +186,11 @@ H5F_vfd_swmr_init(H5F_t *f, hbool_t file_create)
shared->vfd_swmr_writer = TRUE;
shared->tick_num = 0;
- /* Create the metadata file */
- if (((shared->vfd_swmr_md_fd = HDopen(shared->vfd_swmr_config.md_file_path,
- O_CREAT | O_RDWR | O_TRUNC, H5_POSIX_CREATE_MODE_RW))) < 0)
+ /* Retrieve the metadata filename built with md_file_path and md_file_name */
+ H5FD_vfd_swmr_get_md_path_name(f->shared->lf, &shared->md_file_path_name);
+
+ if (((shared->vfd_swmr_md_fd = HDopen(shared->md_file_path_name, O_CREAT | O_RDWR | O_TRUNC,
+ H5_POSIX_CREATE_MODE_RW))) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to create the metadata file")
md_size = (hsize_t)shared->vfd_swmr_config.md_pages_reserved * shared->fs_page_size;
@@ -215,7 +217,7 @@ H5F_vfd_swmr_init(H5F_t *f, hbool_t file_create)
/* For VFD SWMR testing: invoke callback if set to generate metadata file checksum */
if (shared->generate_md_ck_cb) {
- if (shared->generate_md_ck_cb(shared->vfd_swmr_config.md_file_path, shared->updater_seq_num) < 0)
+ if (shared->generate_md_ck_cb(shared->md_file_path_name, shared->updater_seq_num) < 0)
HGOTO_ERROR(H5E_FILE, H5E_SYSTEM, FAIL, "error from generate_md_ck_cb()")
}
@@ -331,14 +333,16 @@ H5F_vfd_swmr_close_or_flush(H5F_t *f, hbool_t closing)
/* For VFD SWMR testing: invoke callback if set to generate metadata file checksum */
if (shared->generate_md_ck_cb) {
- if (shared->generate_md_ck_cb(shared->vfd_swmr_config.md_file_path, shared->updater_seq_num) < 0)
+ if (shared->generate_md_ck_cb(shared->md_file_path_name, shared->updater_seq_num) < 0)
HGOTO_ERROR(H5E_FILE, H5E_SYSTEM, FAIL, "error from generate_md_ck_cb()")
}
/* Unlink the md file */
- if (HDunlink(shared->vfd_swmr_config.md_file_path) < 0)
+ if (HDunlink(shared->md_file_path_name) < 0)
HSYS_GOTO_ERROR(H5E_FILE, H5E_CANTREMOVE, FAIL, "unable to unlink the metadata file")
+ shared->md_file_path_name = (char *)H5MM_xfree(shared->md_file_path_name);
+
/* Close the free-space manager for the metadata file */
if (H5MV_close(f) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTRELEASE, FAIL,
@@ -571,7 +575,7 @@ H5F_update_vfd_swmr_metadata_file(H5F_t *f, uint32_t num_entries, H5FD_vfd_swmr_
/* For VFD SWMR testing: invoke callback if set to generate metadata file checksum */
if (shared->generate_md_ck_cb) {
- if (shared->generate_md_ck_cb(shared->vfd_swmr_config.md_file_path, shared->updater_seq_num) < 0)
+ if (shared->generate_md_ck_cb(shared->md_file_path_name, shared->updater_seq_num) < 0)
HGOTO_ERROR(H5E_FILE, H5E_SYSTEM, FAIL, "error from generate_md_ck_cb()")
}
@@ -1031,6 +1035,14 @@ H5F_vfd_swmr_writer_dump_index(H5F_shared_t *shared)
* 9) Increment the tick, and update the end of tick.
*
* Return: SUCCEED/FAIL
+ *
+ * Programmer: John Mainzer 12/29/18
+ *
+ * Changes:
+ * VDS changes: Check make_believe whether to continue the same or
+ * get out of make_believe and load header/index.
+ * For details, see RFC for VDS changes.
+ *
*-------------------------------------------------------------------------
*/
herr_t
@@ -1053,6 +1065,7 @@ H5F_vfd_swmr_reader_end_of_tick(H5F_t *f, hbool_t entering_api)
herr_t ret_value = SUCCEED;
uint32_t i, j, nchanges;
H5FD_t * file = shared->lf;
+ htri_t ret;
FUNC_ENTER_NOAPI(FAIL)
@@ -1071,9 +1084,35 @@ H5F_vfd_swmr_reader_end_of_tick(H5F_t *f, hbool_t entering_api)
* so as to detect the need to allocate more space for the
* index.
*/
- if (H5FD_vfd_swmr_get_tick_and_idx(file, TRUE, &tmp_tick_num, &vfd_entries, NULL) < 0)
- HGOTO_ERROR(H5E_ARGS, H5E_CANTGET, FAIL, "error in retrieving tick_num from driver")
+ /* Check if make_believe is set */
+ if (H5FD_vfd_swmr_get_make_believe(file)) {
+
+ /* Return value is TRUE: metadata file is not found, continue with make_believe
+ and skip eot processing */
+ if ((ret = H5FD_vfd_swmr_assess_make_believe(file)) == TRUE) {
+ /* Skip most of the EOT processing */
+ goto reader_update_eot;
+ }
+ else if (ret == FAIL)
+ HGOTO_ERROR(H5E_ARGS, H5E_CANTGET, FAIL, "error in assessing make_believe from driver")
+
+ /* Return value is FALSE i.e. found the metadata file */
+ HDassert(!ret);
+
+ /* Try to load the metadata file header and index */
+ if (H5FD_vfd_swmr_get_tick_and_idx(file, TRUE, &tmp_tick_num, &vfd_entries, NULL) < 0)
+ HGOTO_ERROR(H5E_ARGS, H5E_CANTGET, FAIL, "error in retrieving tick_num from driver")
+
+ /* Set make_believe to FALSE;
+ get out from make_believe state, continue normal processing */
+ H5FD_vfd_swmr_set_make_believe(file, FALSE);
+ }
+ else {
+ /* make_believe is not set, continue normal processing */
+ if (H5FD_vfd_swmr_get_tick_and_idx(file, TRUE, &tmp_tick_num, &vfd_entries, NULL) < 0)
+ HGOTO_ERROR(H5E_ARGS, H5E_CANTGET, FAIL, "error in retrieving tick_num from driver")
+ }
/* This is ok if we're entering the API, but it should
* not happen if we're exiting the API.
@@ -1288,6 +1327,8 @@ H5F_vfd_swmr_reader_end_of_tick(H5F_t *f, hbool_t entering_api)
}
}
+reader_update_eot:
+
/* Remove the entry from the EOT queue */
if (H5F_vfd_swmr_remove_entry_eot(f) < 0)
HDONE_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, FAIL, "unable to remove entry from EOT queue")
@@ -2305,7 +2346,8 @@ H5F__generate_updater_file(H5F_t *f, uint32_t num_entries, uint16_t flags, uint8
if (sz > H5F__MAX_VFD_SWMR_FILE_NAME_LEN)
HGOTO_ERROR(H5E_FILE, H5E_BADVALUE, FAIL, "string passed to snprintf would be truncated")
newname[H5F__MAX_VFD_SWMR_FILE_NAME_LEN - 1] = '\0';
- HDrename(namebuf, newname);
+ if (HDrename(namebuf, newname) < 0)
+ HGOTO_ERROR(H5E_FILE, H5E_BADVALUE, FAIL, "error from renaming the updater file")
++shared->updater_seq_num;
diff --git a/src/H5Pfapl.c b/src/H5Pfapl.c
index 7d3cf57..f900965 100644
--- a/src/H5Pfapl.c
+++ b/src/H5Pfapl.c
@@ -863,12 +863,6 @@ H5P__facc_reg_prop(H5P_genclass_t *pclass)
H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_DEC, NULL, NULL, NULL, NULL) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
- if (H5P_LST_FILE_ACCESS_ANY_VFD_g == H5I_INVALID_HID) {
- H5P_LST_FILE_ACCESS_ANY_VFD_g = H5P_create_id(pclass, false);
- if (H5P_LST_FILE_ACCESS_ANY_VFD_g == H5I_INVALID_HID) {
- HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't create any-vfd fapl");
- }
- }
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5P__facc_reg_prop() */
@@ -4637,6 +4631,7 @@ H5P__facc_vfd_swmr_config_enc(const void *value, void **_pp, size_t *size)
INT32ENCODE(*pp, (int32_t)config->version);
INT32ENCODE(*pp, (int32_t)config->tick_len);
INT32ENCODE(*pp, (int32_t)config->max_lag);
+ H5_ENCODE_UNSIGNED(*pp, config->presume_posix_semantics);
H5_ENCODE_UNSIGNED(*pp, config->writer);
H5_ENCODE_UNSIGNED(*pp, config->maintain_metadata_file);
H5_ENCODE_UNSIGNED(*pp, config->generate_updater_files);
@@ -4645,6 +4640,8 @@ H5P__facc_vfd_swmr_config_enc(const void *value, void **_pp, size_t *size)
INT32ENCODE(*pp, (int32_t)config->pb_expansion_threshold);
HDmemcpy(*pp, (const uint8_t *)(config->md_file_path), (size_t)(H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1));
*pp += H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1;
+ HDmemcpy(*pp, (const uint8_t *)(config->md_file_name), (size_t)(H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1));
+ *pp += H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1;
HDmemcpy(*pp, (const uint8_t *)(config->updater_file_path),
(size_t)(H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1));
*pp += H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1;
@@ -4655,7 +4652,7 @@ H5P__facc_vfd_swmr_config_enc(const void *value, void **_pp, size_t *size)
} /* end if */
/* Compute encoded size */
- *size += ((5 * sizeof(int32_t)) + (4 * sizeof(unsigned)) + (3 * (H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1)));
+ *size += ((5 * sizeof(int32_t)) + (5 * sizeof(unsigned)) + (4 * (H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1)));
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5P__facc_vfd_swmr_config_enc() */
@@ -4694,6 +4691,7 @@ H5P__facc_vfd_swmr_config_dec(const void **_pp, void *_value)
INT32DECODE(*pp, config->version);
UINT32DECODE(*pp, config->tick_len);
UINT32DECODE(*pp, config->max_lag);
+ UINT32DECODE(*pp, config->presume_posix_semantics);
H5_DECODE_UNSIGNED(*pp, config->writer);
H5_DECODE_UNSIGNED(*pp, config->maintain_metadata_file);
@@ -4707,6 +4705,9 @@ H5P__facc_vfd_swmr_config_dec(const void **_pp, void *_value)
HDstrcpy(config->md_file_path, (const char *)(*pp));
*pp += H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1;
+ HDstrcpy(config->md_file_name, (const char *)(*pp));
+ *pp += H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1;
+
HDstrcpy(config->updater_file_path, (const char *)(*pp));
*pp += H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1;
@@ -6257,14 +6258,13 @@ H5Pset_vfd_swmr_config(hid_t plist_id, H5F_vfd_swmr_config_t *config_ptr)
"either maintain_metadata_file or generate_updater_files must be TRUE")
}
- if ((config_ptr->writer && config_ptr->maintain_metadata_file) || !config_ptr->writer) {
- /* Must provide the path and base name of the metadata file */
- name_len = HDstrlen(config_ptr->md_file_path);
- if (name_len == 0)
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "md_file_path is empty")
- else if (name_len > H5F__MAX_VFD_SWMR_FILE_NAME_LEN)
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "md_file_path is too long")
- }
+ /* md_file_path can be "" or a name (+"/")*/
+ /* md_file_name can be "" (+ ".md") or a name */
+ /* <md_file_path, md_file_name> pattern: <null, null> <null, name> <name, null> <name, name> */
+ /* Can only validate for <null, name>, <name, name> cases */
+ name_len = HDstrlen(config_ptr->md_file_path) + HDstrlen(config_ptr->md_file_name);
+ if (name_len > H5F__MAX_VFD_SWMR_FILE_NAME_LEN)
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "md_file_name + md_file_path is too long")
if (config_ptr->writer && config_ptr->generate_updater_files) {
/* Must provide the path and base name of the metadata updater files */
diff --git a/src/H5Pint.c b/src/H5Pint.c
index 400795a..da8ca1c 100644
--- a/src/H5Pint.c
+++ b/src/H5Pint.c
@@ -182,7 +182,6 @@ hid_t H5P_LST_DATASET_CREATE_ID_g = H5I_INVALID_HID;
hid_t H5P_LST_DATASET_XFER_ID_g = H5I_INVALID_HID;
hid_t H5P_LST_DATATYPE_ACCESS_ID_g = H5I_INVALID_HID;
hid_t H5P_LST_DATATYPE_CREATE_ID_g = H5I_INVALID_HID;
-hid_t H5P_LST_FILE_ACCESS_ANY_VFD_g = H5I_INVALID_HID;
hid_t H5P_LST_FILE_ACCESS_ID_g = H5I_INVALID_HID;
hid_t H5P_LST_FILE_CREATE_ID_g = H5I_INVALID_HID;
hid_t H5P_LST_FILE_MOUNT_ID_g = H5I_INVALID_HID;
@@ -605,7 +604,6 @@ H5P_term_package(void)
H5P_LST_DATASET_XFER_ID_g = H5I_INVALID_HID;
H5P_LST_DATATYPE_ACCESS_ID_g = H5I_INVALID_HID;
H5P_LST_DATATYPE_CREATE_ID_g = H5I_INVALID_HID;
- H5P_LST_FILE_ACCESS_ANY_VFD_g = H5I_INVALID_HID;
H5P_LST_FILE_ACCESS_ID_g = H5I_INVALID_HID;
H5P_LST_FILE_CREATE_ID_g = H5I_INVALID_HID;
H5P_LST_FILE_MOUNT_ID_g = H5I_INVALID_HID;
@@ -660,7 +658,6 @@ H5P_term_package(void)
H5P_CLS_DATASET_XFER_ID_g = H5I_INVALID_HID;
H5P_CLS_DATATYPE_ACCESS_ID_g = H5I_INVALID_HID;
H5P_CLS_DATATYPE_CREATE_ID_g = H5I_INVALID_HID;
- H5P_LST_FILE_ACCESS_ANY_VFD_g = H5I_INVALID_HID;
H5P_CLS_FILE_ACCESS_ID_g = H5I_INVALID_HID;
H5P_CLS_FILE_CREATE_ID_g = H5I_INVALID_HID;
H5P_CLS_FILE_MOUNT_ID_g = H5I_INVALID_HID;
diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h
index ed9db10..4262026 100644
--- a/src/H5Ppublic.h
+++ b/src/H5Ppublic.h
@@ -78,7 +78,6 @@
*/
#define H5P_FILE_CREATE_DEFAULT (H5OPEN H5P_LST_FILE_CREATE_ID_g)
#define H5P_FILE_ACCESS_DEFAULT (H5OPEN H5P_LST_FILE_ACCESS_ID_g)
-#define H5P_FILE_ACCESS_ANY_VFD (H5OPEN H5P_LST_FILE_ACCESS_ANY_VFD_g)
#define H5P_DATASET_CREATE_DEFAULT (H5OPEN H5P_LST_DATASET_CREATE_ID_g)
#define H5P_DATASET_ACCESS_DEFAULT (H5OPEN H5P_LST_DATASET_ACCESS_ID_g)
#define H5P_DATASET_XFER_DEFAULT (H5OPEN H5P_LST_DATASET_XFER_ID_g)
@@ -397,7 +396,6 @@ H5_DLLVAR hid_t H5P_CLS_REFERENCE_ACCESS_ID_g;
/* (Internal to library, do not use! Use macros above) */
H5_DLLVAR hid_t H5P_LST_FILE_CREATE_ID_g;
H5_DLLVAR hid_t H5P_LST_FILE_ACCESS_ID_g;
-H5_DLLVAR hid_t H5P_LST_FILE_ACCESS_ANY_VFD_g;
H5_DLLVAR hid_t H5P_LST_DATASET_CREATE_ID_g;
H5_DLLVAR hid_t H5P_LST_DATASET_ACCESS_ID_g;
H5_DLLVAR hid_t H5P_LST_DATASET_XFER_ID_g;
diff --git a/test/page_buffer.c b/test/page_buffer.c
index c3555aa..9e45809 100644
--- a/test/page_buffer.c
+++ b/test/page_buffer.c
@@ -115,7 +115,9 @@ swmr_fapl_augment(hid_t fapl, const char *filename, uint32_t max_lag)
HDfprintf(stderr, "H5_basename() failed\n");
return -1;
}
- HDsnprintf(config.md_file_path, sizeof(config.md_file_path), "%s/%s.shadow", dname, bname);
+ HDsnprintf(config.md_file_path, sizeof(config.md_file_path), "%s", dname);
+ HDsnprintf(config.md_file_name, sizeof(config.md_file_name), "%s.shadow", bname);
+
HDfree(dname);
HDfree(bname);
diff --git a/test/test_vfd_swmr.sh.in b/test/test_vfd_swmr.sh.in
index 08d2706..4548775 100644
--- a/test/test_vfd_swmr.sh.in
+++ b/test/test_vfd_swmr.sh.in
@@ -1095,6 +1095,9 @@ for options in "-d 1" "-d 1 -F" "-d 2 -l 16" "-d 2 -F -l 16" "-d 1 -t" "-d 1 -t
if [ ${do_many_small:-no} = no ]; then
continue
fi
+
+ rm vfd_swmr_bigset*.h5 2> /dev/null
+
#
# Test many small datasets of two or three dimensions.
#
@@ -1188,6 +1191,9 @@ for options in "-d 1" "-d 1 -F" "-d 2 -l 10" "-d 2 -F -l 10" "-d 1 -t -l 10" "-d
if [ ${do_few_big:-no} = no ]; then
continue
fi
+
+ rm vfd_swmr_bigset*.h5 2> /dev/null
+
echo launch vfd_swmr_bigset_writer few big, options $options ......may take some time......
# Launch the auxiliary process for testing NFS if the --enable-aux-process option is enabled for configuration.
diff --git a/test/vfd_swmr.c b/test/vfd_swmr.c
index e7eb3da..cffe503 100644
--- a/test/vfd_swmr.c
+++ b/test/vfd_swmr.c
@@ -16,8 +16,12 @@
*
* Tests the VFD SWMR Feature.
*
+ * Note: Relevant tests in this file are modified to reflect the
+ * changes to the fapl for VDS. See latest RFC.
+ *
*************************************************************/
+#include "H5queue.h"
#include "h5test.h"
#include "vfd_swmr_common.h"
@@ -103,11 +107,8 @@ static unsigned test_updater_generate_md_checksums(hbool_t file_create);
* --tick_len: should be >= 0
* --max_lag: should be >= 3
* --md_pages_reserved: should be >= 2
- * --md_file_path: should contain the metadata file path (POSIX)
* --at least one of maintain_metadata_file and generate_updater_files
* must be true
- * --if both the writer and maintain_metadata_file fields are true,
- * then md_file_path field shouldn't be empty
* --if both the writer and generate_updater_files fields are true,
* then updater_file_path field shouldn't be empty
* B) Verify that info set in the fapl is retrieved correctly.
@@ -182,16 +183,8 @@ test_fapl(void)
/* Set valid md_pages_reserved */
my_config->md_pages_reserved = 2;
- /* Should fail: empty md_file_path */
- H5E_BEGIN_TRY
- {
- ret = H5Pset_vfd_swmr_config(fapl, my_config);
- }
- H5E_END_TRY;
- if (ret >= 0)
- TEST_ERROR;
+ my_config->writer = TRUE;
- my_config->writer = TRUE;
/* Should fail: at least one of maintain_metadata_file and generate_updater_files must be true */
H5E_BEGIN_TRY
{
@@ -203,16 +196,8 @@ test_fapl(void)
my_config->writer = TRUE;
my_config->maintain_metadata_file = TRUE;
- /* Should fail: empty md_file_path */
- H5E_BEGIN_TRY
- {
- ret = H5Pset_vfd_swmr_config(fapl, my_config);
- }
- H5E_END_TRY;
- if (ret >= 0)
- TEST_ERROR;
-
my_config->generate_updater_files = TRUE;
+
/* Should fail: empty updater_file_path */
H5E_BEGIN_TRY
{
@@ -222,8 +207,8 @@ test_fapl(void)
if (ret >= 0)
TEST_ERROR;
- /* Set md_file_path */
- HDstrcpy(my_config->md_file_path, MD_FILENAME);
+ /* Set md_file_name */
+ HDstrcpy(my_config->md_file_name, MD_FILENAME);
my_config->generate_updater_files = FALSE;
/* Should succeed in setting the configuration info */
@@ -244,7 +229,9 @@ test_fapl(void)
TEST_ERROR;
if (my_config->generate_updater_files)
TEST_ERROR;
- if (HDstrcmp(my_config->md_file_path, MD_FILENAME) != 0)
+
+ /* Check md_file_name instead of md_file_path */
+ if (HDstrcmp(my_config->md_file_name, MD_FILENAME) != 0)
TEST_ERROR;
my_config->generate_updater_files = TRUE;
@@ -269,7 +256,9 @@ test_fapl(void)
TEST_ERROR;
if (!my_config->maintain_metadata_file)
TEST_ERROR;
- if (HDstrcmp(my_config->md_file_path, MD_FILENAME) != 0)
+
+ /* Check md_file_name instead of md_file_path */
+ if (HDstrcmp(my_config->md_file_name, MD_FILENAME) != 0)
TEST_ERROR;
/* Close the file access property list */
@@ -348,9 +337,10 @@ test_file_fapl(void)
* Configured as VFD SWMR reader + no page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config1, 4, 7, FALSE, TRUE, FALSE, TRUE, 2, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 4, 7, FALSE, FALSE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 0, config1);
@@ -373,9 +363,10 @@ test_file_fapl(void)
* Configured as VFD SWMR writer + no page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config1, 4, 7, TRUE, TRUE, TRUE, TRUE, 2, MD_FILENAME, UD_FILENAME);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 4, 7, FALSE, TRUE, TRUE, TRUE, TRUE, 2, NULL, MD_FILENAME, UD_FILENAME);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 0, config1);
@@ -413,9 +404,10 @@ test_file_fapl(void)
* Configured as VFD SWMR writer + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config1, 4, 7, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 4, 7, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config1);
@@ -485,9 +477,10 @@ test_file_fapl(void)
* Set up different VFD SWMR configuration + page_buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config2, 4, 10, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config2, 4, 10, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl2 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config2);
@@ -525,9 +518,10 @@ test_file_fapl(void)
* Set up as VFD SWMR writer in config1 but different from config2
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config1, 3, 8, TRUE, TRUE, FALSE, TRUE, 3, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 3, 8, FALSE, TRUE, TRUE, FALSE, TRUE, 3, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config1);
@@ -553,7 +547,10 @@ test_file_fapl(void)
* Set up as VFD SWMR reader in config1 which is same as config2
*/
- init_vfd_swmr_config(config1, 4, 10, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 4, 10, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config1);
@@ -691,9 +688,10 @@ test_file_end_tick(void)
* Configured file 1 as VFD SWMR writer + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config1, 10, 15, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 10, 15, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config1);
@@ -705,9 +703,10 @@ test_file_end_tick(void)
* Configured file 2 as VFD SWMR writer + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config2, 5, 6, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME2, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config2, 5, 6, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME2, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl2 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config2);
@@ -719,9 +718,10 @@ test_file_end_tick(void)
* Configured file 3 as VFD SWMR writer + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config3, 3, 6, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME3, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config3, 3, 6, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME3, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl3 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config3);
@@ -896,9 +896,10 @@ test_writer_create_open_flush(void)
* Set up the VFD SWMR configuration + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(my_config, 1, 3, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(my_config, 1, 3, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, my_config);
@@ -1017,9 +1018,10 @@ test_writer_md(void)
if ((my_config = HDmalloc(sizeof(H5F_vfd_swmr_config_t))) == NULL)
FAIL_STACK_ERROR;
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(my_config, 1, 3, TRUE, TRUE, FALSE, TRUE, 256, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(my_config, 1, 3, FALSE, TRUE, TRUE, FALSE, TRUE, 256, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, FS_PAGE_SIZE, my_config);
@@ -1327,9 +1329,10 @@ test_reader_md_concur(void)
* Set up the VFD SWMR configuration + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config_writer, 1, 3, TRUE, TRUE, FALSE, TRUE, 256, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config_writer, 1, 3, FALSE, TRUE, TRUE, FALSE, TRUE, 256, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl_writer = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, FS_PAGE_SIZE, config_writer);
@@ -1403,9 +1406,11 @@ test_reader_md_concur(void)
* Set up the VFD SWMR configuration as reader + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config_reader, 1, 3, FALSE, TRUE, FALSE, TRUE, 256, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config_reader, 1, 3, FALSE, FALSE, TRUE, FALSE, TRUE, 256, NULL, MD_FILENAME,
+ NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl_reader = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, FS_PAGE_SIZE, config_reader);
@@ -2010,9 +2015,11 @@ test_multiple_file_opens_concur(void)
/* Set the VFD SWMR configuration in fapl_writer + page buffering */
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config_writer, 1, 3, TRUE, TRUE, FALSE, TRUE, 256, MD_FILENAME2, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config_writer, 1, 3, FALSE, TRUE, TRUE, FALSE, TRUE, 256, NULL, MD_FILENAME2,
+ NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl_writer = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, FS_PAGE_SIZE, config_writer);
@@ -2077,9 +2084,10 @@ test_multiple_file_opens_concur(void)
if ((config1 = HDmalloc(sizeof(*config1))) == NULL)
FAIL_STACK_ERROR;
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config1, 7, 10, TRUE, TRUE, FALSE, TRUE, 256, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 7, 10, FALSE, TRUE, TRUE, FALSE, TRUE, 256, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, FS_PAGE_SIZE, config1);
@@ -2120,9 +2128,10 @@ test_multiple_file_opens_concur(void)
if ((config2 = HDmalloc(sizeof(*config2))) == NULL)
FAIL_STACK_ERROR;
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config2, 1, 3, FALSE, TRUE, FALSE, TRUE, 256, MD_FILENAME2, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config2, 1, 3, FALSE, FALSE, TRUE, FALSE, TRUE, 256, NULL, MD_FILENAME2, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl2 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, FS_PAGE_SIZE, config2);
@@ -2259,9 +2268,10 @@ test_disable_enable_eot_concur(void)
* Set up the VFD SWMR configuration + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config_writer, 1, 3, TRUE, TRUE, FALSE, TRUE, 256, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config_writer, 1, 3, FALSE, TRUE, TRUE, FALSE, TRUE, 256, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl_writer = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, FS_PAGE_SIZE, config_writer);
@@ -2339,9 +2349,11 @@ test_disable_enable_eot_concur(void)
* Set up the VFD SWMR configuration as reader + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config_reader, 1, 3, FALSE, TRUE, FALSE, TRUE, 256, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config_reader, 1, 3, FALSE, FALSE, TRUE, FALSE, TRUE, 256, NULL, MD_FILENAME,
+ NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl_reader = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, FS_PAGE_SIZE, config_reader);
@@ -2549,9 +2561,10 @@ test_file_end_tick_concur(void)
* Set up the VFD SWMR configuration + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config_writer, 1, 3, TRUE, TRUE, FALSE, TRUE, 256, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config_writer, 1, 3, FALSE, TRUE, TRUE, FALSE, TRUE, 256, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl_writer = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, FS_PAGE_SIZE, config_writer);
@@ -2625,9 +2638,11 @@ test_file_end_tick_concur(void)
if ((config_reader = HDmalloc(sizeof(*config_reader))) == NULL)
HDexit(EXIT_FAILURE);
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config_reader, 1, 3, FALSE, TRUE, FALSE, TRUE, 256, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config_reader, 1, 3, FALSE, FALSE, TRUE, FALSE, TRUE, 256, NULL, MD_FILENAME,
+ NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl_reader = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, FS_PAGE_SIZE, config_reader);
@@ -2822,18 +2837,20 @@ test_multiple_file_opens(void)
* Configured as VFD SWMR writer + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config1, 4, 6, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 4, 6, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config1);
if (fapl1 == H5I_INVALID_HID)
FAIL_STACK_ERROR;
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config2, 4, 6, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME2, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config2, 4, 6, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME2, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl2 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config2);
@@ -3033,9 +3050,10 @@ test_same_file_opens(void)
* Set the VFD SWMR configuration in fapl1 + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config1, 4, 10, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 4, 10, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config1);
@@ -3061,9 +3079,10 @@ test_same_file_opens(void)
* Set the VFD SWMR configuration in fapl2 + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config2, 3, 8, FALSE, TRUE, FALSE, TRUE, 3, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config2, 3, 8, FALSE, FALSE, TRUE, FALSE, TRUE, 3, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl2 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config2);
@@ -3116,9 +3135,10 @@ test_same_file_opens(void)
* Set up as VFD SWMR reader + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config1, 4, 10, FALSE, TRUE, FALSE, TRUE, 2, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 4, 10, FALSE, FALSE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config1);
@@ -3153,9 +3173,10 @@ test_same_file_opens(void)
* Set up as VFD SWMR writer + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config1, 4, 10, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 4, 10, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config1);
@@ -3209,9 +3230,10 @@ test_same_file_opens(void)
* Set up as VFD SWMR writer + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config1, 4, 10, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 4, 10, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config1);
@@ -3418,9 +3440,10 @@ test_enable_disable_eot(void)
* Configured first file as VFD SWMR writer + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config1, 4, 6, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 4, 6, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config1);
@@ -3432,9 +3455,10 @@ test_enable_disable_eot(void)
* Configured second file as VFD SWMR writer + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config2, 4, 6, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME2, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config2, 4, 6, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME2, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl2 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config2);
@@ -3446,9 +3470,10 @@ test_enable_disable_eot(void)
* Configured third file as VFD SWMR writer + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config3, 4, 6, TRUE, TRUE, FALSE, TRUE, 2, MD_FILENAME3, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config3, 4, 6, FALSE, TRUE, TRUE, FALSE, TRUE, 2, NULL, MD_FILENAME3, NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl3 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config3);
@@ -3700,6 +3725,7 @@ error:
static unsigned
test_updater_flags(void)
{
+ char filename[FILE_NAME_LEN]; /* Filename to use */
hid_t fid = H5I_INVALID_HID; /* File ID */
hid_t fcpl = H5I_INVALID_HID; /* File creation property list ID */
hid_t fapl = H5I_INVALID_HID; /* File access property list ID */
@@ -3731,9 +3757,10 @@ test_updater_flags(void)
* Configured as VFD SWMR writer + page buffering + generate updater files
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config, 4, 7, TRUE, TRUE, TRUE, TRUE, 2, MD_FILENAME, UD_FILENAME);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config, 4, 7, FALSE, TRUE, TRUE, TRUE, TRUE, 2, NULL, MD_FILENAME, UD_FILENAME);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config);
@@ -3741,12 +3768,15 @@ test_updater_flags(void)
if (fapl == H5I_INVALID_HID)
TEST_ERROR;
+ /* FILENAME */
+ h5_fixname("vfd_swmr_file", fapl, filename, sizeof(filename));
+
if ((fcpl = vfd_swmr_create_fcpl(H5F_FSPACE_STRATEGY_PAGE, 4096)) < 0) {
HDprintf("vfd_swmr_create_fcpl() failed");
FAIL_STACK_ERROR;
}
- if ((fid = H5Fcreate(FILENAME, H5F_ACC_TRUNC, fcpl, fapl)) < 0)
+ if ((fid = H5Fcreate(filename, H5F_ACC_TRUNC, fcpl, fapl)) < 0)
TEST_ERROR;
/* Get the file's file access property list */
@@ -3769,7 +3799,7 @@ test_updater_flags(void)
TEST_ERROR;
/* Check updater file size */
- if (HDstat(namebuf, &sb) == 0 && sb.st_size != H5F_UD_HEADER_SIZE)
+ if (HDstat(namebuf, &sb) == 0 && sb.st_size < H5F_UD_HEADER_SIZE)
TEST_ERROR;
/* Closing */
@@ -3880,9 +3910,10 @@ test_updater_flags_same_file_opens(void)
* Set the VFD SWMR configuration in fapl1 + page buffering
*/
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config1, 4, 10, TRUE, TRUE, TRUE, TRUE, 2, MD_FILENAME, UD_FILENAME);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config1, 4, 10, FALSE, TRUE, TRUE, TRUE, TRUE, 2, NULL, MD_FILENAME, UD_FILENAME);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl1 = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config1);
@@ -4253,6 +4284,8 @@ test_updater_generate_md_checksums(hbool_t file_create)
hid_t fapl = H5I_INVALID_HID; /* File access property list ID */
H5F_vfd_swmr_config_t config; /* Configuration for VFD SWMR */
H5F_generate_md_ck_cb_t cb_info; /* Callback */
+ H5F_t * f = NULL; /* Internal file object pointer */
+ char * md_file_path_name;
if (file_create) {
TESTING("VFD SWMR updater generate checksums for metadata file with H5Fcreate");
@@ -4261,9 +4294,10 @@ test_updater_generate_md_checksums(hbool_t file_create)
TESTING("VFD SWMR updater generate checksums for metadata file with H5Fopen");
}
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(&config, 4, 7, TRUE, TRUE, TRUE, TRUE, 2, MD_FILE, UD_FILE);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(&config, 4, 7, FALSE, TRUE, TRUE, TRUE, TRUE, 2, NULL, MD_FILE, UD_FILE);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl = vfd_swmr_create_fapl(TRUE, TRUE, FALSE, 4096, &config);
@@ -4298,6 +4332,13 @@ test_updater_generate_md_checksums(hbool_t file_create)
FAIL_STACK_ERROR;
}
+ /* Get a pointer to the internal file object */
+ if (NULL == (f = (H5F_t *)H5VL_object(fid)))
+ TEST_ERROR
+
+ /* Get the full metadata file pathname */
+ md_file_path_name = HDstrdup(f->shared->md_file_path_name);
+
/* Close the file */
if (H5Fclose(fid) < 0)
FAIL_STACK_ERROR;
@@ -4308,11 +4349,11 @@ test_updater_generate_md_checksums(hbool_t file_create)
FAIL_STACK_ERROR;
/* Verify contents of checksum file and updater files */
- if (verify_ud_chk(config.md_file_path, config.updater_file_path) < 0)
+ if (verify_ud_chk(md_file_path_name, config.updater_file_path) < 0)
TEST_ERROR;
/* It's important to clean up the checksum and updater files. */
- clean_chk_ud_files(config.md_file_path, config.updater_file_path);
+ clean_chk_ud_files(md_file_path_name, config.updater_file_path);
PASSED();
@@ -4328,7 +4369,7 @@ error:
H5E_END_TRY;
/* It's important to clean up the chechsum and updater files. */
- clean_chk_ud_files(config.md_file_path, config.updater_file_path);
+ clean_chk_ud_files(md_file_path_name, config.updater_file_path);
return 1;
diff --git a/test/vfd_swmr_addrem_writer.c b/test/vfd_swmr_addrem_writer.c
index 0cd1713..ea395f6 100644
--- a/test/vfd_swmr_addrem_writer.c
+++ b/test/vfd_swmr_addrem_writer.c
@@ -94,9 +94,10 @@ open_skeleton(const char *filename, unsigned verbose)
if ((config = HDcalloc(1, sizeof(*config))) == NULL)
goto error;
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config, 4, 5, TRUE, TRUE, FALSE, TRUE, 128, "rw-shadow", NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config, 4, 5, FALSE, TRUE, TRUE, FALSE, TRUE, 128, NULL, "rw-shadow", NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
if ((fapl = vfd_swmr_create_fapl(TRUE, TRUE, FALSE, 4096, config)) < 0)
diff --git a/test/vfd_swmr_attrdset_writer.c b/test/vfd_swmr_attrdset_writer.c
index 37c4c72..85ceb01 100644
--- a/test/vfd_swmr_attrdset_writer.c
+++ b/test/vfd_swmr_attrdset_writer.c
@@ -130,40 +130,40 @@ typedef struct {
.fd_reader_to_writer = -1, .notify = 0, .verify = 0 \
}
-static herr_t state_init(state_t *s, int argc, const char *const *argv);
-
-static herr_t np_init(np_state_t *np, hbool_t writer);
-static herr_t np_close(np_state_t *np, hbool_t writer);
-static herr_t np_writer(hbool_t result, unsigned step, const state_t *s, np_state_t *np,
- H5F_vfd_swmr_config_t *config);
-static herr_t np_reader(hbool_t result, unsigned step, const state_t *s, np_state_t *np);
-static herr_t np_confirm_verify_notify(int fd, unsigned step, const state_t *s, np_state_t *np);
-static herr_t np_reader_no_verification(const state_t *s, np_state_t *np, H5F_vfd_swmr_config_t *config);
-
-static herr_t create_dsets(const state_t *s, dsets_state_t *ds);
-static herr_t open_dsets(const state_t *s, dsets_state_t *ds);
-static herr_t open_dset_real(hid_t fid, hid_t *did, const char *name, unsigned *max_compact,
- unsigned *min_dense);
-static herr_t close_dsets(const dsets_state_t *ds);
-
-static herr_t perform_dsets_operations(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t *config,
+static hbool_t state_init(state_t *s, int argc, const char *const *argv);
+
+static hbool_t np_init(np_state_t *np, hbool_t writer);
+static hbool_t np_close(np_state_t *np, hbool_t writer);
+static hbool_t np_writer(hbool_t result, unsigned step, const state_t *s, np_state_t *np,
+ H5F_vfd_swmr_config_t *config);
+static hbool_t np_reader(hbool_t result, unsigned step, const state_t *s, np_state_t *np);
+static hbool_t np_confirm_verify_notify(int fd, unsigned step, const state_t *s, np_state_t *np);
+static hbool_t np_reader_no_verification(const state_t *s, np_state_t *np, H5F_vfd_swmr_config_t *config);
+
+static hbool_t create_dsets(const state_t *s, dsets_state_t *ds);
+static hbool_t open_dsets(const state_t *s, dsets_state_t *ds);
+static hbool_t open_dset_real(hid_t fid, hid_t *did, const char *name, unsigned *max_compact,
+ unsigned *min_dense);
+static hbool_t close_dsets(const dsets_state_t *ds);
+
+static hbool_t perform_dsets_operations(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t *config,
+ np_state_t *np);
+static hbool_t attr_dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds, unsigned which);
+static hbool_t attr_action(unsigned action, const state_t *s, hid_t did, unsigned which);
+static hbool_t add_attr(const state_t *s, hid_t did, unsigned int which);
+static hbool_t modify_attr(const state_t *s, hid_t did, unsigned int which);
+static hbool_t delete_attr(hid_t did, unsigned int which);
+
+static hbool_t verify_dsets_operations(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t *config,
np_state_t *np);
-static herr_t attr_dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds, unsigned which);
-static herr_t attr_action(unsigned action, const state_t *s, hid_t did, unsigned which);
-static herr_t add_attr(const state_t *s, hid_t did, unsigned int which);
-static herr_t modify_attr(const state_t *s, hid_t did, unsigned int which);
-static herr_t delete_attr(hid_t did, unsigned int which);
-
-static herr_t verify_dsets_operations(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t *config,
- np_state_t *np);
-static herr_t verify_attr_dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds,
- unsigned which);
-static herr_t verify_attr_action(unsigned action, hid_t did, unsigned which);
-static herr_t verify_add_or_modify_attr(unsigned action, hid_t did, char *attr_name, unsigned int which);
-static herr_t verify_delete_attr(hid_t did, char *attr_name);
-static herr_t verify_storage_cont(unsigned action, hid_t did, unsigned int which, unsigned max_compact,
- unsigned min_dense, unsigned asteps);
-static herr_t verify_storage_cont_real(hid_t did, unsigned int which, unsigned cut_point);
+static hbool_t verify_attr_dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds,
+ unsigned which);
+static hbool_t verify_attr_action(unsigned action, hid_t did, unsigned which);
+static hbool_t verify_add_or_modify_attr(unsigned action, hid_t did, char *attr_name, unsigned int which);
+static hbool_t verify_delete_attr(hid_t did, char *attr_name);
+static hbool_t verify_storage_cont(unsigned action, hid_t did, unsigned int which, unsigned max_compact,
+ unsigned min_dense, unsigned asteps);
+static hbool_t verify_storage_cont_real(hid_t did, unsigned int which, unsigned cut_point);
/* Names for datasets */
#define DSET_COMPACT_NAME "compact_dset"
@@ -215,7 +215,7 @@ usage(const char *progname)
/*
* Initialize option info in state_t
*/
-static herr_t
+static hbool_t
state_init(state_t *s, int argc, const char *const *argv)
{
unsigned long tmp;
@@ -347,20 +347,20 @@ state_init(state_t *s, int argc, const char *const *argv)
/* The test file name */
esnprintf(s->filename, sizeof(s->filename), "vfd_swmr_attrdset.h5");
- return SUCCEED;
+ return true;
error:
if (tfile)
HDfree(tfile);
- return FAIL;
+ return false;
} /* state_init() */
/*
* Create the datasets as specified on the command line.
*/
-static herr_t
+static hbool_t
create_dsets(const state_t *s, dsets_state_t *ds)
{
hid_t dcpl = H5I_INVALID_HID;
@@ -719,7 +719,7 @@ create_dsets(const state_t *s, dsets_state_t *ds)
}
}
- return SUCCEED;
+ return true;
error:
H5E_BEGIN_TRY
@@ -741,14 +741,14 @@ error:
}
H5E_END_TRY;
- return FAIL;
+ return false;
} /* create_dsets() */
/*
* Open the datasets as specified.
*/
-static herr_t
+static hbool_t
open_dsets(const state_t *s, dsets_state_t *ds)
{
*ds = DSETS_INITIALIZER;
@@ -796,10 +796,10 @@ open_dsets(const state_t *s, dsets_state_t *ds)
}
}
- return SUCCEED;
+ return true;
error:
- return FAIL;
+ return false;
} /* open_dsets() */
@@ -807,7 +807,7 @@ error:
* Do the real work of opening the dataset.
* Retrieve the max_compact and min_dense values for the dataset.
*/
-static herr_t
+static hbool_t
open_dset_real(hid_t fid, hid_t *did, const char *name, unsigned *max_compact, unsigned *min_dense)
{
hid_t dcpl = H5I_INVALID_HID;
@@ -832,7 +832,7 @@ open_dset_real(hid_t fid, hid_t *did, const char *name, unsigned *max_compact, u
TEST_ERROR;
}
- return SUCCEED;
+ return true;
error:
H5E_BEGIN_TRY
@@ -842,13 +842,13 @@ error:
}
H5E_END_TRY;
- return FAIL;
+ return false;
} /* open_dset_real() */
/*
* Close all the datasets as specified.
*/
-static herr_t
+static hbool_t
close_dsets(const dsets_state_t *ds)
{
if (ds->compact_did != H5I_INVALID_HID && H5Dclose(ds->compact_did) < 0) {
@@ -886,7 +886,7 @@ close_dsets(const dsets_state_t *ds)
TEST_ERROR;
}
- return SUCCEED;
+ return true;
error:
H5E_BEGIN_TRY
@@ -901,7 +901,7 @@ error:
}
H5E_END_TRY;
- return FAIL;
+ return false;
} /* close_dsets() */
/*
@@ -914,7 +914,7 @@ error:
* MODIFY_ATTR : -m option
* DELETE_ATTR : -d <dattrs> option
*/
-static herr_t
+static hbool_t
perform_dsets_operations(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t *config, np_state_t *np)
{
unsigned step;
@@ -974,10 +974,10 @@ perform_dsets_operations(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t *c
}
}
- return SUCCEED;
+ return true;
error:
- return FAIL;
+ return false;
} /* perform_dsets_operations() */
@@ -987,7 +987,7 @@ error:
* -g: contiguous dataset
* -k: 5 chunked datasets with 5 indexing types
*/
-static herr_t
+static hbool_t
attr_dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds, unsigned which)
{
int nerrors = 0;
@@ -1035,7 +1035,7 @@ attr_dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds, un
}
if (nerrors)
- ret = FALSE;
+ ret = false;
return (ret);
@@ -1047,7 +1047,7 @@ attr_dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds, un
* MODIFY_ATTR : modify `which` attribute
* DELETE_ATTR : delete `which` attribute
*/
-static herr_t
+static hbool_t
attr_action(unsigned action, const state_t *s, hid_t did, unsigned which)
{
hbool_t ret;
@@ -1080,7 +1080,7 @@ attr_action(unsigned action, const state_t *s, hid_t did, unsigned which)
* H5T_NATIVE_UINT32 (-b) or
* H5T_NATIVE_UINT32 (default)
*/
-static herr_t
+static hbool_t
add_attr(const state_t *s, hid_t did, unsigned int which)
{
hid_t aid = H5I_INVALID_HID;
@@ -1140,7 +1140,7 @@ add_attr(const state_t *s, hid_t did, unsigned int which)
if (val)
HDfree(val);
- return SUCCEED;
+ return true;
error:
H5E_BEGIN_TRY
@@ -1153,14 +1153,14 @@ error:
if (val)
HDfree(val);
- return FAIL;
+ return false;
} /* add_attr() */
/*
* Modify the attribute data.
*/
-static herr_t
+static hbool_t
modify_attr(const state_t *s, hid_t did, unsigned int which)
{
hid_t aid = H5I_INVALID_HID;
@@ -1224,7 +1224,7 @@ modify_attr(const state_t *s, hid_t did, unsigned int which)
if (val)
HDfree(val);
- return SUCCEED;
+ return true;
error:
H5E_BEGIN_TRY
{
@@ -1236,13 +1236,13 @@ error:
if (val)
HDfree(val);
- return FAIL;
+ return false;
} /* modify_attr() */
/*
* Delete the attribute
*/
-static herr_t
+static hbool_t
delete_attr(hid_t did, unsigned int which)
{
char name[sizeof("attr-9999999999")];
@@ -1255,10 +1255,10 @@ delete_attr(hid_t did, unsigned int which)
TEST_ERROR;
}
- return SUCCEED;
+ return true;
error:
- return FAIL;
+ return false;
} /* delete_attr() */
@@ -1276,7 +1276,7 @@ error:
* --[-c <csteps>] is 1
* --not applicable for -m option
*/
-static herr_t
+static hbool_t
verify_dsets_operations(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t *config, np_state_t *np)
{
unsigned step;
@@ -1360,11 +1360,11 @@ verify_dsets_operations(state_t *s, dsets_state_t *ds, H5F_vfd_swmr_config_t *co
}
}
- return SUCCEED;
+ return true;
error:
- return FAIL;
+ return false;
} /* verify_dsets_operations() */
/*
@@ -1373,7 +1373,7 @@ error:
* -g: contiguous dataset
* -k: 5 chunked datasets with 5 indexing types
*/
-static herr_t
+static hbool_t
verify_attr_dsets_action(unsigned action, const state_t *s, const dsets_state_t *ds, unsigned which)
{
int nerrors = 0;
@@ -1465,7 +1465,7 @@ verify_attr_dsets_action(unsigned action, const state_t *s, const dsets_state_t
/*
* Verify the attribute action on the specified dataset.
*/
-static herr_t
+static hbool_t
verify_attr_action(unsigned action, hid_t did, unsigned which)
{
char name[sizeof("attr-9999999999")];
@@ -1496,7 +1496,7 @@ verify_attr_action(unsigned action, hid_t did, unsigned which)
/*
* Verify the attribute is added or modified
*/
-static herr_t
+static hbool_t
verify_add_or_modify_attr(unsigned action, hid_t did, char *attr_name, unsigned int which)
{
unsigned int read_which;
@@ -1575,14 +1575,14 @@ error:
if (is_vl)
H5free_memory(read_vl_which);
- return FAIL;
+ return false;
} /* verify_add_or_modify_attr() */
/*
* Verify the attribute does not exist.
*/
-static herr_t
+static hbool_t
verify_delete_attr(hid_t did, char *attr_name)
{
int ret;
@@ -1592,14 +1592,14 @@ verify_delete_attr(hid_t did, char *attr_name)
TEST_ERROR;
}
else if (!ret) /* attribute does not exist */
- ret = TRUE;
+ ret = true;
else /* attribute exist */
- ret = FALSE;
+ ret = false;
return ret;
error:
- return FAIL;
+ return false;
} /* verify_delete_attr() */
@@ -1617,11 +1617,11 @@ error:
* --`which` is at min_dense: dense storage, no continuation block
* --`which` is at (min_dense - 1): compact storage, continuation block exists
*/
-static herr_t
+static hbool_t
verify_storage_cont(unsigned action, hid_t did, unsigned int which, unsigned max_compact, unsigned min_dense,
unsigned asteps)
{
- hbool_t ret = TRUE;
+ hbool_t ret = true;
HDassert(action == ADD_ATTR || action == DELETE_ATTR);
@@ -1660,7 +1660,7 @@ verify_storage_cont(unsigned action, hid_t did, unsigned int which, unsigned max
/*
* Verify the storage condition at the specific checkpoint
*/
-static herr_t
+static hbool_t
verify_storage_cont_real(hid_t did, unsigned int which, unsigned cut_point)
{
H5O_native_info_t ninfo;
@@ -1687,7 +1687,7 @@ verify_storage_cont_real(hid_t did, unsigned int which, unsigned cut_point)
}
error:
- return FAIL;
+ return false;
} /* verify_storage_cont_real() */
@@ -1698,7 +1698,7 @@ error:
/*
* Initialize the named pipes for test synchronization.
*/
-static herr_t
+static hbool_t
np_init(np_state_t *np, hbool_t writer)
{
*np = NP_INITIALIZER;
@@ -1746,17 +1746,17 @@ np_init(np_state_t *np, hbool_t writer)
TEST_ERROR;
}
- return SUCCEED;
+ return true;
error:
- return FAIL;
+ return false;
} /* np_init() */
/*
* Close the named pipes.
*/
-static herr_t
+static hbool_t
np_close(np_state_t *np, hbool_t writer)
{
/* Both the writer and reader close the named pipes */
@@ -1782,16 +1782,16 @@ np_close(np_state_t *np, hbool_t writer)
TEST_ERROR;
}
}
- return SUCCEED;
+ return true;
error:
- return FAIL;
+ return false;
} /* np_close() */
/*
* Writer synchronization depending on the result from the attribute action performed.
*/
-static herr_t
+static hbool_t
np_writer(hbool_t result, unsigned step, const state_t *s, np_state_t *np, H5F_vfd_swmr_config_t *config)
{
unsigned int i;
@@ -1841,10 +1841,10 @@ np_writer(hbool_t result, unsigned step, const state_t *s, np_state_t *np, H5F_v
}
}
}
- return SUCCEED;
+ return true;
error:
- return FAIL;
+ return false;
} /* np_writer() */
@@ -1852,7 +1852,7 @@ error:
*
* Reader synchronization depending on the result from the verification.
*/
-static herr_t
+static hbool_t
np_reader(hbool_t result, unsigned step, const state_t *s, np_state_t *np)
{
/* The verification fails */
@@ -1882,10 +1882,10 @@ np_reader(hbool_t result, unsigned step, const state_t *s, np_state_t *np)
}
}
}
- return SUCCEED;
+ return true;
error:
- return FAIL;
+ return false;
} /* np_reader() */
@@ -1893,7 +1893,7 @@ error:
* Handshake between writer and reader:
* Confirm `verify` is same as `notify`.
*/
-static herr_t
+static hbool_t
np_confirm_verify_notify(int fd, unsigned step, const state_t *s, np_state_t *np)
{
if (step % s->csteps == 0) {
@@ -1914,17 +1914,17 @@ np_confirm_verify_notify(int fd, unsigned step, const state_t *s, np_state_t *np
}
}
- return SUCCEED;
+ return true;
error:
- return FAIL;
+ return false;
} /* confirm_verify_notify() */
/*
* Synchronization done by the reader before moving onto the
* next verification phase.
*/
-static herr_t
+static hbool_t
np_reader_no_verification(const state_t *s, np_state_t *np, H5F_vfd_swmr_config_t *config)
{
if (s->use_np) {
@@ -1946,10 +1946,10 @@ np_reader_no_verification(const state_t *s, np_state_t *np, H5F_vfd_swmr_config_
}
}
- return SUCCEED;
+ return true;
error:
- return FAIL;
+ return false;
} /* np_reader_no_verification() */
@@ -1981,10 +1981,10 @@ main(int argc, char **argv)
TEST_ERROR;
}
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path
- */
- init_vfd_swmr_config(&config, 4, 7, writer, TRUE, FALSE, TRUE, 128, "./attrdset-shadow", NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(&config, 4, 7, FALSE, writer, TRUE, FALSE, TRUE, 128, "./", "attrdset-shadow", NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
if ((fapl = vfd_swmr_create_fapl(TRUE, s.use_vfd_swmr, TRUE, 4096, &config)) < 0) {
diff --git a/test/vfd_swmr_bigset_writer.c b/test/vfd_swmr_bigset_writer.c
index 71bd730..6ff5d03 100644
--- a/test/vfd_swmr_bigset_writer.c
+++ b/test/vfd_swmr_bigset_writer.c
@@ -2580,22 +2580,33 @@ main(int argc, char **argv)
continue;
}
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+
#ifdef H5_HAVE_AUX_PROCESS
+
/* If using the auxiliary process, the writer creates the updater files.
* The reader uses the metadata file generated by the auxiliary process. */
if (s.writer) {
- init_vfd_swmr_config(&config, s.tick_len, s.max_lag, s.writer, FALSE, TRUE, s.flush_raw_data, 128,
- "./bigset-shadow-%zu", "bigset_updater", i);
+ init_vfd_swmr_config(&config, s.tick_len, s.max_lag, FALSE, s.writer, FALSE, TRUE,
+ s.flush_raw_data, 128, "./", "bigset-shadow-%zu", "bigset_updater", i);
}
else {
- init_vfd_swmr_config(&config, s.tick_len, s.max_lag, s.writer, TRUE, FALSE, s.flush_raw_data, 128,
- "./mdfile", NULL);
+ init_vfd_swmr_config(&config, s.tick_len, s.max_lag, FALSE, s.writer, TRUE, FALSE,
+ s.flush_raw_data, 128, "./", "mdfile", NULL);
}
#else
- init_vfd_swmr_config(&config, s.tick_len, s.max_lag, s.writer, TRUE, FALSE, s.flush_raw_data, 128,
- "./bigset-shadow-%zu", NULL, i);
+
+ if (s.vds == vds_multi || s.vds == vds_single) {
+ init_vfd_swmr_config(&config, s.tick_len, s.max_lag, TRUE, s.writer, TRUE, FALSE,
+ s.flush_raw_data, 128, "", "", NULL);
+ }
+ else {
+ init_vfd_swmr_config(&config, s.tick_len, s.max_lag, FALSE, s.writer, TRUE, FALSE,
+ s.flush_raw_data, 128, "./", "bigset-shadow-%zu", NULL, i);
+ }
+
#endif
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
diff --git a/test/vfd_swmr_common.c b/test/vfd_swmr_common.c
index 931b49b..1b87d5f 100644
--- a/test/vfd_swmr_common.c
+++ b/test/vfd_swmr_common.c
@@ -326,15 +326,14 @@ await_signal(hid_t fid)
#endif /* H5_HAVE_WIN32_API */
-/* Revised support routines that can be used for all VFD SWMR integration tests
- * NOTE: For tests that call this common routine, md_file_path needs to be set
- * regardless of whether maintain_metadata_file is true or false.
+/*
+ * Revised support routines that can be used for all VFD SWMR integration tests
*/
void
-init_vfd_swmr_config(H5F_vfd_swmr_config_t *config, 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, const char *md_file_fmtstr, const char *updater_file_path,
- ...)
+init_vfd_swmr_config(H5F_vfd_swmr_config_t *config, uint32_t tick_len, uint32_t max_lag,
+ hbool_t presume_posix_semantics, hbool_t writer, hbool_t maintain_metadata_file,
+ hbool_t generate_updater_files, hbool_t flush_raw_data, uint32_t md_pages_reserved,
+ const char *md_file_path, const char *md_file_fmtstr, const char *updater_file_path, ...)
{
va_list ap;
@@ -343,19 +342,30 @@ init_vfd_swmr_config(H5F_vfd_swmr_config_t *config, uint32_t tick_len, uint32_t
config->version = H5F__CURR_VFD_SWMR_CONFIG_VERSION;
config->pb_expansion_threshold = 0;
- config->tick_len = tick_len;
- config->max_lag = max_lag;
- config->writer = writer;
- config->maintain_metadata_file = maintain_metadata_file;
- config->generate_updater_files = generate_updater_files;
- config->flush_raw_data = flush_raw_data;
- config->md_pages_reserved = md_pages_reserved;
+ config->tick_len = tick_len;
+ config->max_lag = max_lag;
+ config->presume_posix_semantics = presume_posix_semantics;
+ config->writer = writer;
+ config->maintain_metadata_file = maintain_metadata_file;
+ config->generate_updater_files = generate_updater_files;
+ config->flush_raw_data = flush_raw_data;
+ config->md_pages_reserved = md_pages_reserved;
+
+ if (md_file_path == NULL)
+ config->md_file_path[0] = '\0';
+ else
+ HDstrcpy(config->md_file_path, md_file_path);
- HDva_start(ap, updater_file_path);
+ if (md_file_fmtstr == NULL)
+ config->md_file_name[0] = '\0';
- evsnprintf(config->md_file_path, sizeof(config->md_file_path), md_file_fmtstr, ap);
+ else {
+ HDva_start(ap, updater_file_path);
- HDva_end(ap);
+ evsnprintf(config->md_file_name, sizeof(config->md_file_path), md_file_fmtstr, ap);
+
+ HDva_end(ap);
+ }
if (config->generate_updater_files && updater_file_path != NULL)
HDstrcpy(config->updater_file_path, updater_file_path);
diff --git a/test/vfd_swmr_common.h b/test/vfd_swmr_common.h
index 4fd45b4..8d6f2d5 100644
--- a/test/vfd_swmr_common.h
+++ b/test/vfd_swmr_common.h
@@ -74,10 +74,11 @@ H5TEST_DLL hid_t vfd_swmr_create_fapl(bool use_latest_format, bool use_vfd_swmr,
size_t page_buf_size, H5F_vfd_swmr_config_t *config);
H5TEST_DLL void init_vfd_swmr_config(H5F_vfd_swmr_config_t *config, 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, const char *md_file_fmtstr,
- const char *updater_file_path, ...) H5_ATTR_FORMAT(printf, 9, 11);
+ hbool_t presume_posix_semantics, hbool_t writer,
+ hbool_t maintain_metadata_file, hbool_t generate_updater_files,
+ hbool_t flush_raw_data, uint32_t md_pages_reserved,
+ const char *md_file_path, const char *md_file_fmtstr,
+ const char *updater_file_path, ...) H5_ATTR_FORMAT(printf, 11, 13);
H5TEST_DLL void init_vfd_swmr_log(H5F_vfd_swmr_config_t *config, const char *log_file_fmtstr, ...)
H5_ATTR_FORMAT(printf, 2, 3);
diff --git a/test/vfd_swmr_dsetchks_writer.c b/test/vfd_swmr_dsetchks_writer.c
index caaad1b..1e4de5a 100644
--- a/test/vfd_swmr_dsetchks_writer.c
+++ b/test/vfd_swmr_dsetchks_writer.c
@@ -2308,10 +2308,11 @@ main(int argc, char **argv)
TEST_ERROR;
}
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(&config, 4, 7, writer, TRUE, FALSE, s.flush_raw_data, 128, "./dsetchks-shadow",
- NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(&config, 4, 7, FALSE, writer, TRUE, FALSE, s.flush_raw_data, 128, "./",
+ "dsetchks-shadow", NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
if ((fapl = vfd_swmr_create_fapl(true, s.use_vfd_swmr, true, 4096, &config)) < 0) {
diff --git a/test/vfd_swmr_dsetops_writer.c b/test/vfd_swmr_dsetops_writer.c
index 8ef0962..cdb84b2 100644
--- a/test/vfd_swmr_dsetops_writer.c
+++ b/test/vfd_swmr_dsetops_writer.c
@@ -2228,9 +2228,11 @@ main(int argc, char **argv)
TEST_ERROR;
}
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(&config, 4, 7, writer, TRUE, FALSE, s.flush_raw_data, 128, "./dsetops-shadow", NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(&config, 4, 7, FALSE, writer, TRUE, FALSE, s.flush_raw_data, 128, "./",
+ "dsetops-shadow", NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
if ((fapl = vfd_swmr_create_fapl(true, s.use_vfd_swmr, true, 4096, &config)) < 0) {
diff --git a/test/vfd_swmr_generator.c b/test/vfd_swmr_generator.c
index a78abbc..1392293 100644
--- a/test/vfd_swmr_generator.c
+++ b/test/vfd_swmr_generator.c
@@ -125,9 +125,11 @@ gen_skeleton(const char *filename, hbool_t verbose, hbool_t vfd_swmr_write, int
if ((config = HDcalloc(1, sizeof(*config))) == NULL)
return -1;
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config, 4, 10, vfd_swmr_write, TRUE, FALSE, TRUE, 128, "generator-shadow", NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config, 4, 10, FALSE, vfd_swmr_write, TRUE, FALSE, TRUE, 128, NULL,
+ "generator-shadow", NULL);
}
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
diff --git a/test/vfd_swmr_gfail_writer.c b/test/vfd_swmr_gfail_writer.c
index 27d6c31..10370cc 100644
--- a/test/vfd_swmr_gfail_writer.c
+++ b/test/vfd_swmr_gfail_writer.c
@@ -544,10 +544,11 @@ main(int argc, char **argv)
TEST_ERROR;
}
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(&config, s.tick_len, s.max_lag, writer, TRUE, FALSE, TRUE, 128, "./group-shadow",
- NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(&config, s.tick_len, s.max_lag, FALSE, writer, TRUE, FALSE, TRUE, 128, "./",
+ "group-shadow", NULL);
/* If old-style option is chosen, use the earliest file format(H5F_LIBVER_EARLIEST)
* as the second parameter of H5Pset_libver_bound() that is called by
diff --git a/test/vfd_swmr_gperf_writer.c b/test/vfd_swmr_gperf_writer.c
index 66fd22f..c376b51 100644
--- a/test/vfd_swmr_gperf_writer.c
+++ b/test/vfd_swmr_gperf_writer.c
@@ -2804,10 +2804,11 @@ main(int argc, char **argv)
return EXIT_SUCCESS;
}
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(&config, s.tick_len, s.max_lag, writer, TRUE, FALSE, FALSE, 128, "./group-shadow",
- NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(&config, s.tick_len, s.max_lag, FALSE, writer, TRUE, FALSE, FALSE, 128, "./",
+ "group-shadow", NULL);
/* If the log flag is on, create the log file log-test under the current directory. */
if (s.glog == true)
diff --git a/test/vfd_swmr_group_writer.c b/test/vfd_swmr_group_writer.c
index 53c9cec..dd387b2 100644
--- a/test/vfd_swmr_group_writer.c
+++ b/test/vfd_swmr_group_writer.c
@@ -5003,10 +5003,11 @@ main(int argc, char **argv)
TEST_ERROR;
}
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(&config, s.tick_len, s.max_lag, writer, TRUE, FALSE, TRUE, 128, "./group-shadow",
- NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(&config, s.tick_len, s.max_lag, FALSE, writer, TRUE, FALSE, TRUE, 128, "./",
+ "group-shadow", NULL);
/* If old-style option is chosen, use the earliest file format(H5F_LIBVER_EARLIEST)
* as the second parameter of H5Pset_libver_bound() that is called by
diff --git a/test/vfd_swmr_indep_rw_writer.c b/test/vfd_swmr_indep_rw_writer.c
index fae4d82..77eee74 100644
--- a/test/vfd_swmr_indep_rw_writer.c
+++ b/test/vfd_swmr_indep_rw_writer.c
@@ -359,14 +359,16 @@ error:
* for the VFD SMWR independence of the reader/writer test.
*/
static hbool_t
-indep_init_vfd_swmr_config_plist(state_t *s, hbool_t writer, const char *mdf_path)
+indep_init_vfd_swmr_config_plist(state_t *s, hbool_t writer, const char *mdf_name)
{
H5F_vfd_swmr_config_t config;
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(&config, s->tick_len, s->max_lag, writer, TRUE, FALSE, TRUE, 128, mdf_path, NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(&config, s->tick_len, s->max_lag, FALSE, writer, TRUE, FALSE, TRUE, 128, "./",
+ mdf_name, NULL);
/* Pass the use_vfd_swmr, only_meta_page, page buffer size, config to vfd_swmr_create_fapl().*/
if ((s->fapl = vfd_swmr_create_fapl(TRUE, s->use_vfd_swmr, TRUE, s->pbs, &config)) < 0) {
@@ -645,7 +647,7 @@ main(int argc, char **argv)
if (s.first_proc) {
writer = TRUE;
- if (FALSE == indep_init_vfd_swmr_config_plist(&s, writer, "./file1-shadow")) {
+ if (FALSE == indep_init_vfd_swmr_config_plist(&s, writer, "file1-shadow")) {
HDfprintf(stderr, "Writer: Cannot initialize file property lists for file %s\n", s.filename[0]);
TEST_ERROR;
}
@@ -678,7 +680,7 @@ main(int argc, char **argv)
}
writer = FALSE;
- if (FALSE == indep_init_vfd_swmr_config_plist(&s, writer, "./file2-shadow")) {
+ if (FALSE == indep_init_vfd_swmr_config_plist(&s, writer, "file2-shadow")) {
HDfprintf(stderr, "Reader: Cannot initialize file property lists for file %s\n", s.filename[1]);
TEST_ERROR;
}
@@ -715,7 +717,7 @@ main(int argc, char **argv)
* then writes a dataset in the second file for the first process to read.
*/
writer = FALSE;
- if (FALSE == indep_init_vfd_swmr_config_plist(&s, writer, "./file1-shadow")) {
+ if (FALSE == indep_init_vfd_swmr_config_plist(&s, writer, "file1-shadow")) {
HDfprintf(stderr, "Reader: Cannot initialize file property lists for file %s\n", s.filename[0]);
TEST_ERROR;
}
@@ -737,7 +739,7 @@ main(int argc, char **argv)
}
writer = TRUE;
- if (FALSE == indep_init_vfd_swmr_config_plist(&s, writer, "./file2-shadow")) {
+ if (FALSE == indep_init_vfd_swmr_config_plist(&s, writer, "file2-shadow")) {
HDfprintf(stderr, "writer: Cannot initialize file property lists for file %s\n", s.filename[1]);
TEST_ERROR;
}
diff --git a/test/vfd_swmr_reader.c b/test/vfd_swmr_reader.c
index 153048c..2e918b0 100644
--- a/test/vfd_swmr_reader.c
+++ b/test/vfd_swmr_reader.c
@@ -319,9 +319,10 @@ read_records(const char *filename, hbool_t verbose, FILE *verbose_file, unsigned
goto error;
}
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config, 4, 5, FALSE, TRUE, FALSE, TRUE, 128, "rw-shadow", NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config, 4, 5, FALSE, FALSE, TRUE, FALSE, TRUE, 128, NULL, "rw-shadow", NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
if ((fapl = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config)) < 0) {
diff --git a/test/vfd_swmr_remove_reader.c b/test/vfd_swmr_remove_reader.c
index 9c684f5..775eb76 100644
--- a/test/vfd_swmr_remove_reader.c
+++ b/test/vfd_swmr_remove_reader.c
@@ -303,9 +303,10 @@ read_records(const char *filename, unsigned verbose, unsigned long nseconds, uns
if ((config = HDcalloc(1, sizeof(*config))) == NULL)
goto error;
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config, 4, 5, FALSE, TRUE, FALSE, TRUE, 128, "rw-shadow", NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config, 4, 5, FALSE, FALSE, TRUE, FALSE, TRUE, 128, NULL, "rw-shadow", NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
if ((fapl = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config)) < 0) {
diff --git a/test/vfd_swmr_remove_writer.c b/test/vfd_swmr_remove_writer.c
index 1e40a18..72209f8 100644
--- a/test/vfd_swmr_remove_writer.c
+++ b/test/vfd_swmr_remove_writer.c
@@ -86,9 +86,10 @@ open_skeleton(const char *filename, unsigned verbose, unsigned old H5_ATTR_UNUSE
if ((config = (H5F_vfd_swmr_config_t *)HDcalloc(1, sizeof(H5F_vfd_swmr_config_t))) == NULL)
goto error;
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config, 4, 5, TRUE, TRUE, FALSE, TRUE, 128, "rw-shadow", NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config, 4, 5, FALSE, TRUE, TRUE, FALSE, TRUE, 128, NULL, "rw-shadow", NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
if ((fapl = vfd_swmr_create_fapl(TRUE, TRUE, FALSE, 4096, config)) < 0)
diff --git a/test/vfd_swmr_sparse_reader.c b/test/vfd_swmr_sparse_reader.c
index 1d9557c..2f7856c 100644
--- a/test/vfd_swmr_sparse_reader.c
+++ b/test/vfd_swmr_sparse_reader.c
@@ -207,9 +207,10 @@ read_records(const char *filename, unsigned verbose, unsigned long nrecords, uns
if ((config = HDcalloc(1, sizeof(H5F_vfd_swmr_config_t))) == NULL)
goto error;
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config, 4, 5, FALSE, TRUE, FALSE, TRUE, 128, "rw-shadow", NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config, 4, 5, FALSE, FALSE, TRUE, FALSE, TRUE, 128, NULL, "rw-shadow", NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
if ((fapl = vfd_swmr_create_fapl(FALSE, TRUE, FALSE, 4096, config)) < 0) {
diff --git a/test/vfd_swmr_sparse_writer.c b/test/vfd_swmr_sparse_writer.c
index 0d521b7..a233bb3 100644
--- a/test/vfd_swmr_sparse_writer.c
+++ b/test/vfd_swmr_sparse_writer.c
@@ -86,9 +86,10 @@ open_skeleton(const char *filename, unsigned verbose)
if ((config = (H5F_vfd_swmr_config_t *)HDcalloc(1, sizeof(H5F_vfd_swmr_config_t))) == NULL)
goto error;
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config, 4, 5, TRUE, TRUE, FALSE, TRUE, 128, "rw-shadow", NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config, 4, 5, FALSE, TRUE, TRUE, FALSE, TRUE, 128, NULL, "rw-shadow", NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
if ((fapl = vfd_swmr_create_fapl(TRUE, TRUE, FALSE, 4096, config)) < 0)
diff --git a/test/vfd_swmr_vlstr_reader.c b/test/vfd_swmr_vlstr_reader.c
index cbcc6c0..dc403cf 100644
--- a/test/vfd_swmr_vlstr_reader.c
+++ b/test/vfd_swmr_vlstr_reader.c
@@ -115,9 +115,10 @@ main(int argc, char **argv)
if (argc > 0)
errx(EXIT_FAILURE, "unexpected command-line arguments");
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(&config, 4, 7, FALSE, TRUE, FALSE, TRUE, 128, "./vlstr-shadow", NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(&config, 4, 7, FALSE, false, TRUE, FALSE, TRUE, 128, "./", "vlstr-shadow", NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl = vfd_swmr_create_fapl(TRUE, use_vfd_swmr, sel == TEST_OOB, 4096, &config);
diff --git a/test/vfd_swmr_vlstr_writer.c b/test/vfd_swmr_vlstr_writer.c
index 682e86a..6a747a2 100644
--- a/test/vfd_swmr_vlstr_writer.c
+++ b/test/vfd_swmr_vlstr_writer.c
@@ -152,10 +152,10 @@ main(int argc, char **argv)
if (argc > 0)
errx(EXIT_FAILURE, "unexpected command-line arguments");
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path
- */
- init_vfd_swmr_config(&config, 4, 7, TRUE, TRUE, FALSE, TRUE, 128, "./vlstr-shadow", NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(&config, 4, 7, FALSE, true, TRUE, FALSE, TRUE, 128, "./", "vlstr-shadow", NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
fapl = vfd_swmr_create_fapl(TRUE, use_vfd_swmr, sel == TEST_OOB, 4096, &config);
diff --git a/test/vfd_swmr_writer.c b/test/vfd_swmr_writer.c
index eeceb49..ba9938f 100644
--- a/test/vfd_swmr_writer.c
+++ b/test/vfd_swmr_writer.c
@@ -87,9 +87,10 @@ open_skeleton(const char *filename, hbool_t verbose, FILE *verbose_file, unsigne
if ((config = (H5F_vfd_swmr_config_t *)HDcalloc(1, sizeof(H5F_vfd_swmr_config_t))) == NULL)
return -1;
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(config, 4, 5, TRUE, TRUE, FALSE, TRUE, 128, "rw-shadow", NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(config, 4, 5, FALSE, TRUE, TRUE, FALSE, TRUE, 128, NULL, "rw-shadow", NULL);
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */
if ((fapl = vfd_swmr_create_fapl(TRUE, TRUE, FALSE, 4096, config)) < 0)
diff --git a/test/vfd_swmr_zoo_writer.c b/test/vfd_swmr_zoo_writer.c
index 32726f7..4a6e61c 100644
--- a/test/vfd_swmr_zoo_writer.c
+++ b/test/vfd_swmr_zoo_writer.c
@@ -475,9 +475,11 @@ main(int argc, char **argv)
parse_command_line_options(argc, argv);
- /* config, tick_len, max_lag, writer, maintain_metadata_file, generate_updater_files,
- * flush_raw_data, md_pages_reserved, md_file_path, updater_file_path */
- init_vfd_swmr_config(&vfd_swmr_config, TICK_LEN, 7, writer, TRUE, FALSE, TRUE, 128, "./zoo-shadow", NULL);
+ /* config, tick_len, max_lag, presume_posix_semantics, writer,
+ * maintain_metadata_file, generate_updater_files, flush_raw_data, md_pages_reserved,
+ * md_file_path, md_file_name, updater_file_path */
+ init_vfd_swmr_config(&vfd_swmr_config, TICK_LEN, 7, FALSE, writer, TRUE, FALSE, TRUE, 128, "./",
+ "zoo-shadow", NULL);
/* ? turn off use latest format argument via 1st argument? since later on it reset to early format */
/* use_latest_format, use_vfd_swmr, only_meta_page, page_buf_size, config */