diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/H5Fint.c | 42 | ||||
-rw-r--r-- | src/H5Fpkg.h | 56 | ||||
-rw-r--r-- | src/H5Fprivate.h | 200 | ||||
-rw-r--r-- | src/H5Fpublic.h | 10 | ||||
-rw-r--r-- | src/H5Ftest.c | 2 | ||||
-rw-r--r-- | src/H5Fvfd_swmr.c | 278 | ||||
-rw-r--r-- | src/H5Pfapl.c | 26 |
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") |