summaryrefslogtreecommitdiffstats
path: root/src/H5FDprivate.h
diff options
context:
space:
mode:
authorDavid Young <dyoung@hdfgroup.org>2020-02-03 21:04:21 (GMT)
committerDavid Young <dyoung@hdfgroup.org>2020-02-03 21:04:21 (GMT)
commit29ee63787b8b75bdbf16468c9a7d9955e55eec78 (patch)
tree3901db989b92e7c64ad15b2593abe28c1ce85278 /src/H5FDprivate.h
parent64f1ef1fda4dddb85ff16166051c7df3777254d7 (diff)
downloadhdf5-29ee63787b8b75bdbf16468c9a7d9955e55eec78.zip
hdf5-29ee63787b8b75bdbf16468c9a7d9955e55eec78.tar.gz
hdf5-29ee63787b8b75bdbf16468c9a7d9955e55eec78.tar.bz2
Numerous changes supporting a floating shadow index:
Add to the H5F_shared_t (!) a new member that tells the index in the shadow file where the index should be written. Allocate shadow filespace for the header and the index separately so that the index can float. Update tests to match the expected original location of the index. Introduce vfd_swmr_enlarge_shadow_index(), a routine that allocates space in the shadow file for a new index that has (up to) twice as many entries as the old index, allocates a new in-core index of the same size, and copies the old in-core index to the new. Call vfd_swmr_enlarge_shadow_index() in H5PB_vfd_swmr__update_index() when the in-core index has too few slots. In the comment at the top of H5FD__vfd_swmr_load_hdr_and_idx(), describe the protocol that it follows, now, when it reads the shadow header and index. Delete some dead code in the function and add a bit of diagnostic code. TBD quiet the diagnostic code. In H5F_vfd_swmr_init(), follow the protocol: write the index, first, then the header. Modify property-list checks and tests to reserve no fewer than two pages at the front of the shadow file for the header and index.
Diffstat (limited to 'src/H5FDprivate.h')
-rw-r--r--src/H5FDprivate.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/H5FDprivate.h b/src/H5FDprivate.h
index b201809..e0405d3 100644
--- a/src/H5FDprivate.h
+++ b/src/H5FDprivate.h
@@ -351,6 +351,7 @@ H5_DLL int shadow_image_defer_free(struct H5F_shared_t *,
H5_DLL herr_t H5FD_vfd_swmr_get_tick_and_idx(H5FD_t *_file, hbool_t read_index,
uint64_t *tick_ptr, uint32_t *num_entries_ptr,
H5FD_vfd_swmr_idx_entry_t index[]);
+H5_DLL H5FD_vfd_swmr_idx_entry_t *vfd_swmr_enlarge_shadow_index(struct H5F_t *);
H5_DLL hbool_t H5FD_is_vfd_swmr_driver(H5FD_t *_file);
H5_DLL H5FD_t *H5FD_vfd_swmr_get_underlying_vfd(H5FD_t *_file);
H5_DLL void H5FD_vfd_swmr_dump_status(H5FD_t *_file, int64_t page);