summaryrefslogtreecommitdiffstats
path: root/src/H5Ctag.c
diff options
context:
space:
mode:
authorVailin Choi <vchoi@jam.ad.hdfgroup.org>2018-08-14 18:21:00 (GMT)
committerVailin Choi <vchoi@jam.ad.hdfgroup.org>2018-08-14 18:21:00 (GMT)
commit45be06a387c1294fa3c95cc71106afcc023ddb91 (patch)
tree3043133c78a523d02f2671710318046afe29d8b7 /src/H5Ctag.c
parentce1e8162959b14b97d79b53ebf4bea77e2e871b2 (diff)
downloadhdf5-45be06a387c1294fa3c95cc71106afcc023ddb91.zip
hdf5-45be06a387c1294fa3c95cc71106afcc023ddb91.tar.gz
hdf5-45be06a387c1294fa3c95cc71106afcc023ddb91.tar.bz2
Preliminary checkins for implementation done so far:
1) Public routines: H5Pget/set_vfd_swmr_config 2) Public routine: H5Fvfd_swmr_end_tick 3) Initialization when opening a file with VFD SWMR writer 4) Tests in test/vfd_swmr.c for VFD SWMR 5) Fix a bug in src/H5Fint.c: when error is encountered after the root group is created Note the following: --This is WORK IN PROGRESS and will subject to change as implementation goes. --There is test failure form enc_dec_plist.c: I will fix this when changes to the property list are settled. --The branch is updated with the latest from develop as of 8/14/2018
Diffstat (limited to 'src/H5Ctag.c')
-rw-r--r--src/H5Ctag.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/H5Ctag.c b/src/H5Ctag.c
index 66aedd9..16baac3 100644
--- a/src/H5Ctag.c
+++ b/src/H5Ctag.c
@@ -75,6 +75,7 @@ typedef struct {
H5F_t *f; /* File pointer for evicting entry */
int type_id; /* Cache entry type to expunge */
unsigned flags; /* Flags for expunging entry */
+ hbool_t type_match;
} H5C_tag_iter_ettm_ctx_t;
/* Typedef for tagged entry iterator callback context - mark corked */
@@ -811,7 +812,7 @@ H5C__expunge_tag_type_metadata_cb(H5C_cache_entry_t *entry, void *_ctx)
HDassert(ctx);
/* Found one with the same tag and type id */
- if(entry->type->id == ctx->type_id)
+ if(entry->type->id == ctx->type_id || !ctx->type_match)
if(H5C_expunge_entry(ctx->f, entry->type, entry->addr, ctx->flags) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTEXPUNGE, H5_ITER_ERROR, "can't expunge entry")
@@ -835,7 +836,7 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5C_expunge_tag_type_metadata(H5F_t *f, haddr_t tag, int type_id, unsigned flags)
+H5C_expunge_tag_type_metadata(H5F_t *f, haddr_t tag, int type_id, unsigned flags, hbool_t type_match)
{
H5C_t *cache; /* Pointer to cache structure */
H5C_tag_iter_ettm_ctx_t ctx; /* Context for iterator callback */
@@ -855,6 +856,7 @@ H5C_expunge_tag_type_metadata(H5F_t *f, haddr_t tag, int type_id, unsigned flags
ctx.f = f;
ctx.type_id = type_id;
ctx.flags = flags;
+ ctx.type_match = type_match;
/* Iterate through hash table entries, expunge those with specified tag and type id */
if(H5C__iter_tagged_entries(cache, tag, FALSE, H5C__expunge_tag_type_metadata_cb, &ctx) < 0)