diff options
author | vchoi-hdfgroup <55293060+vchoi-hdfgroup@users.noreply.github.com> | 2021-08-10 19:37:47 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-10 19:37:47 (GMT) |
commit | 7a9af2bd7d33bd1beeadf16ac785454444bf4f6a (patch) | |
tree | 6071e8553f8123791351b7259b68ae91200bee76 | |
parent | 0212f12d60d622f19aad1ddfd3f121c7953ad903 (diff) | |
parent | 704dc8e238e147da3e981022e354cea1c8a67d36 (diff) | |
download | hdf5-7a9af2bd7d33bd1beeadf16ac785454444bf4f6a.zip hdf5-7a9af2bd7d33bd1beeadf16ac785454444bf4f6a.tar.gz hdf5-7a9af2bd7d33bd1beeadf16ac785454444bf4f6a.tar.bz2 |
Merge pull request #35 from vchoi-hdfgroup/feature/vfd_swmr
Feature/vfd swmr
-rw-r--r-- | src/H5Fvfd_swmr.c | 7 | ||||
-rw-r--r-- | test/testvfdswmr.sh.in | 34 |
2 files changed, 38 insertions, 3 deletions
diff --git a/src/H5Fvfd_swmr.c b/src/H5Fvfd_swmr.c index 13170af..675d708 100644 --- a/src/H5Fvfd_swmr.c +++ b/src/H5Fvfd_swmr.c @@ -1756,7 +1756,7 @@ vfd_swmr_enlarge_shadow_index(H5F_t *f) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "shadow-file allocation failed for index") } - new_mdf_idx = HDmalloc(new_mdf_idx_len * sizeof(new_mdf_idx[0])); + new_mdf_idx = H5MM_calloc(new_mdf_idx_len * sizeof(new_mdf_idx[0])); if (new_mdf_idx == NULL) { (void)H5MV_free(f, idx_addr, idx_size); @@ -1774,6 +1774,11 @@ vfd_swmr_enlarge_shadow_index(H5F_t *f) ret_value = shared->mdf_idx = new_mdf_idx; shared->mdf_idx_len = new_mdf_idx_len; + H5MM_xfree(f->shared->old_mdf_idx); + + shared->old_mdf_idx = old_mdf_idx; + f->shared->old_mdf_idx_len = old_mdf_idx_len; + /* Postpone reclamation of the old index until max_lag ticks from now. * It's only necessary to wait until after the new index is in place, * so it's possible that some disused shadow storage will build up diff --git a/test/testvfdswmr.sh.in b/test/testvfdswmr.sh.in index b0ab785..7ef14be 100644 --- a/test/testvfdswmr.sh.in +++ b/test/testvfdswmr.sh.in @@ -145,9 +145,9 @@ all_tests="generator expand shrink expand_shrink sparse vlstr_null vlstr_oob zoo all_tests="${all_tests} groups groups_attrs groups_ops few_big many_small attrdset" tests=${all_tests} -# For exhaustive run, add: os_groups_attrs, os_groups_ops, dsetops, dsetchks +# For exhaustive run, add: os_groups_attrs, os_groups_ops, os_groups_seg, dsetops, dsetchks if [[ "$HDF5TestExpress" -eq 0 ]] ; then # exhaustive run - all_tests="${all_tests} os_groups_attrs os_groups_ops dsetops dsetchks" + all_tests="${all_tests} os_groups_attrs os_groups_ops os_groups_seg dsetops dsetchks" fi if [ $# -gt 0 ]; then @@ -1009,6 +1009,36 @@ done ############################################################################### # +# Setting for "os_groups_seg" test +# +# Only for exhaustive run +# +# Verify the segmentation fault is fixed when running with: +# --1,000,000 groups +# --as writer only +# +############################################################################### +# +# +GROUP_seg_n=1000000 # Number of groups when segmentation fault occurs +if [ ${do_os_groups_seg:-no} = no ]; then + continue +fi +echo launch vfd_swmr_group operations with old-style group: $GROUP_seg_n groups ......may take some time...... +catch_out_err_and_rc vfd_swmr_group_writer \ + ../vfd_swmr_group_writer -q -N -G -n $GROUP_seg_n -a $GROUP_seg_n + +# Collect exit code of the writer +if [ $(cat vfd_swmr_group_writer.rc) -ne 0 ]; then + echo writer had error + nerrors=$((nerrors + 1)) +fi + +# Clean up output files +rm -f vfd_swmr_group_writer.{out,rc} + +############################################################################### +# # Setting for bigset (few_big and many_small) tests # ############################################################################### |