summaryrefslogtreecommitdiffstats
path: root/src/H5Oflush.c
diff options
context:
space:
mode:
authorNeil Fortner <fortnern@gmail.com>2022-07-19 01:15:48 (GMT)
committerGitHub <noreply@github.com>2022-07-19 01:15:48 (GMT)
commit5c399982245bbbf15cefa028d399b94d62932d61 (patch)
tree890d1ce5068ab7ee0507877cae6e75ad9bbab786 /src/H5Oflush.c
parente3800e123566d074d839cbdea863ea5ec0ac1bdd (diff)
downloadhdf5-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.c12
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)