From a2aba62fe028d5b5bf6fafb5d0071d865f502863 Mon Sep 17 00:00:00 2001 From: Neil Fortner Date: Tue, 23 Oct 2012 11:05:06 -0500 Subject: [svn-r22950] Purpose: Fix testflushrefresh failures Description: Since the "flush me last" code was introduced, it was no longer possible for the superblock to be flushed to disk without flushing the entire file. This made it impossible to open a file concurrently, even after calling H5Gflush on the root group. The superblock was originally supposed to be flushed every time any object was explicitly flushed with H5*flush. Modified H5C_flush_cache to ignore flush me last flag if the entry is marked for flush (which is done either by a tag for H5*flush or to free up space in cache) and the flush marked entries flag is set. Tested: ummon --- src/H5C.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/H5C.c b/src/H5C.c index 7005235..e06dc37 100644 --- a/src/H5C.c +++ b/src/H5C.c @@ -1893,9 +1893,10 @@ H5C_flush_cache(H5F_t *f, hid_t primary_dxpl_id, hid_t secondary_dxpl_id, unsign if ( ( ( ! flush_marked_entries ) || ( entry_ptr->flush_marker ) ) && ( ( ! entry_ptr->flush_me_last ) || - ( ( entry_ptr->flush_me_last ) && - ( cache_ptr->num_last_entries >= - cache_ptr->slist_len ) ) ) ) { + ( cache_ptr->num_last_entries >= + cache_ptr->slist_len ) || + ( flush_marked_entries && + entry_ptr->flush_marker ) ) ) { if ( entry_ptr->is_protected ) { -- cgit v0.12