diff options
author | Dana Robinson <derobins@hdfgroup.org> | 2016-12-07 22:21:07 (GMT) |
---|---|---|
committer | Dana Robinson <derobins@hdfgroup.org> | 2016-12-07 22:21:07 (GMT) |
commit | 16a5c7c8f309042c7bb3a40cdb4c60f5b2c587c2 (patch) | |
tree | 5d306581d541a99f19d269e1d5a3425527a8a43b /src/H5EA.c | |
parent | f3dfc133cc68a8dfc285ae9e7e9cf85216bb3dcf (diff) | |
parent | feaaae4897d4c2d9f83a2f93224123a4c5e009c7 (diff) | |
download | hdf5-16a5c7c8f309042c7bb3a40cdb4c60f5b2c587c2.zip hdf5-16a5c7c8f309042c7bb3a40cdb4c60f5b2c587c2.tar.gz hdf5-16a5c7c8f309042c7bb3a40cdb4c60f5b2c587c2.tar.bz2 |
Merge branch 'develop' into eoc_h5fs_fix
Diffstat (limited to 'src/H5EA.c')
-rw-r--r-- | src/H5EA.c | 24 |
1 files changed, 18 insertions, 6 deletions
@@ -795,7 +795,7 @@ END_FUNC(PRIV) /* end H5EA_get() */ */ BEGIN_FUNC(PRIV, ERR, herr_t, SUCCEED, FAIL, -H5EA_depend(H5AC_info_t *parent_entry, H5EA_t *ea)) +H5EA_depend(H5EA_t *ea, hid_t dxpl_id, H5AC_proxy_entry_t *parent)) /* Local variables */ H5EA_hdr_t *hdr = ea->hdr; /* Header for EA */ @@ -805,13 +805,25 @@ H5EA_depend(H5AC_info_t *parent_entry, H5EA_t *ea)) */ HDassert(ea); HDassert(hdr); + HDassert(parent); - /* Set the shared array header's file context for this operation */ - hdr->f = ea->f; + /* + * Check to see if a flush dependency between the extensible array + * and another data structure in the file has already been set up. + * If it hasn't, do so now. + */ + if(NULL == hdr->parent) { + /* Sanity check */ + HDassert(hdr->top_proxy); - /* Set up flush dependency between parent entry and extensible array header */ - if(H5EA__create_flush_depend(parent_entry, (H5AC_info_t *)hdr) < 0) - H5E_THROW(H5E_CANTDEPEND, "unable to create flush dependency on file metadata") + /* Set the shared array header's file context for this operation */ + hdr->f = ea->f; + + /* Add the extensible array as a child of the parent (proxy) */ + if(H5AC_proxy_entry_add_child(parent, hdr->f, dxpl_id, hdr->top_proxy) < 0) + H5E_THROW(H5E_CANTSET, "unable to add extensible array as child of proxy") + hdr->parent = parent; + } /* end if */ CATCH |