summaryrefslogtreecommitdiffstats
path: root/src/H5Ochunk.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Ochunk.c')
-rw-r--r--src/H5Ochunk.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/H5Ochunk.c b/src/H5Ochunk.c
index af4233e..8b380b2 100644
--- a/src/H5Ochunk.c
+++ b/src/H5Ochunk.c
@@ -402,8 +402,15 @@ H5O_chunk_delete(H5F_t *f, hid_t dxpl_id, H5O_t *oh, unsigned idx)
HDassert(chk_proxy->oh == oh);
HDassert(chk_proxy->chunkno == idx);
- /* Only free file space if not doing SWMR writes */
- if(!(H5F_INTENT(f) & H5F_ACC_SWMR_WRITE))
+ /* Update flush dependencies if doing SWMR writes */
+ if(H5F_INTENT(f) & H5F_ACC_SWMR_WRITE) {
+ /* Remove flush dependency on object header proxy, if proxy exists */
+ if(oh->proxy_present)
+ if(H5O_proxy_undepend(f, dxpl_id, oh, chk_proxy) < 0)
+ HGOTO_ERROR(H5E_OHDR, H5E_CANTUNDEPEND, FAIL, "can't destroy flush dependency on object header proxy")
+ } /* end if */
+ else
+ /* Only free file space if not doing SWMR writes */
cache_flags |= H5AC__DIRTIED_FLAG | H5AC__FREE_FILE_SPACE_FLAG;
/* Release the chunk proxy from the cache, marking it deleted */