summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/H5Fint.c42
-rw-r--r--src/H5Fpkg.h56
-rw-r--r--src/H5Fprivate.h200
-rw-r--r--src/H5Fpublic.h10
-rw-r--r--src/H5Ftest.c2
-rw-r--r--src/H5Fvfd_swmr.c278
-rw-r--r--src/H5Pfapl.c26
7 files changed, 308 insertions, 306 deletions
diff --git a/src/H5Fint.c b/src/H5Fint.c
index 8518785..3dae17e 100644
--- a/src/H5Fint.c
+++ b/src/H5Fint.c
@@ -1835,26 +1835,26 @@ done:
H5F_t *
H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
{
- H5F_t * file = NULL; /*the success return value */
- H5F_shared_t * shared = NULL; /*shared part of `file' */
- H5FD_t * lf = NULL; /*file driver part of `shared' */
- unsigned tent_flags; /*tentative flags */
- H5FD_class_t * drvr; /*file driver class info */
- H5P_genplist_t * a_plist; /*file access property list */
- H5F_close_degree_t fc_degree; /*file close degree */
- size_t page_buf_size;
- unsigned page_buf_min_meta_perc = 0;
- unsigned page_buf_min_raw_perc = 0;
- hbool_t set_flag = FALSE; /* Set the status_flags in the superblock */
- hbool_t clear = FALSE; /* Clear the status_flags */
- hbool_t evict_on_close; /* Evict on close value from plist */
- hbool_t use_file_locking = TRUE; /* Using file locks? */
- hbool_t ci_load = FALSE; /* Whether MDC ci load requested */
- hbool_t ci_write = FALSE; /* Whether MDC CI write requested */
- hbool_t file_create = FALSE; /* Creating a new file or not */
- H5F_vfd_swmr_config_t *vfd_swmr_config_ptr = NULL; /* Points to VFD SMWR config info */
- H5F_generate_md_ck_cb_t cb_info = {NULL};
- H5F_t * ret_value = NULL; /* Actual return value */
+ H5F_t * file = NULL; /*the success return value */
+ H5F_shared_t * shared = NULL; /*shared part of `file' */
+ H5FD_t * lf = NULL; /*file driver part of `shared' */
+ unsigned tent_flags; /*tentative flags */
+ H5FD_class_t * drvr; /*file driver class info */
+ H5P_genplist_t * a_plist; /*file access property list */
+ H5F_close_degree_t fc_degree; /*file close degree */
+ size_t page_buf_size;
+ unsigned page_buf_min_meta_perc = 0;
+ unsigned page_buf_min_raw_perc = 0;
+ hbool_t set_flag = FALSE; /* Set the status_flags in the superblock */
+ hbool_t clear = FALSE; /* Clear the status_flags */
+ hbool_t evict_on_close; /* Evict on close value from plist */
+ hbool_t use_file_locking = TRUE; /* Using file locks? */
+ hbool_t ci_load = FALSE; /* Whether MDC ci load requested */
+ hbool_t ci_write = FALSE; /* Whether MDC CI write requested */
+ hbool_t file_create = FALSE; /* Creating a new file or not */
+ H5F_vfd_swmr_config_t * vfd_swmr_config_ptr = NULL; /* Points to VFD SMWR config info */
+ H5F_generate_md_ck_cb_t cb_info = {NULL};
+ H5F_t * ret_value = NULL; /* Actual return value */
FUNC_ENTER_NOAPI(NULL)
@@ -2117,7 +2117,7 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
/* Initialization for VFD SWMR writer and reader */
if (1 == shared->nrefs) {
/* Private property for VFD SWMR testing: generate checksum for metadata file */
- if(cb_info.func)
+ if (cb_info.func)
shared->generate_md_ck_cb = cb_info.func;
if (H5F_vfd_swmr_init(file, file_create) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTSET, NULL, "file open fail with initialization for VFD SWMR")
diff --git a/src/H5Fpkg.h b/src/H5Fpkg.h
index 31630ef..ca26941 100644
--- a/src/H5Fpkg.h
+++ b/src/H5Fpkg.h
@@ -456,35 +456,35 @@ 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.
+ */
H5F_generate_md_ck_t generate_md_ck_cb;
- /* For testing only:
- * Invoke the user-defined callback if exists to
- * generate checksum for the metadata file
- */
-
- haddr_t vfd_swmr_md_eoa; /* POSIX: eoa for the metadata
- * file
- */
- uint64_t updater_seq_num;/* Sequence number of the next updater file to be
- * genereated. This field must be initialized to zero,
- * and incremented after each updater file is generated.
- */
+ /* For testing only:
+ * Invoke the user-defined callback if exists to
+ * generate checksum for the metadata file
+ */
+
+ haddr_t vfd_swmr_md_eoa; /* POSIX: eoa for the metadata
+ * file
+ */
+ uint64_t updater_seq_num; /* Sequence number of the next updater file to be
+ * genereated. This field must be initialized to zero,
+ * and incremented after each updater file is generated.
+ */
/* Free space manager for the metadata file */
H5FS_t * fs_man_md; /* Free-space manager */
diff --git a/src/H5Fprivate.h b/src/H5Fprivate.h
index 05ace44..796242b 100644
--- a/src/H5Fprivate.h
+++ b/src/H5Fprivate.h
@@ -650,10 +650,8 @@ uint64_decode(uint8_t **pp)
/* hbool_t maintain_metadata_file = */ FALSE, \
/* hbool_t generate_updater_files = */ FALSE, \
/* hbool_t flush_raw_data = */ FALSE, /* int32_t md_pages_reserved = */ 0, \
- /* int32_t pb_expansion_threshold = */ 0, \
- /* char md_file_path[] = */ "", \
- /* char updater_file_path[] = */ "", \
- /* char log_file_path[] = */ "" \
+ /* int32_t pb_expansion_threshold = */ 0, /* char md_file_path[] = */ "", \
+ /* char updater_file_path[] = */ "", /* char log_file_path[] = */ "" \
}
/* For VFD SWMR testing only: private property to generate checksum for metadata file via callback */
@@ -796,57 +794,57 @@ uint64_decode(uint8_t **pp)
*/
/* Updater file header */
-#define H5F_UD_VERSION 0 /* Version of the updater file format */
-#define H5F_UD_HEADER_OFF 0 /* Updater file header offset */
-#define H5F_UD_HEADER_MAGIC "VUDH" /* Updater file header magic */
-#define H5F_SIZEOF_CHKSUM 4 /* Size of checksum */
+#define H5F_UD_VERSION 0 /* Version of the updater file format */
+#define H5F_UD_HEADER_OFF 0 /* Updater file header offset */
+#define H5F_UD_HEADER_MAGIC "VUDH" /* Updater file header magic */
+#define H5F_SIZEOF_CHKSUM 4 /* Size of checksum */
/* Flags in the updater file header */
-#define CREATE_METADATA_FILE_ONLY_FLAG 0x0001
-#define FINAL_UPDATE_FLAG 0x0002
+#define CREATE_METADATA_FILE_ONLY_FLAG 0x0001
+#define FINAL_UPDATE_FLAG 0x0002
/* Size of updater file header */
-#define H5F_UD_HEADER_SIZE \
- (H5_SIZEOF_MAGIC /* Signature */ \
- + 2 /* Version number */ \
- + 2 /* Flags */ \
- + 4 /* Page size */ \
- + 8 /* Sequence number */ \
- + 8 /* Tick number */ \
- + 8 /* Chnage list offset */ \
- + 8 /* Change list length */ \
- + H5F_SIZEOF_CHKSUM /* Updater file header checksum */ \
+#define H5F_UD_HEADER_SIZE \
+ (H5_SIZEOF_MAGIC /* Signature */ \
+ + 2 /* Version number */ \
+ + 2 /* Flags */ \
+ + 4 /* Page size */ \
+ + 8 /* Sequence number */ \
+ + 8 /* Tick number */ \
+ + 8 /* Chnage list offset */ \
+ + 8 /* Change list length */ \
+ + H5F_SIZEOF_CHKSUM /* Updater file header checksum */ \
)
-#define H5F_UD_CL_MAGIC "VUCL" /* Updater file change list magic */
+#define H5F_UD_CL_MAGIC "VUCL" /* Updater file change list magic */
/* Size of an updater file change list entry */
-#define H5F_UD_CL_ENTRY_SIZE \
- (4 /* Updater file page offset */ \
- + 4 /* Metadata file page offset */ \
- + 4 /* HDF5 file page offset */ \
- + 4 /* Length */ \
- + H5F_SIZEOF_CHKSUM /* Updater file change list entry checksum */ \
+#define H5F_UD_CL_ENTRY_SIZE \
+ (4 /* Updater file page offset */ \
+ + 4 /* Metadata file page offset */ \
+ + 4 /* HDF5 file page offset */ \
+ + 4 /* Length */ \
+ + H5F_SIZEOF_CHKSUM /* Updater file change list entry checksum */ \
)
/* Size of updater file change list */
-#define H5F_UD_CL_SIZE(N) /* N is number of change list entries */ \
- (H5_SIZEOF_MAGIC /* Signature */ \
- + 8 /* Tick num */ \
- + 4 /* Metadata file header updater file page offset */ \
- + 4 /* Metadata file header length */ \
- + 4 /* Metadata file header checksum */ \
- + 4 /* Metadata file index updater file page offset */ \
- + 8 /* Metadata file index metadata file offset */ \
- + 4 /* Metadata file index length */ \
- + 4 /* Metadata file index checksum */ \
- + 4 /* Number of change list entries */ \
- + (N * H5F_UD_CL_ENTRY_SIZE) /* Change list entries */ \
- + H5F_SIZEOF_CHKSUM /* Updater file change list checksum */ \
+#define H5F_UD_CL_SIZE(N) /* N is number of change list entries */ \
+ (H5_SIZEOF_MAGIC /* Signature */ \
+ + 8 /* Tick num */ \
+ + 4 /* Metadata file header updater file page offset */ \
+ + 4 /* Metadata file header length */ \
+ + 4 /* Metadata file header checksum */ \
+ + 4 /* Metadata file index updater file page offset */ \
+ + 8 /* Metadata file index metadata file offset */ \
+ + 4 /* Metadata file index length */ \
+ + 4 /* Metadata file index checksum */ \
+ + 4 /* Number of change list entries */ \
+ + (N * H5F_UD_CL_ENTRY_SIZE) /* Change list entries */ \
+ + H5F_SIZEOF_CHKSUM /* Updater file change list checksum */ \
)
-/*
- * For VFD SWMR testing only:
+/*
+ * For VFD SWMR testing only:
*/
/* Callback routine to generate checksum for metadata file specified by md_path */
@@ -854,7 +852,7 @@ typedef herr_t (*H5F_generate_md_ck_t)(char *md_path, uint64_t updater_seq_num);
/* Structure for "generate checksum callback" private property */
typedef struct H5F_generate_md_ck_cb_t {
- H5F_generate_md_ck_t func;
+ H5F_generate_md_ck_t func;
} H5F_generate_md_ck_cb_t;
/****************************/
@@ -936,7 +934,7 @@ typedef enum H5F_prefix_open_t {
* struct H5F_vfd_swmr_updater_cl_entry_t
*
* An array of instances of H5F_vfd_swmr_updater_cl_entry_t of length equal to
- * the number of metadata pages and multi-page metadata entries modified in
+ * the number of metadata pages and multi-page metadata entries modified in
* the past tick is used ot aseemble the assoicated data in preparation for
* writing an updater file.
*
@@ -950,13 +948,13 @@ typedef enum H5F_prefix_open_t {
* entry_image_ud_file_page_offset: Page offset of the entry in the
* updater file, or 0 if undefined.
*
- * entry_image_md_file_page_offset: Page offset of the entry in the
+ * entry_image_md_file_page_offset: Page offset of the entry in the
* metadata file, or 0 if undefined.
*
* entry_image_h5_file_page_offset: Page offset of the entry in the
* HDF5 file. In this case, a page offset of zero is valid,
* so we havd no easy marker for an invalid value. Instead,
- * presume that this field is invalid if the entry_image_md_file_page_offset
+ * presume that this field is invalid if the entry_image_md_file_page_offset
* is invalid.
*
* entry_image_len: The size of the metadata page or multi-page metadata
@@ -966,12 +964,12 @@ typedef enum H5F_prefix_open_t {
*----------------------------------------------------------------------------
*/
typedef struct H5F_vfd_swmr_updater_cl_entry_t {
- void *entry_image_ptr;
- uint32_t entry_image_ud_file_page_offset;
- uint32_t entry_image_md_file_page_offset;
- uint32_t entry_image_h5_file_page_offset;
- size_t entry_image_len;
- uint32_t entry_image_checksum;
+ void * entry_image_ptr;
+ uint32_t entry_image_ud_file_page_offset;
+ uint32_t entry_image_md_file_page_offset;
+ uint32_t entry_image_h5_file_page_offset;
+ size_t entry_image_len;
+ uint32_t entry_image_checksum;
} H5F_vfd_swmr_updater_cl_entry_t;
/*----------------------------------------------------------------------------
@@ -983,35 +981,35 @@ typedef struct H5F_vfd_swmr_updater_cl_entry_t {
*
* Updater file header related fields:
*
- * version: Version of the updater file format to be used. At present this
+ * version: Version of the updater file format to be used. At present this
* must be zero.
*
* flags: This field contains any flags to be set in the updater file header.
* Currently defined flags are:
*
* 0x0001 CREATE_METADATA_FILE_ONLY_FLAG
- * If set, the auxiliary process should create the metadata file,
+ * If set, the auxiliary process should create the metadata file,
* but leave it empty. This flag may only be set if sequence_num
* is zero.
*
* 0x0002 FINAL_UPDATE_FLAG
- * If set, the VFD SWMR writer is closing the target file, and this
- * updater contains the final set of updates to the metadata file.
- * On receipt, the auxiliary process should apply the enclosed
+ * If set, the VFD SWMR writer is closing the target file, and this
+ * updater contains the final set of updates to the metadata file.
+ * On receipt, the auxiliary process should apply the enclosed
* changes to the metadata file, unlink it, and exit.
*
* sequence_num: This field contains the sequence number of this updater file.
- * The sequence number of the first updater file must be zero, and
+ * The sequence number of the first updater file must be zero, and
* this sequence number must be increased by one for each new updater
- * file. Note that under some circumstances, the sequence number
+ * file. Note that under some circumstances, the sequence number
* will not match the tick_num.
*
* tick_num: Number of the tick for which this updater file is to be generated.
- * This value should match that of the index used to fill our this
- * structure.
+ * This value should match that of the index used to fill our this
+ * structure.
*
- * header_image_ptr: void pointer to the buffer in which the
- * updater file header is constructed.
+ * header_image_ptr: void pointer to the buffer in which the
+ * updater file header is constructed.
* This field is NULL if the buffer is undefined.
*
* header_image_len: This field contains the length of the updater file
@@ -1020,8 +1018,8 @@ typedef struct H5F_vfd_swmr_updater_cl_entry_t {
* change_list_image_ptr: void pointer to a buffer containing the on disk image
* of the updater file change list, or NULL if that buffer does not exist.
*
- * change_list_offset: This field contains the offset in bytes of the change
- * list in the updater file. This will typically be the offset of
+ * change_list_offset: This field contains the offset in bytes of the change
+ * list in the updater file. This will typically be the offset of
* the first byte in the updater file after the header.
*
* change_list_len: This field contains the size in bytes of the on disk image
@@ -1029,21 +1027,21 @@ typedef struct H5F_vfd_swmr_updater_cl_entry_t {
*
* Updater File Change List Related Fields:
*
- * The updater file change list is a section of the updater file that details the
- * locations and lengths of all metadata file entries that must be modified for
- * this tick.
+ * The updater file change list is a section of the updater file that details the
+ * locations and lengths of all metadata file entries that must be modified for
+ * this tick.
*
* md_file_header_image_ptr: void pointer to a buffer containing the on disk image
* of the metadata file header as updated for tick_num.
*
- * md_file_header_ud_file_page_offset: This field contains the updater file
- * page offset of the metadata file header image. Note that we do
+ * md_file_header_ud_file_page_offset: This field contains the updater file
+ * page offset of the metadata file header image. Note that we do
* not store the metadata file page offset of the metadata file header,
* as it is always written to offset 0 in the metadata file.
*
- * md_file_header_len: This field contains the size of the metadata file header
+ * md_file_header_len: This field contains the size of the metadata file header
* image in bytes.
- *
+ *
* md_file_index_image: void pointer to a buffer containing the on disk image
* of the metadata file index as updated for tick_num.
*
@@ -1051,53 +1049,53 @@ typedef struct H5F_vfd_swmr_updater_cl_entry_t {
* metadata file index in the metadata file in bytes.
*
* This value will either be the size of the metadata file header
- * (if the metadata file header and index are adjacent), or a page
+ * (if the metadata file header and index are adjacent), or a page
* aligned value.
*
- * md_file_index_ud_file_page_offset: This field contains the page offset of the
+ * md_file_index_ud_file_page_offset: This field contains the page offset of the
* metadata file index in the updater file.
*
- * md_file_index_len: This field contains the size of the metadata file index in
+ * md_file_index_len: This field contains the size of the metadata file index in
* bytes.
*
- * num_change_list_entries: This field contains the number of entries in the
+ * num_change_list_entries: This field contains the number of entries in the
* array of H5F_vfd_swmr_updater_cl_ entry_t whose base address
- * is stored in the change_list field below. This value is also the
- * number of metadata pages and multi-page metadata entries that have
+ * is stored in the change_list field below. This value is also the
+ * number of metadata pages and multi-page metadata entries that have
* been modified in the past tick
- *
+ *
* If this field is zero, there is no change list, and the change_list
* field below is NULL.
*
- * change_list: This field contains the base address of a dynamically allocated
- * array of H5F_vfd_swmr_updater_cl_entry_t of length num_change_list_entries,
+ * change_list: This field contains the base address of a dynamically allocated
+ * array of H5F_vfd_swmr_updater_cl_entry_t of length num_change_list_entries,
* or NULL if undefined.
*
*----------------------------------------------------------------------------
*/
typedef struct H5F_vfd_swmr_updater_t {
/* Updater file header related fields */
- uint16_t version;
- uint16_t flags;
- uint32_t page_size;
- uint64_t sequence_number;
- uint64_t tick_num;
- void *header_image_ptr;
- size_t header_image_len;
- void *change_list_image_ptr;
- uint64_t change_list_offset;
- size_t change_list_len;
+ uint16_t version;
+ uint16_t flags;
+ uint32_t page_size;
+ uint64_t sequence_number;
+ uint64_t tick_num;
+ void * header_image_ptr;
+ size_t header_image_len;
+ void * change_list_image_ptr;
+ uint64_t change_list_offset;
+ size_t change_list_len;
/* Updater file change list related fields */
- void *md_file_header_image_ptr;
- uint32_t md_file_header_image_chksum;
- uint32_t md_file_header_ud_file_page_offset;
- size_t md_file_header_len;
- void *md_file_index_image_ptr;
- uint32_t md_file_index_image_chksum;
- uint64_t md_file_index_md_file_offset;
- uint32_t md_file_index_ud_file_page_offset;
- size_t md_file_index_len;
- uint32_t num_change_list_entries;
+ void * md_file_header_image_ptr;
+ uint32_t md_file_header_image_chksum;
+ uint32_t md_file_header_ud_file_page_offset;
+ size_t md_file_header_len;
+ void * md_file_index_image_ptr;
+ uint32_t md_file_index_image_chksum;
+ uint64_t md_file_index_md_file_offset;
+ uint32_t md_file_index_ud_file_page_offset;
+ size_t md_file_index_len;
+ uint32_t num_change_list_entries;
H5F_vfd_swmr_updater_cl_entry_t *change_list;
} H5F_vfd_swmr_updater_t;
diff --git a/src/H5Fpublic.h b/src/H5Fpublic.h
index 5e0473a..7120085 100644
--- a/src/H5Fpublic.h
+++ b/src/H5Fpublic.h
@@ -277,20 +277,20 @@ typedef herr_t (*H5F_flush_cb_t)(hid_t object_id, void *udata);
*
* maintain_metadata_file
* A boolean flag indicating whether the writer should create and
- * maintain the metadata file. Note that this field is only revelant
+ * maintain the metadata file. Note that this field is only revelant
* if the above writer flag is TRUE.
* If this flag is TRUE, the writer must create and maintain the
* metadata file in the location specified in the md_file_path.
- * Observe that at least one of maintain_metadata_file and
+ * Observe that at least one of maintain_metadata_file and
* generate_updater_files fields must be TRUE if writer is TRUE.
*
* generate_updater_files
* A boolean flag indicating whether the writer should generate a
* sequence of updater files describing how the metadata file
* should be updated at the end of each tick.
- * If the flag is TRUE, all modifications to the metadata file
- * (including its creation) are described in an ordered sequence of
- * updater files. These files are read in order by auxiliary processes,
+ * If the flag is TRUE, all modifications to the metadata file
+ * (including its creation) are described in an ordered sequence of
+ * updater files. These files are read in order by auxiliary processes,
* and used to generate local copies of the metadata file as required.
* This mechanism exists to allow VFD SWMR to operate on storage
* systems that do not support POSIX semantics.
diff --git a/src/H5Ftest.c b/src/H5Ftest.c
index e9cecc1..f4a89fd 100644
--- a/src/H5Ftest.c
+++ b/src/H5Ftest.c
@@ -346,7 +346,7 @@ H5F__vfd_swmr_writer_create_open_flush_test(hid_t file_id, hbool_t file_create)
HGOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "unable to stat the metadata file")
if (file_create) { /* Creating file */
- if(stat_buf.st_size != 0)
+ if (stat_buf.st_size != 0)
HGOTO_ERROR(H5E_FILE, H5E_READERROR, FAIL, "metadata file should be empty for file create")
}
else { /* Opening or flushing the file */
diff --git a/src/H5Fvfd_swmr.c b/src/H5Fvfd_swmr.c
index fe07e74..2ac5e6c 100644
--- a/src/H5Fvfd_swmr.c
+++ b/src/H5Fvfd_swmr.c
@@ -25,7 +25,7 @@
/****************/
#include "H5Fmodule.h" /* This source code file is part of the H5F module */
-#define H5FD_FRIEND /*suppress error about including H5FDpkg */
+#define H5FD_FRIEND /*suppress error about including H5FDpkg */
/***********/
/* Headers */
@@ -108,8 +108,9 @@ static herr_t H5F__vfd_swmr_writer__wait_a_tick(H5F_t *);
static herr_t H5F__vfd_swmr_construct_ud_hdr(H5F_vfd_swmr_updater_t *updater);
static herr_t H5F__vfd_swmr_construct_ud_cl(H5F_vfd_swmr_updater_t *updater);
static herr_t H5F__generate_updater_file(H5F_t *f, uint32_t num_entries, uint16_t flags,
- uint8_t *md_file_hdr_image_ptr, size_t md_file_hdr_image_len,
- uint8_t *md_file_index_image_ptr, uint64_t md_file_index_offset, size_t md_file_index_image_len);
+ uint8_t *md_file_hdr_image_ptr, size_t md_file_hdr_image_len,
+ uint8_t *md_file_index_image_ptr, uint64_t md_file_index_offset,
+ size_t md_file_index_image_len);
/*********************/
/* Package Variables */
@@ -177,12 +178,12 @@ H5FL_DEFINE(eot_queue_entry_t);
herr_t
H5F_vfd_swmr_init(H5F_t *f, hbool_t file_create)
{
- hsize_t md_size; /* Size of the metadata file */
- haddr_t hdr_addr; /* Address returned from H5MV_alloc() */
- H5F_shared_t *shared = f->shared;
- uint8_t md_idx_image[H5FD_MD_INDEX_SIZE(0)]; /* Buffer for metadata file index */
- uint8_t md_hdr_image[H5FD_MD_HEADER_SIZE]; /* Buffer for metadata file header */
- herr_t ret_value = SUCCEED; /* Return value */
+ hsize_t md_size; /* Size of the metadata file */
+ haddr_t hdr_addr; /* Address returned from H5MV_alloc() */
+ H5F_shared_t *shared = f->shared;
+ uint8_t md_idx_image[H5FD_MD_INDEX_SIZE(0)]; /* Buffer for metadata file index */
+ uint8_t md_hdr_image[H5FD_MD_HEADER_SIZE]; /* Buffer for metadata file header */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(FAIL)
@@ -201,8 +202,8 @@ H5F_vfd_swmr_init(H5F_t *f, hbool_t file_create)
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)
+ 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)
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;
@@ -213,7 +214,7 @@ H5F_vfd_swmr_init(H5F_t *f, hbool_t file_create)
HDassert(H5F_addr_eq(hdr_addr, H5FD_MD_HEADER_OFF));
shared->writer_index_offset = H5FD_MD_HEADER_SIZE;
- shared->vfd_swmr_md_eoa = (haddr_t)md_size;
+ shared->vfd_swmr_md_eoa = (haddr_t)md_size;
/* When opening an existing HDF5 file, create header and empty
* index in the metadata file
@@ -225,29 +226,27 @@ H5F_vfd_swmr_init(H5F_t *f, hbool_t file_create)
if (H5F__vfd_swmr_construct_write_md_hdr(shared, 0, md_hdr_image) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTSET, FAIL, "fail to create header in md");
-
}
/* 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) {
+ if (shared->generate_md_ck_cb(shared->vfd_swmr_config.md_file_path, shared->updater_seq_num) < 0)
HGOTO_ERROR(H5E_FILE, H5E_SYSTEM, FAIL, "error from generate_md_ck_cb()")
}
/* Generate updater files if configuration indicates so */
- if(shared->vfd_swmr_config.generate_updater_files) {
+ if (shared->vfd_swmr_config.generate_updater_files) {
shared->updater_seq_num = 0;
- if(H5F__generate_updater_file(f, 0, file_create ? CREATE_METADATA_FILE_ONLY_FLAG : 0,
- md_hdr_image, H5FD_MD_HEADER_SIZE,
- md_idx_image, shared->writer_index_offset, H5FD_MD_INDEX_SIZE(0)) < 0)
+ if (H5F__generate_updater_file(f, 0, file_create ? CREATE_METADATA_FILE_ONLY_FLAG : 0,
+ md_hdr_image, H5FD_MD_HEADER_SIZE, md_idx_image,
+ shared->writer_index_offset, H5FD_MD_INDEX_SIZE(0)) < 0)
HGOTO_ERROR(H5E_FILE, H5E_SYSTEM, FAIL, "can't generate updater file")
}
- shared->tick_num = 1;
+ shared->tick_num = 1;
if (H5PB_vfd_swmr__set_tick(shared) < 0)
HGOTO_ERROR(H5E_FILE, H5E_SYSTEM, FAIL, "Can't update page buffer current tick")
-
}
else { /* VFD SWMR reader */
@@ -323,8 +322,8 @@ H5F_vfd_swmr_close_or_flush(H5F_t *f, hbool_t closing)
{
H5F_shared_t * shared = f->shared;
shadow_defree_t *curr;
- uint8_t md_idx_image[H5FD_MD_INDEX_SIZE(0)]; /* Buffer for metadata file index */
- uint8_t md_hdr_image[H5FD_MD_HEADER_SIZE]; /* Buffer for metadata file header */
+ uint8_t md_idx_image[H5FD_MD_INDEX_SIZE(0)]; /* Buffer for metadata file index */
+ uint8_t md_hdr_image[H5FD_MD_HEADER_SIZE]; /* Buffer for metadata file header */
herr_t ret_value = SUCCEED;
FUNC_ENTER_NOAPI(FAIL)
@@ -348,8 +347,8 @@ H5F_vfd_swmr_close_or_flush(H5F_t *f, hbool_t closing)
shared->vfd_swmr_md_fd = -1;
/* 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) {
+ if (shared->generate_md_ck_cb(shared->vfd_swmr_config.md_file_path, shared->updater_seq_num) < 0)
HGOTO_ERROR(H5E_FILE, H5E_SYSTEM, FAIL, "error from generate_md_ck_cb()")
}
@@ -370,10 +369,10 @@ H5F_vfd_swmr_close_or_flush(H5F_t *f, hbool_t closing)
HDassert(TAILQ_EMPTY(&shared->shadow_defrees));
- if(shared->vfd_swmr_config.generate_updater_files) {
- if(H5F__generate_updater_file(f, 0, FINAL_UPDATE_FLAG,
- md_hdr_image, H5FD_MD_HEADER_SIZE,
- md_idx_image, shared->writer_index_offset, H5FD_MD_INDEX_SIZE(0)) < 0)
+ if (shared->vfd_swmr_config.generate_updater_files) {
+ if (H5F__generate_updater_file(f, 0, FINAL_UPDATE_FLAG, md_hdr_image, H5FD_MD_HEADER_SIZE,
+ md_idx_image, shared->writer_index_offset,
+ H5FD_MD_INDEX_SIZE(0)) < 0)
HGOTO_ERROR(H5E_FILE, H5E_SYSTEM, FAIL, "can't generate updater file")
}
}
@@ -462,11 +461,11 @@ H5F_update_vfd_swmr_metadata_file(H5F_t *f, uint32_t num_entries, H5FD_vfd_swmr_
H5F_shared_t * shared = f->shared;
shadow_defree_t *prev;
shadow_defree_t *shadow_defree;
- haddr_t md_addr; /* Address in the metadata file */
- uint32_t i; /* Local index variable */
- uint8_t *md_idx_image = NULL;
- uint8_t md_hdr_image[H5FD_MD_HEADER_SIZE]; /* Buffer for metadata file header */
- herr_t ret_value = SUCCEED; /* Return value */
+ haddr_t md_addr; /* Address in the metadata file */
+ uint32_t i; /* Local index variable */
+ uint8_t * md_idx_image = NULL;
+ uint8_t md_hdr_image[H5FD_MD_HEADER_SIZE]; /* Buffer for metadata file header */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(FAIL)
@@ -512,7 +511,7 @@ H5F_update_vfd_swmr_metadata_file(H5F_t *f, uint32_t num_entries, H5FD_vfd_swmr_
/* Compute checksum and update the index entry */
index[i].md_file_page_offset = md_addr / shared->fs_page_size;
- index[i].checksum = H5_checksum_metadata(index[i].entry_ptr, index[i].length, 0);
+ index[i].checksum = H5_checksum_metadata(index[i].entry_ptr, index[i].length, 0);
#if 0 /* JRM */
HDfprintf(stderr,
@@ -530,22 +529,22 @@ H5F_update_vfd_swmr_metadata_file(H5F_t *f, uint32_t num_entries, H5FD_vfd_swmr_
HDassert(shared->fs_page_size == 4096);
#endif /* JRM */
- if(shared->vfd_swmr_config.maintain_metadata_file) {
+ if (shared->vfd_swmr_config.maintain_metadata_file) {
/* Seek and write the entry to the metadata file */
if (HDlseek(shared->vfd_swmr_md_fd, (HDoff_t)md_addr, SEEK_SET) < 0)
HGOTO_ERROR(H5E_FILE, H5E_SEEKERROR, FAIL, "unable to seek in the metadata file")
- if (HDwrite(shared->vfd_swmr_md_fd, index[i].entry_ptr, index[i].length) != (ssize_t)index[i].length)
+ if (HDwrite(shared->vfd_swmr_md_fd, index[i].entry_ptr, index[i].length) !=
+ (ssize_t)index[i].length)
HGOTO_ERROR(H5E_FILE, H5E_WRITEERROR, FAIL,
"error in writing the page/multi-page entry to metadata file")
}
- if(!shared->vfd_swmr_config.generate_updater_files)
+ if (!shared->vfd_swmr_config.generate_updater_files)
index[i].entry_ptr = NULL;
-
}
if ((md_idx_image = HDmalloc(H5FD_MD_INDEX_SIZE(num_entries))) == NULL)
@@ -572,7 +571,7 @@ H5F_update_vfd_swmr_metadata_file(H5F_t *f, uint32_t num_entries, H5FD_vfd_swmr_
* --remove the associated entries from the list
*/
- /* if (shared->tick_num <= shared->vfd_swmr_config.max_lag),
+ /* if (shared->tick_num <= shared->vfd_swmr_config.max_lag),
it is too early for any reclamations to be due.
*/
if (shared->tick_num > shared->vfd_swmr_config.max_lag) {
@@ -594,23 +593,21 @@ 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) {
+ if (shared->generate_md_ck_cb(shared->vfd_swmr_config.md_file_path, shared->updater_seq_num) < 0)
HGOTO_ERROR(H5E_FILE, H5E_SYSTEM, FAIL, "error from generate_md_ck_cb()")
}
/* Generate updater files with num_entries */
- if(shared->vfd_swmr_config.generate_updater_files)
- if(H5F__generate_updater_file(f, num_entries, 0,
- md_hdr_image, H5FD_MD_HEADER_SIZE,
- md_idx_image, shared->writer_index_offset, H5FD_MD_INDEX_SIZE(num_entries)) < 0)
+ if (shared->vfd_swmr_config.generate_updater_files)
+ if (H5F__generate_updater_file(f, num_entries, 0, md_hdr_image, H5FD_MD_HEADER_SIZE, md_idx_image,
+ shared->writer_index_offset, H5FD_MD_INDEX_SIZE(num_entries)) < 0)
HGOTO_ERROR(H5E_FILE, H5E_SYSTEM, FAIL, "can't generate updater file")
done:
- if (md_idx_image)
+ if (md_idx_image)
HDfree(md_idx_image);
FUNC_LEAVE_NOAPI(ret_value)
@@ -1632,8 +1629,8 @@ done:
static herr_t
H5F__vfd_swmr_construct_write_md_hdr(H5F_shared_t *shared, uint32_t num_entries, uint8_t *image)
{
- uint8_t *p = NULL; /* Pointer to buffer */
- uint32_t metadata_chksum; /* Computed metadata checksum value */
+ uint8_t *p = NULL; /* Pointer to buffer */
+ uint32_t metadata_chksum; /* Computed metadata checksum value */
/* Size of header and index */
const size_t hdr_size = H5FD_MD_HEADER_SIZE;
ssize_t nwritten;
@@ -1665,7 +1662,7 @@ H5F__vfd_swmr_construct_write_md_hdr(H5F_shared_t *shared, uint32_t num_entries,
/* Sanity checks on header */
HDassert(p - image == (ptrdiff_t)hdr_size);
- if(shared->vfd_swmr_config.maintain_metadata_file) {
+ if (shared->vfd_swmr_config.maintain_metadata_file) {
/* Set to beginning of the file */
if (HDlseek(shared->vfd_swmr_md_fd, H5FD_MD_HEADER_OFF, SEEK_SET) < 0)
@@ -1710,7 +1707,7 @@ static herr_t
H5F__vfd_swmr_construct_write_md_idx(H5F_shared_t *shared, uint32_t num_entries,
struct H5FD_vfd_swmr_idx_entry_t index[], uint8_t *image)
{
- uint8_t *p = NULL; /* Pointer to buffer */
+ uint8_t *p = NULL; /* Pointer to buffer */
uint32_t metadata_chksum; /* Computed metadata checksum value */
/* Size of index */
const size_t idx_size = H5FD_MD_INDEX_SIZE(num_entries);
@@ -1757,7 +1754,7 @@ H5F__vfd_swmr_construct_write_md_idx(H5F_shared_t *shared, uint32_t num_entries,
/* Verify the md file descriptor exists */
HDassert(shared->vfd_swmr_md_fd >= 0);
- if(shared->vfd_swmr_config.maintain_metadata_file) {
+ if (shared->vfd_swmr_config.maintain_metadata_file) {
if (HDlseek(shared->vfd_swmr_md_fd, (HDoff_t)shared->writer_index_offset, SEEK_SET) < 0)
HGOTO_ERROR(H5E_VFL, H5E_SEEKERROR, FAIL, "unable to seek in metadata file")
@@ -2081,10 +2078,10 @@ H5F_post_vfd_swmr_log_entry(H5F_t *f, int entry_type_code, char *log_info)
static herr_t
H5F__vfd_swmr_construct_ud_hdr(H5F_vfd_swmr_updater_t *updater)
{
- uint8_t *p = NULL; /* Pointer to buffer */
- uint8_t *image = (uint8_t *)updater->header_image_ptr;
- uint32_t metadata_chksum; /* Computed metadata checksum value */
- herr_t ret_value = SUCCEED; /* Return value */
+ uint8_t *p = NULL; /* Pointer to buffer */
+ uint8_t *image = (uint8_t *)updater->header_image_ptr;
+ uint32_t metadata_chksum; /* Computed metadata checksum value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC_NOERR
@@ -2097,7 +2094,8 @@ H5F__vfd_swmr_construct_ud_hdr(H5F_vfd_swmr_updater_t *updater)
HDmemcpy(p, H5F_UD_HEADER_MAGIC, (size_t)H5_SIZEOF_MAGIC);
p += H5_SIZEOF_MAGIC;
- /* Encode version number, flags, page size, sequence number, tick number, change list offset, change list length */
+ /* Encode version number, flags, page size, sequence number, tick number, change list offset, change list
+ * length */
UINT16ENCODE(p, H5F_UD_VERSION);
UINT16ENCODE(p, updater->flags);
UINT32ENCODE(p, updater->page_size);
@@ -2139,11 +2137,11 @@ H5F__vfd_swmr_construct_ud_hdr(H5F_vfd_swmr_updater_t *updater)
static herr_t
H5F__vfd_swmr_construct_ud_cl(H5F_vfd_swmr_updater_t *updater)
{
- uint8_t *p = NULL; /* Pointer to buffer */
+ uint8_t *p = NULL; /* Pointer to buffer */
uint8_t *image = (uint8_t *)updater->change_list_image_ptr;
- uint32_t metadata_chksum; /* Computed metadata checksum value */
- unsigned i; /* Local index variable */
- herr_t ret_value = SUCCEED; /* Return value */
+ uint32_t metadata_chksum; /* Computed metadata checksum value */
+ unsigned i; /* Local index variable */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC_NOERR
@@ -2166,8 +2164,8 @@ H5F__vfd_swmr_construct_ud_cl(H5F_vfd_swmr_updater_t *updater)
UINT32ENCODE(p, updater->md_file_header_len);
/* Calculate checksum on the image of the metadata file header */
- updater->md_file_header_image_chksum = H5_checksum_metadata(
- updater->md_file_header_image_ptr, (size_t)updater->md_file_header_len, 0);
+ updater->md_file_header_image_chksum =
+ H5_checksum_metadata(updater->md_file_header_image_ptr, (size_t)updater->md_file_header_len, 0);
/* Encode Metadata File Header Checksum */
UINT32ENCODE(p, updater->md_file_header_image_chksum);
@@ -2182,8 +2180,8 @@ H5F__vfd_swmr_construct_ud_cl(H5F_vfd_swmr_updater_t *updater)
UINT32ENCODE(p, updater->md_file_index_len);
/* Calculate checksum on the image of the metadata file index */
- updater->md_file_index_image_chksum = H5_checksum_metadata(
- updater->md_file_index_image_ptr, (size_t)updater->md_file_index_len, 0);
+ updater->md_file_index_image_chksum =
+ H5_checksum_metadata(updater->md_file_index_image_ptr, (size_t)updater->md_file_index_len, 0);
/* Encode Metadata File Index Checksum */
UINT32ENCODE(p, updater->md_file_index_image_chksum);
@@ -2221,7 +2219,7 @@ H5F__vfd_swmr_construct_ud_cl(H5F_vfd_swmr_updater_t *updater)
* --determine num_change_list entries
* --allocate buffers
* --construct on disk image (serialize) of the updater header and change list
- * --create updater file using a temporay file name:
+ * --create updater file using a temporay file name:
* --<shared->vfd_swmr_config.updater_file_path>.ud_tmp
* --allocate space and write the following to the updater file
* --updater file header
@@ -2243,50 +2241,49 @@ H5F__vfd_swmr_construct_ud_cl(H5F_vfd_swmr_updater_t *updater)
*-------------------------------------------------------------------------
*/
static herr_t
-H5F__generate_updater_file(H5F_t *f, uint32_t num_entries, uint16_t flags,
- uint8_t *md_file_hdr_image_ptr, size_t md_file_hdr_image_len,
- uint8_t *md_file_index_image_ptr, uint64_t md_file_index_offset,
- size_t md_file_index_image_len)
+H5F__generate_updater_file(H5F_t *f, uint32_t num_entries, uint16_t flags, uint8_t *md_file_hdr_image_ptr,
+ size_t md_file_hdr_image_len, uint8_t *md_file_index_image_ptr,
+ uint64_t md_file_index_offset, size_t md_file_index_image_len)
{
- H5F_shared_t *shared = f->shared; /* shared file pointer */
- H5F_vfd_swmr_updater_t updater; /* Updater struct */
- uint32_t next_page_offset;
- H5FD_t *ud_file = NULL; /* Low-level file struct */
- char namebuf[H5F__MAX_VFD_SWMR_FILE_NAME_LEN];
- char newname[H5F__MAX_VFD_SWMR_FILE_NAME_LEN];
- unsigned i;
- hsize_t alloc_size;
- herr_t ret_value = SUCCEED; /* Return value */
+ H5F_shared_t * shared = f->shared; /* shared file pointer */
+ H5F_vfd_swmr_updater_t updater; /* Updater struct */
+ uint32_t next_page_offset;
+ H5FD_t * ud_file = NULL; /* Low-level file struct */
+ char namebuf[H5F__MAX_VFD_SWMR_FILE_NAME_LEN];
+ char newname[H5F__MAX_VFD_SWMR_FILE_NAME_LEN];
+ unsigned i;
+ hsize_t alloc_size;
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(FAIL)
/* Updater file header fields */
- updater.version = H5F_UD_VERSION;
- updater.flags = flags;
- updater.page_size = (uint32_t)shared->fs_page_size;
- updater.sequence_number = shared->updater_seq_num;
- updater.tick_num = shared->tick_num;
- updater.header_image_ptr = NULL;
- updater.header_image_len = H5F_UD_HEADER_SIZE;
+ updater.version = H5F_UD_VERSION;
+ updater.flags = flags;
+ updater.page_size = (uint32_t)shared->fs_page_size;
+ updater.sequence_number = shared->updater_seq_num;
+ updater.tick_num = shared->tick_num;
+ updater.header_image_ptr = NULL;
+ updater.header_image_len = H5F_UD_HEADER_SIZE;
updater.change_list_image_ptr = NULL;
- updater.change_list_offset = 0;
- updater.change_list_len = 0;
+ updater.change_list_offset = 0;
+ updater.change_list_len = 0;
/* Updater file change list fields */
/* md_file_header related fields */
updater.md_file_header_ud_file_page_offset = 0;
- updater.md_file_header_image_ptr = md_file_hdr_image_ptr; /* parameter */
- updater.md_file_header_len = md_file_hdr_image_len; /* parameter */
-
+ updater.md_file_header_image_ptr = md_file_hdr_image_ptr; /* parameter */
+ updater.md_file_header_len = md_file_hdr_image_len; /* parameter */
+
/* md_file_index related fields */
updater.md_file_index_ud_file_page_offset = 0;
- updater.md_file_index_image_ptr = md_file_index_image_ptr; /* parameter */
- updater.md_file_index_md_file_offset = md_file_index_offset; /* parameter */
- updater.md_file_index_len = md_file_index_image_len; /* parameter */
+ updater.md_file_index_image_ptr = md_file_index_image_ptr; /* parameter */
+ updater.md_file_index_md_file_offset = md_file_index_offset; /* parameter */
+ updater.md_file_index_len = md_file_index_image_len; /* parameter */
updater.num_change_list_entries = 0;
- updater.change_list = NULL;
+ updater.change_list = NULL;
/* Scan index to determine updater.num_change_list_entries */
for (i = 0; i < num_entries; i++) {
@@ -2297,18 +2294,18 @@ H5F__generate_updater_file(H5F_t *f, uint32_t num_entries, uint16_t flags,
if (flags == CREATE_METADATA_FILE_ONLY_FLAG)
HDassert(updater.sequence_number == 0);
- /* For file creation, just generate a header with this flag set */
+ /* For file creation, just generate a header with this flag set */
else {
/* Update 2 updater file header fields: change_list_len, change_list_offset */
- updater.change_list_len = H5F_UD_CL_SIZE(updater.num_change_list_entries);
+ updater.change_list_len = H5F_UD_CL_SIZE(updater.num_change_list_entries);
updater.change_list_offset = updater.header_image_len;
}
-
/* Create the updater file with a temporary file name */
HDsprintf(namebuf, "%s.ud_tmp", shared->vfd_swmr_config.updater_file_path);
- if((ud_file = H5FD_open(namebuf, H5F_ACC_TRUNC|H5F_ACC_RDWR|H5F_ACC_CREAT, H5P_FILE_ACCESS_DEFAULT, HADDR_UNDEF)) == NULL)
+ if ((ud_file = H5FD_open(namebuf, H5F_ACC_TRUNC | H5F_ACC_RDWR | H5F_ACC_CREAT, H5P_FILE_ACCESS_DEFAULT,
+ HADDR_UNDEF)) == NULL)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "fail to open updater file");
if ((updater.header_image_ptr = HDmalloc(updater.header_image_len)) == NULL)
@@ -2319,37 +2316,39 @@ H5F__generate_updater_file(H5F_t *f, uint32_t num_entries, uint16_t flags,
HGOTO_ERROR(H5E_FILE, H5E_CANTSET, FAIL, "fail to create updater file header ");
/* Allocate space in updater file for updater file header */
- if(H5FD__alloc_real(ud_file, H5FD_MEM_DEFAULT, updater.header_image_len, NULL, NULL) == HADDR_UNDEF)
+ if (H5FD__alloc_real(ud_file, H5FD_MEM_DEFAULT, updater.header_image_len, NULL, NULL) == HADDR_UNDEF)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to allocate file memory")
/* Write updater file header */
- if(H5FD_write(ud_file, H5FD_MEM_DEFAULT, H5F_UD_HEADER_OFF, updater.header_image_len, updater.header_image_ptr) < 0)
+ if (H5FD_write(ud_file, H5FD_MEM_DEFAULT, H5F_UD_HEADER_OFF, updater.header_image_len,
+ updater.header_image_ptr) < 0)
HGOTO_ERROR(H5E_FILE, H5E_WRITEERROR, FAIL, "ud file write failed")
-
if (flags != CREATE_METADATA_FILE_ONLY_FLAG) {
- next_page_offset = ((uint32_t)(updater.header_image_len + updater.change_list_len) / updater.page_size) + 1;
+ next_page_offset =
+ ((uint32_t)(updater.header_image_len + updater.change_list_len) / updater.page_size) + 1;
- if(updater.num_change_list_entries) {
+ if (updater.num_change_list_entries) {
/* Allocate space for change list entries */
- if((updater.change_list = HDmalloc(sizeof(H5F_vfd_swmr_updater_cl_entry_t) *
- updater.num_change_list_entries)) == NULL)
+ if ((updater.change_list = HDmalloc(sizeof(H5F_vfd_swmr_updater_cl_entry_t) *
+ updater.num_change_list_entries)) == NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed for ud cl")
-
/* Initialize change list entries */
for (i = 0; i < num_entries; i++) {
if (shared->mdf_idx[i].entry_ptr != NULL &&
shared->mdf_idx[i].tick_of_last_change == shared->tick_num) {
- updater.change_list[i].entry_image_ptr = shared->mdf_idx[i].entry_ptr;
+ updater.change_list[i].entry_image_ptr = shared->mdf_idx[i].entry_ptr;
updater.change_list[i].entry_image_ud_file_page_offset = 0;
- updater.change_list[i].entry_image_md_file_page_offset = (uint32_t)shared->mdf_idx[i].md_file_page_offset;
- updater.change_list[i].entry_image_h5_file_page_offset = (uint32_t)shared->mdf_idx[i].hdf5_page_offset;
- updater.change_list[i].entry_image_len = shared->mdf_idx[i].length;
+ updater.change_list[i].entry_image_md_file_page_offset =
+ (uint32_t)shared->mdf_idx[i].md_file_page_offset;
+ updater.change_list[i].entry_image_h5_file_page_offset =
+ (uint32_t)shared->mdf_idx[i].hdf5_page_offset;
+ updater.change_list[i].entry_image_len = shared->mdf_idx[i].length;
updater.change_list[i].entry_image_checksum = shared->mdf_idx[i].checksum;
shared->mdf_idx[i].entry_ptr = NULL;
@@ -2357,9 +2356,10 @@ H5F__generate_updater_file(H5F_t *f, uint32_t num_entries, uint16_t flags,
}
/* Set up page aligned space for all metadata pages */
- for(i = 0; i < updater.num_change_list_entries; i++) {
+ for (i = 0; i < updater.num_change_list_entries; i++) {
updater.change_list[i].entry_image_ud_file_page_offset = next_page_offset;
- next_page_offset += (((uint32_t)updater.change_list[i].entry_image_len / updater.page_size) + 1);
+ next_page_offset +=
+ (((uint32_t)updater.change_list[i].entry_image_len / updater.page_size) + 1);
}
}
@@ -2378,51 +2378,55 @@ H5F__generate_updater_file(H5F_t *f, uint32_t num_entries, uint16_t flags,
HGOTO_ERROR(H5E_FILE, H5E_CANTSET, FAIL, "fail to create updater file cl");
/* Allocate space in updater file for updater file change list */
- if(H5FD__alloc_real(ud_file, H5FD_MEM_DEFAULT, updater.header_image_len+updater.change_list_len, NULL, NULL) == HADDR_UNDEF)
+ if (H5FD__alloc_real(ud_file, H5FD_MEM_DEFAULT, updater.header_image_len + updater.change_list_len,
+ NULL, NULL) == HADDR_UNDEF)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to allocate file memory")
/* Write updater file change list */
- if(H5FD_write(ud_file, H5FD_MEM_DEFAULT, updater.header_image_len,
- updater.change_list_len, updater.change_list_image_ptr) < 0)
+ if (H5FD_write(ud_file, H5FD_MEM_DEFAULT, updater.header_image_len, updater.change_list_len,
+ updater.change_list_image_ptr) < 0)
HGOTO_ERROR(H5E_FILE, H5E_WRITEERROR, FAIL, "ud file write failed")
-
/* Allocate and write metadata pages */
for (i = 0; i < updater.num_change_list_entries; i++) {
- alloc_size = updater.change_list[i].entry_image_ud_file_page_offset * updater.page_size +
+ alloc_size = updater.change_list[i].entry_image_ud_file_page_offset * updater.page_size +
updater.change_list[i].entry_image_len;
- if(H5FD__alloc_real(ud_file, H5FD_MEM_DEFAULT, alloc_size, NULL, NULL) == HADDR_UNDEF)
+ if (H5FD__alloc_real(ud_file, H5FD_MEM_DEFAULT, alloc_size, NULL, NULL) == HADDR_UNDEF)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to allocate file memory")
- if(H5FD_write(ud_file, H5FD_MEM_DEFAULT,
- updater.change_list[i].entry_image_ud_file_page_offset * updater.page_size,
- updater.change_list[i].entry_image_len,
- updater.change_list[i].entry_image_ptr) < 0)
+ if (H5FD_write(ud_file, H5FD_MEM_DEFAULT,
+ updater.change_list[i].entry_image_ud_file_page_offset * updater.page_size,
+ updater.change_list[i].entry_image_len,
+ updater.change_list[i].entry_image_ptr) < 0)
HGOTO_ERROR(H5E_FILE, H5E_WRITEERROR, FAIL, "ud file write failed")
}
/* Allocate and write metadata file index */
- alloc_size = updater.md_file_index_ud_file_page_offset * updater.page_size + updater.md_file_index_len;
- if(H5FD__alloc_real(ud_file, H5FD_MEM_DEFAULT, alloc_size, NULL, NULL) == HADDR_UNDEF)
+ alloc_size =
+ updater.md_file_index_ud_file_page_offset * updater.page_size + updater.md_file_index_len;
+ if (H5FD__alloc_real(ud_file, H5FD_MEM_DEFAULT, alloc_size, NULL, NULL) == HADDR_UNDEF)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to allocate file memory")
- if(H5FD_write(ud_file, H5FD_MEM_DEFAULT, updater.md_file_index_ud_file_page_offset * updater.page_size,
- updater.md_file_index_len, updater.md_file_index_image_ptr) < 0)
+ if (H5FD_write(ud_file, H5FD_MEM_DEFAULT,
+ updater.md_file_index_ud_file_page_offset * updater.page_size,
+ updater.md_file_index_len, updater.md_file_index_image_ptr) < 0)
HGOTO_ERROR(H5E_FILE, H5E_WRITEERROR, FAIL, "ud file write failed")
/* Allocate and write metadata file header */
- alloc_size = updater.md_file_header_ud_file_page_offset * updater.page_size + updater.md_file_header_len;
- if(H5FD__alloc_real(ud_file, H5FD_MEM_DEFAULT, alloc_size, NULL, NULL) == HADDR_UNDEF)
+ alloc_size =
+ updater.md_file_header_ud_file_page_offset * updater.page_size + updater.md_file_header_len;
+ if (H5FD__alloc_real(ud_file, H5FD_MEM_DEFAULT, alloc_size, NULL, NULL) == HADDR_UNDEF)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to allocate file memory")
- if(H5FD_write(ud_file, H5FD_MEM_DEFAULT, updater.md_file_header_ud_file_page_offset * updater.page_size,
- updater.md_file_header_len, updater.md_file_header_image_ptr) < 0)
+ if (H5FD_write(ud_file, H5FD_MEM_DEFAULT,
+ updater.md_file_header_ud_file_page_offset * updater.page_size,
+ updater.md_file_header_len, updater.md_file_header_image_ptr) < 0)
HGOTO_ERROR(H5E_FILE, H5E_WRITEERROR, FAIL, "ud file write failed")
}
/* Close the updater file and rename the file */
- if(H5FD_close(ud_file) < 0)
+ if (H5FD_close(ud_file) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, FAIL, "unable to close updater file")
HDsprintf(newname, "%s.%lu", shared->vfd_swmr_config.updater_file_path, shared->updater_seq_num);
HDrename(namebuf, newname);
@@ -2430,13 +2434,13 @@ H5F__generate_updater_file(H5F_t *f, uint32_t num_entries, uint16_t flags,
++shared->updater_seq_num;
done:
- if(updater.header_image_ptr)
+ if (updater.header_image_ptr)
HDfree(updater.header_image_ptr);
- if(updater.change_list_image_ptr)
+ if (updater.change_list_image_ptr)
HDfree(updater.change_list_image_ptr);
- if(updater.change_list)
+ if (updater.change_list)
HDfree(updater.change_list);
FUNC_LEAVE_NOAPI(ret_value)
-} /* H5F__generate_updater_file() */
+} /* H5F__generate_updater_file() */
diff --git a/src/H5Pfapl.c b/src/H5Pfapl.c
index f833d65..0c2686a 100644
--- a/src/H5Pfapl.c
+++ b/src/H5Pfapl.c
@@ -319,13 +319,13 @@
#define H5F_ACS_VFD_SWMR_CONFIG_DEC H5P__facc_vfd_swmr_config_dec
/* Private property for VFD SWMR testing:
- * Callback function to generate checksum for metadata file
+ * Callback function to generate checksum for metadata file
*/
#define H5F_ACS_GENERATE_MD_CK_CB_SIZE sizeof(H5F_generate_md_ck_cb_t)
-#define H5F_ACS_GENERATE_MD_CK_CB_DEF \
- { \
- NULL \
+#define H5F_ACS_GENERATE_MD_CK_CB_DEF \
+ { \
+ NULL \
}
/******************/
@@ -526,8 +526,7 @@ static const hbool_t H5F_def_ignore_disabled_file_locks_g =
static const H5F_vfd_swmr_config_t H5F_def_vfd_swmr_config_g =
H5F_ACS_VFD_SWMR_CONFIG_DEF; /* Default vfd swmr configuration */
/* For VFD SWMR testing only: Default to generate checksum for metadata file */
-static const H5F_generate_md_ck_t H5F_def_generate_md_ck_cb_g =
- H5F_ACS_GENERATE_MD_CK_CB_DEF;
+static const H5F_generate_md_ck_t H5F_def_generate_md_ck_cb_g = H5F_ACS_GENERATE_MD_CK_CB_DEF;
/*-------------------------------------------------------------------------
* Function: H5P__facc_reg_prop
@@ -4125,7 +4124,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->updater_file_path), (size_t)(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;
HDmemcpy(*pp, (const uint8_t *)(config->log_file_path),
(size_t)(H5F__MAX_VFD_SWMR_FILE_NAME_LEN + 1));
@@ -5734,12 +5734,13 @@ H5Pset_vfd_swmr_config(hid_t plist_id, H5F_vfd_swmr_config_t *config_ptr)
HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "pb_expansion_threshold out of range")
/* If writer is TRUE, at least one of maintain_metadata_file and generate_updater_files must be TRUE */
- if(config_ptr->writer) {
- if(!config_ptr->maintain_metadata_file && !config_ptr->generate_updater_files)
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "either maintain_metadata_file or generate_updater_files must be TRUE")
+ if (config_ptr->writer) {
+ if (!config_ptr->maintain_metadata_file && !config_ptr->generate_updater_files)
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL,
+ "either maintain_metadata_file or generate_updater_files must be TRUE")
}
- if((config_ptr->writer && config_ptr->maintain_metadata_file) || !config_ptr->writer) {
+ 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)
@@ -5748,7 +5749,7 @@ H5Pset_vfd_swmr_config(hid_t plist_id, H5F_vfd_swmr_config_t *config_ptr)
HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "md_file_path is too long")
}
- if(config_ptr->writer && config_ptr->generate_updater_files) {
+ if (config_ptr->writer && config_ptr->generate_updater_files) {
/* Must provide the path and base name of the metadata updater files */
name_len = HDstrlen(config_ptr->updater_file_path);
if (name_len == 0)
@@ -5757,7 +5758,6 @@ H5Pset_vfd_swmr_config(hid_t plist_id, H5F_vfd_swmr_config_t *config_ptr)
HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "updater_file_path is too long")
}
-
name_len = HDstrlen(config_ptr->log_file_path);
if (name_len > H5F__MAX_VFD_SWMR_FILE_NAME_LEN)
HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "log_file_path is too long")