diff options
Diffstat (limited to 'src/H5Ochunk.c')
-rw-r--r-- | src/H5Ochunk.c | 11 |
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 */ |