diff options
author | Neil Fortner <fortnern@gmail.com> | 2022-07-19 01:15:48 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-19 01:15:48 (GMT) |
commit | 5c399982245bbbf15cefa028d399b94d62932d61 (patch) | |
tree | 890d1ce5068ab7ee0507877cae6e75ad9bbab786 /src/H5Oflush.c | |
parent | e3800e123566d074d839cbdea863ea5ec0ac1bdd (diff) | |
download | hdf5-5c399982245bbbf15cefa028d399b94d62932d61.zip hdf5-5c399982245bbbf15cefa028d399b94d62932d61.tar.gz hdf5-5c399982245bbbf15cefa028d399b94d62932d61.tar.bz2 |
Persist dataset access properties when using H5Fstart_swmr_write (#1862)
* Fix HDFFV-11308 - dataset access properties disappear when using
H5Fstart_swmr_write.
* Committing clang-format changes
* Add test for H5Fstart_swmr_write() persisting DAPL settings. Fix bugs
in the library exposed by this test.
* Committing clang-format changes
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Diffstat (limited to 'src/H5Oflush.c')
-rw-r--r-- | src/H5Oflush.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/H5Oflush.c b/src/H5Oflush.c index 1d31973..401d2d0 100644 --- a/src/H5Oflush.c +++ b/src/H5Oflush.c @@ -253,7 +253,7 @@ H5O_refresh_metadata(H5O_loc_t *oloc, hid_t oid) HGOTO_ERROR(H5E_OHDR, H5E_CANTLOAD, FAIL, "unable to refresh object") /* Re-open the object, re-fetching its metadata */ - if (H5O_refresh_metadata_reopen(oid, &obj_loc, connector, FALSE) < 0) + if (H5O_refresh_metadata_reopen(oid, H5P_DEFAULT, &obj_loc, connector, FALSE) < 0) HGOTO_ERROR(H5E_OHDR, H5E_CANTLOAD, FAIL, "unable to refresh object") /* Restore the number of references on the VOL connector */ @@ -363,7 +363,8 @@ done: *------------------------------------------------------------------------- */ herr_t -H5O_refresh_metadata_reopen(hid_t oid, H5G_loc_t *obj_loc, H5VL_t *vol_connector, hbool_t start_swmr) +H5O_refresh_metadata_reopen(hid_t oid, hid_t apl_id, H5G_loc_t *obj_loc, H5VL_t *vol_connector, + hbool_t start_swmr) { void * object = NULL; /* Object for this operation */ H5I_type_t type; /* Type of object for the ID */ @@ -392,8 +393,13 @@ H5O_refresh_metadata_reopen(hid_t oid, H5G_loc_t *obj_loc, H5VL_t *vol_connector break; case H5I_DATASET: + /* Set dataset access property list in API context if appropriate */ + if (H5CX_set_apl(&apl_id, H5P_CLS_DACC, oid, TRUE) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTSET, FAIL, "can't set access property list info") + /* Re-open the dataset */ - if (NULL == (object = H5D_open(obj_loc, H5P_DATASET_ACCESS_DEFAULT))) + if (NULL == + (object = H5D_open(obj_loc, apl_id == H5P_DEFAULT ? H5P_DATASET_ACCESS_DEFAULT : apl_id))) HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, FAIL, "unable to open dataset") if (!start_swmr) /* No need to handle multiple opens when H5Fstart_swmr_write() */ if (H5D_mult_refresh_reopen((H5D_t *)object) < 0) |