summaryrefslogtreecommitdiffstats
path: root/src/H5Ctag.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Ctag.c')
-rw-r--r--src/H5Ctag.c269
1 files changed, 123 insertions, 146 deletions
diff --git a/src/H5Ctag.c b/src/H5Ctag.c
index e92d0e4..a3eb173 100644
--- a/src/H5Ctag.c
+++ b/src/H5Ctag.c
@@ -27,68 +27,63 @@
/* Module Setup */
/****************/
-#include "H5Cmodule.h" /* This source code file is part of the H5C module */
-#define H5F_FRIEND /*suppress error about including H5Fpkg */
-
+#include "H5Cmodule.h" /* This source code file is part of the H5C module */
+#define H5F_FRIEND /*suppress error about including H5Fpkg */
/***********/
/* Headers */
/***********/
-#include "H5private.h" /* Generic Functions */
-#include "H5ACprivate.h" /* Metadata cache */
-#include "H5Cpkg.h" /* Cache */
-#include "H5CXprivate.h" /* API Contexts */
-#include "H5Eprivate.h" /* Error handling */
-#include "H5Fpkg.h" /* Files */
-#include "H5Iprivate.h" /* IDs */
-#include "H5Pprivate.h" /* Property lists */
-
+#include "H5private.h" /* Generic Functions */
+#include "H5ACprivate.h" /* Metadata cache */
+#include "H5Cpkg.h" /* Cache */
+#include "H5CXprivate.h" /* API Contexts */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Fpkg.h" /* Files */
+#include "H5Iprivate.h" /* IDs */
+#include "H5Pprivate.h" /* Property lists */
/****************/
/* Local Macros */
/****************/
-
/******************/
/* Local Typedefs */
/******************/
/* Typedef for tagged entry iterator callback context - evict tagged entries */
typedef struct {
- H5F_t *f; /* File pointer for evicting entry */
- hbool_t evicted_entries_last_pass; /* Flag to indicate that an entry
- * was evicted when iterating over
- * cache
- */
- hbool_t pinned_entries_need_evicted;/* Flag to indicate that a pinned
- * entry was attempted to be evicted
- */
- hbool_t skipped_pf_dirty_entries; /* Flag indicating that one or more
- * entries marked prefetched_dirty
- * were encountered and not
- * evicted.
- */
+ H5F_t * f; /* File pointer for evicting entry */
+ hbool_t evicted_entries_last_pass; /* Flag to indicate that an entry
+ * was evicted when iterating over
+ * cache
+ */
+ hbool_t pinned_entries_need_evicted; /* Flag to indicate that a pinned
+ * entry was attempted to be evicted
+ */
+ hbool_t skipped_pf_dirty_entries; /* Flag indicating that one or more
+ * entries marked prefetched_dirty
+ * were encountered and not
+ * evicted.
+ */
} H5C_tag_iter_evict_ctx_t;
/* Typedef for tagged entry iterator callback context - expunge tag type metadata */
typedef struct {
- H5F_t *f; /* File pointer for evicting entry */
- int type_id; /* Cache entry type to expunge */
- unsigned flags; /* Flags for expunging entry */
+ H5F_t * f; /* File pointer for evicting entry */
+ int type_id; /* Cache entry type to expunge */
+ unsigned flags; /* Flags for expunging entry */
} H5C_tag_iter_ettm_ctx_t;
/* Typedef for tagged entry iterator callback context - mark corked */
typedef struct {
- hbool_t cork_val; /* Corked value */
+ hbool_t cork_val; /* Corked value */
} H5C_tag_iter_cork_ctx_t;
-
/********************/
/* Local Prototypes */
/********************/
static herr_t H5C__mark_tagged_entries(H5C_t *cache_ptr, haddr_t tag);
-
/*********************/
/* Package Variables */
/*********************/
@@ -96,18 +91,14 @@ static herr_t H5C__mark_tagged_entries(H5C_t *cache_ptr, haddr_t tag);
/* Declare extern free list to manage the tag info struct */
H5FL_EXTERN(H5C_tag_info_t);
-
/*****************************/
/* Library Private Variables */
/*****************************/
-
/*******************/
/* Local Variables */
/*******************/
-
-
/*-------------------------------------------------------------------------
*
* Function: H5C_ignore_tags
@@ -131,7 +122,7 @@ H5FL_EXTERN(H5C_tag_info_t);
*-------------------------------------------------------------------------
*/
herr_t
-H5C_ignore_tags(H5C_t * cache_ptr)
+H5C_ignore_tags(H5C_t *cache_ptr)
{
FUNC_ENTER_NOAPI_NOERR
@@ -145,7 +136,6 @@ H5C_ignore_tags(H5C_t * cache_ptr)
FUNC_LEAVE_NOAPI(SUCCEED)
} /* H5C_ignore_tags */
-
/*-------------------------------------------------------------------------
*
* Function: H5C_get_ignore_tags
@@ -172,7 +162,6 @@ H5C_get_ignore_tags(const H5C_t *cache_ptr)
FUNC_LEAVE_NOAPI(cache_ptr->ignore_tags)
} /* H5C_get_ignore_tags */
-
/*-------------------------------------------------------------------------
*
* Function: H5C_get_num_objs_corked
@@ -198,7 +187,6 @@ H5C_get_num_objs_corked(const H5C_t *cache_ptr)
FUNC_LEAVE_NOAPI(cache_ptr->num_objs_corked)
} /* H5C_get_num_objs_corked */
-
/*-------------------------------------------------------------------------
*
* Function: H5C__tag_entry
@@ -218,9 +206,9 @@ H5C_get_num_objs_corked(const H5C_t *cache_ptr)
herr_t
H5C__tag_entry(H5C_t *cache, H5C_cache_entry_t *entry)
{
- H5C_tag_info_t *tag_info; /* Points to a tag info struct */
- haddr_t tag; /* Tag value */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5C_tag_info_t *tag_info; /* Points to a tag info struct */
+ haddr_t tag; /* Tag value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE
@@ -232,7 +220,7 @@ H5C__tag_entry(H5C_t *cache, H5C_cache_entry_t *entry)
/* Get the tag */
tag = H5CX_get_tag();
- if(cache->ignore_tags) {
+ if (cache->ignore_tags) {
/* if we're ignoring tags, it's because we're running
tests on internal functions and may not have inserted a tag
value into a given API context before creating some metadata. Thus,
@@ -240,13 +228,13 @@ H5C__tag_entry(H5C_t *cache, H5C_cache_entry_t *entry)
arbitrarily set it to something for the sake of passing the tests.
If the tag value is set, then we'll just let it get assigned without
additional checking for correctness. */
- if(!H5F_addr_defined(tag))
+ if (!H5F_addr_defined(tag))
tag = H5AC__IGNORE_TAG;
} /* end if */
#if H5C_DO_TAGGING_SANITY_CHECKS
else {
/* Perform some sanity checks to ensure that a correct tag is being applied */
- if(H5C_verify_tag(entry->type->id, tag) < 0)
+ if (H5C_verify_tag(entry->type->id, tag) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTTAG, FAIL, "tag verification failed")
} /* end else */
#endif
@@ -255,16 +243,16 @@ H5C__tag_entry(H5C_t *cache, H5C_cache_entry_t *entry)
tag_info = (H5C_tag_info_t *)H5SL_search(cache->tag_list, &tag);
/* Check if this is the first entry for this tagged object */
- if(NULL == tag_info) {
+ if (NULL == tag_info) {
/* Allocate new tag info struct */
- if(NULL == (tag_info = H5FL_CALLOC(H5C_tag_info_t)))
+ if (NULL == (tag_info = H5FL_CALLOC(H5C_tag_info_t)))
HGOTO_ERROR(H5E_CACHE, H5E_CANTALLOC, FAIL, "can't allocate tag info for cache entry")
/* Set the tag for all entries */
tag_info->tag = tag;
/* Insert tag info into skip list */
- if(H5SL_insert(cache->tag_list, tag_info, &(tag_info->tag)) < 0 )
+ if (H5SL_insert(cache->tag_list, tag_info, &(tag_info->tag)) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTINSERT, FAIL, "can't insert tag info in skip list")
} /* end if */
else
@@ -276,9 +264,9 @@ H5C__tag_entry(H5C_t *cache, H5C_cache_entry_t *entry)
HDassert(entry->tag_info == NULL);
/* Add the entry to the list for the tagged object */
- entry->tl_next = tag_info->head;
+ entry->tl_next = tag_info->head;
entry->tag_info = tag_info;
- if(tag_info->head)
+ if (tag_info->head)
tag_info->head->tl_prev = entry;
tag_info->head = entry;
tag_info->entry_cnt++;
@@ -287,7 +275,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5C__tag_entry */
-
/*-------------------------------------------------------------------------
*
* Function: H5C__untag_entry
@@ -305,8 +292,8 @@ done:
herr_t
H5C__untag_entry(H5C_t *cache, H5C_cache_entry_t *entry)
{
- H5C_tag_info_t *tag_info; /* Points to a tag info struct */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5C_tag_info_t *tag_info; /* Points to a tag info struct */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE
@@ -316,27 +303,27 @@ H5C__untag_entry(H5C_t *cache, H5C_cache_entry_t *entry)
HDassert(cache->magic == H5C__H5C_T_MAGIC);
/* Get the entry's tag info struct */
- if(NULL != (tag_info = entry->tag_info)) {
+ if (NULL != (tag_info = entry->tag_info)) {
/* Remove the entry from the list */
- if(entry->tl_next)
+ if (entry->tl_next)
entry->tl_next->tl_prev = entry->tl_prev;
- if(entry->tl_prev)
+ if (entry->tl_prev)
entry->tl_prev->tl_next = entry->tl_next;
- if(tag_info->head == entry)
+ if (tag_info->head == entry)
tag_info->head = entry->tl_next;
tag_info->entry_cnt--;
/* Reset pointers, to avoid confusion */
- entry->tl_next = NULL;
- entry->tl_prev = NULL;
+ entry->tl_next = NULL;
+ entry->tl_prev = NULL;
entry->tag_info = NULL;
/* Remove the tag info from the tag list, if there's no more entries with this tag */
- if(!tag_info->corked && 0 == tag_info->entry_cnt) {
+ if (!tag_info->corked && 0 == tag_info->entry_cnt) {
/* Sanity check */
HDassert(NULL == tag_info->head);
- if(H5SL_remove(cache->tag_list, &(tag_info->tag)) != tag_info)
+ if (H5SL_remove(cache->tag_list, &(tag_info->tag)) != tag_info)
HGOTO_ERROR(H5E_CACHE, H5E_CANTREMOVE, FAIL, "can't remove tag info from list")
/* Release the tag info */
@@ -350,7 +337,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5C__untag_entry */
-
/*-------------------------------------------------------------------------
*
* Function: H5C__iter_tagged_entries_real
@@ -365,11 +351,10 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5C__iter_tagged_entries_real(H5C_t *cache, haddr_t tag, H5C_tag_iter_cb_t cb,
- void *cb_ctx)
+H5C__iter_tagged_entries_real(H5C_t *cache, haddr_t tag, H5C_tag_iter_cb_t cb, void *cb_ctx)
{
- H5C_tag_info_t *tag_info; /* Points to a tag info struct */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5C_tag_info_t *tag_info; /* Points to a tag info struct */
+ herr_t ret_value = SUCCEED; /* Return value */
/* Function enter macro */
FUNC_ENTER_STATIC
@@ -382,9 +367,9 @@ H5C__iter_tagged_entries_real(H5C_t *cache, haddr_t tag, H5C_tag_iter_cb_t cb,
tag_info = (H5C_tag_info_t *)H5SL_search(cache->tag_list, &tag);
/* If there's any entries for this tag, iterate over them */
- if(tag_info) {
- H5C_cache_entry_t *entry; /* Pointer to current entry */
- H5C_cache_entry_t *next_entry; /* Pointer to next entry in hash bucket chain */
+ if (tag_info) {
+ H5C_cache_entry_t *entry; /* Pointer to current entry */
+ H5C_cache_entry_t *next_entry; /* Pointer to next entry in hash bucket chain */
/* Sanity check */
HDassert(tag_info->head);
@@ -392,24 +377,23 @@ H5C__iter_tagged_entries_real(H5C_t *cache, haddr_t tag, H5C_tag_iter_cb_t cb,
/* Iterate over the entries for this tag */
entry = tag_info->head;
- while(entry) {
+ while (entry) {
/* Acquire pointer to next entry */
next_entry = entry->tl_next;
/* Make callback for entry */
- if((cb)(entry, cb_ctx) != H5_ITER_CONT)
+ if ((cb)(entry, cb_ctx) != H5_ITER_CONT)
HGOTO_ERROR(H5E_CACHE, H5E_BADITER, FAIL, "tagged entry iteration callback failed")
/* Advance to next entry */
entry = next_entry;
} /* end while */
- } /* end if */
+ } /* end if */
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5C__iter_tagged_entries_real() */
-
/*-------------------------------------------------------------------------
*
* Function: H5C__iter_tagged_entries
@@ -424,10 +408,9 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5C__iter_tagged_entries(H5C_t *cache, haddr_t tag, hbool_t match_global,
- H5C_tag_iter_cb_t cb, void *cb_ctx)
+H5C__iter_tagged_entries(H5C_t *cache, haddr_t tag, hbool_t match_global, H5C_tag_iter_cb_t cb, void *cb_ctx)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
/* Function enter macro */
FUNC_ENTER_PACKAGE
@@ -437,17 +420,17 @@ H5C__iter_tagged_entries(H5C_t *cache, haddr_t tag, hbool_t match_global,
HDassert(cache->magic == H5C__H5C_T_MAGIC);
/* Iterate over the entries for this tag */
- if(H5C__iter_tagged_entries_real(cache, tag, cb, cb_ctx) < 0)
+ if (H5C__iter_tagged_entries_real(cache, tag, cb, cb_ctx) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_BADITER, FAIL, "iteration of tagged entries failed")
/* Check for iterating over global metadata */
- if(match_global) {
+ if (match_global) {
/* Iterate over the entries for SOHM entries */
- if(H5C__iter_tagged_entries_real(cache, H5AC__SOHM_TAG, cb, cb_ctx) < 0)
+ if (H5C__iter_tagged_entries_real(cache, H5AC__SOHM_TAG, cb, cb_ctx) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_BADITER, FAIL, "iteration of tagged entries failed")
/* Iterate over the entries for global heap entries */
- if(H5C__iter_tagged_entries_real(cache, H5AC__GLOBALHEAP_TAG, cb, cb_ctx) < 0)
+ if (H5C__iter_tagged_entries_real(cache, H5AC__GLOBALHEAP_TAG, cb, cb_ctx) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_BADITER, FAIL, "iteration of tagged entries failed")
} /* end if */
@@ -455,7 +438,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5C__iter_tagged_entries() */
-
/*-------------------------------------------------------------------------
*
* Function: H5C__evict_tagged_entries_cb
@@ -473,7 +455,7 @@ static int
H5C__evict_tagged_entries_cb(H5C_cache_entry_t *entry, void *_ctx)
{
H5C_tag_iter_evict_ctx_t *ctx = (H5C_tag_iter_evict_ctx_t *)_ctx; /* Get pointer to iterator context */
- int ret_value = H5_ITER_CONT; /* Return value */
+ int ret_value = H5_ITER_CONT; /* Return value */
/* Function enter macro */
FUNC_ENTER_STATIC
@@ -483,18 +465,20 @@ H5C__evict_tagged_entries_cb(H5C_cache_entry_t *entry, void *_ctx)
HDassert(ctx);
/* Attempt to evict entry */
- if(entry->is_protected)
+ if (entry->is_protected)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, H5_ITER_ERROR, "Cannot evict protected entry")
- else if(entry->is_dirty)
+ else if (entry->is_dirty)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, H5_ITER_ERROR, "Cannot evict dirty entry")
- else if(entry->is_pinned)
+ else if (entry->is_pinned)
/* Can't evict at this time, but let's note that we hit a pinned
entry and we'll loop back around again (as evicting other
entries will hopefully unpin this entry) */
ctx->pinned_entries_need_evicted = TRUE;
- else if(!entry->prefetched_dirty) {
+ else if (!entry->prefetched_dirty) {
/* Evict the Entry */
- if(H5C__flush_single_entry(ctx->f, entry, H5C__FLUSH_INVALIDATE_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG | H5C__DEL_FROM_SLIST_ON_DESTROY_FLAG) < 0)
+ if (H5C__flush_single_entry(ctx->f, entry,
+ H5C__FLUSH_INVALIDATE_FLAG | H5C__FLUSH_CLEAR_ONLY_FLAG |
+ H5C__DEL_FROM_SLIST_ON_DESTROY_FLAG) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, H5_ITER_ERROR, "Entry eviction failed.")
ctx->evicted_entries_last_pass = TRUE;
}
@@ -505,7 +489,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5C__evict_tagged_entries_cb() */
-
/*-------------------------------------------------------------------------
*
* Function: H5C_evict_tagged_entries
@@ -520,11 +503,11 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5C_evict_tagged_entries(H5F_t * f, haddr_t tag, hbool_t match_global)
+H5C_evict_tagged_entries(H5F_t *f, haddr_t tag, hbool_t match_global)
{
- H5C_t *cache; /* Pointer to cache structure */
- H5C_tag_iter_evict_ctx_t ctx; /* Context for iterator callback */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5C_t * cache; /* Pointer to cache structure */
+ H5C_tag_iter_evict_ctx_t ctx; /* Context for iterator callback */
+ herr_t ret_value = SUCCEED; /* Return value */
/* Function enter macro */
FUNC_ENTER_NOAPI(FAIL)
@@ -532,7 +515,7 @@ H5C_evict_tagged_entries(H5F_t * f, haddr_t tag, hbool_t match_global)
/* Sanity checks */
HDassert(f);
HDassert(f->shared);
- cache = f->shared->cache; /* Get cache pointer */
+ cache = f->shared->cache; /* Get cache pointer */
HDassert(cache != NULL);
HDassert(cache->magic == H5C__H5C_T_MAGIC);
@@ -543,15 +526,15 @@ H5C_evict_tagged_entries(H5F_t * f, haddr_t tag, hbool_t match_global)
do {
/* Reset pinned/evicted tracking flags */
ctx.pinned_entries_need_evicted = FALSE;
- ctx.evicted_entries_last_pass = FALSE;
- ctx.skipped_pf_dirty_entries = FALSE;
+ ctx.evicted_entries_last_pass = FALSE;
+ ctx.skipped_pf_dirty_entries = FALSE;
/* Iterate through entries in the cache */
- if(H5C__iter_tagged_entries(cache, tag, match_global, H5C__evict_tagged_entries_cb, &ctx) < 0)
+ if (H5C__iter_tagged_entries(cache, tag, match_global, H5C__evict_tagged_entries_cb, &ctx) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_BADITER, FAIL, "Iteration of tagged entries failed")
/* Keep doing this until we have stopped evicted entries */
- } while(TRUE == ctx.evicted_entries_last_pass);
+ } while (TRUE == ctx.evicted_entries_last_pass);
/* In most cases, fail if we have finished evicting entries and pinned
* entries still need evicted
@@ -578,14 +561,13 @@ H5C_evict_tagged_entries(H5F_t * f, haddr_t tag, hbool_t match_global)
* Thus we must ignore ctx.pinned_entries_need_evicted if
* ctx.skipped_pf_dirty_entries is TRUE.
*/
- if((!ctx.skipped_pf_dirty_entries) && (ctx.pinned_entries_need_evicted))
+ if ((!ctx.skipped_pf_dirty_entries) && (ctx.pinned_entries_need_evicted))
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "Pinned entries still need evicted?!")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5C_evict_tagged_entries() */
-
/*-------------------------------------------------------------------------
*
* Function: H5C__mark_tagged_entries_cb
@@ -610,13 +592,12 @@ H5C__mark_tagged_entries_cb(H5C_cache_entry_t *entry, void H5_ATTR_UNUSED *_ctx)
/* We only want to set the flush marker on entries that
* actually need flushed (i.e., dirty ones) */
- if(entry->is_dirty)
+ if (entry->is_dirty)
entry->flush_marker = TRUE;
FUNC_LEAVE_NOAPI(H5_ITER_CONT)
} /* H5C__mark_tagged_entries_cb() */
-
/*-------------------------------------------------------------------------
*
* Function: H5C__mark_tagged_entries
@@ -634,7 +615,7 @@ H5C__mark_tagged_entries_cb(H5C_cache_entry_t *entry, void H5_ATTR_UNUSED *_ctx)
static herr_t
H5C__mark_tagged_entries(H5C_t *cache, haddr_t tag)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
/* Function enter macro */
FUNC_ENTER_STATIC
@@ -646,7 +627,7 @@ H5C__mark_tagged_entries(H5C_t *cache, haddr_t tag)
/* Iterate through hash table entries, marking those with specified tag, as
* well as any major global entries which should always be flushed
* when flushing based on tag value */
- if(H5C__iter_tagged_entries(cache, tag, TRUE, H5C__mark_tagged_entries_cb, NULL) < 0)
+ if (H5C__iter_tagged_entries(cache, tag, TRUE, H5C__mark_tagged_entries_cb, NULL) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_BADITER, FAIL, "Iteration of tagged entries failed")
done:
@@ -654,7 +635,7 @@ done:
} /* H5C__mark_tagged_entries() */
#if H5C_DO_TAGGING_SANITY_CHECKS
-
+
/*-------------------------------------------------------------------------
*
* Function: H5C_verify_tag
@@ -678,10 +659,10 @@ H5C_verify_tag(int id, haddr_t tag)
/* Perform some sanity checks on tag value. Certain entry
* types require certain tag values, so check that these
* constraints are met. */
- if(tag == H5AC__IGNORE_TAG)
+ if (tag == H5AC__IGNORE_TAG)
HGOTO_ERROR(H5E_CACHE, H5E_CANTTAG, FAIL, "cannot ignore a tag while doing verification.")
- else if(tag == H5AC__INVALID_TAG) {
- if(id != H5AC_PROXY_ENTRY_ID)
+ else if (tag == H5AC__INVALID_TAG) {
+ if (id != H5AC_PROXY_ENTRY_ID)
HGOTO_ERROR(H5E_CACHE, H5E_CANTTAG, FAIL, "no metadata tag provided")
} /* end else-if */
else {
@@ -690,41 +671,42 @@ H5C_verify_tag(int id, haddr_t tag)
* constraints are met. */
/* Superblock */
- if((id == H5AC_SUPERBLOCK_ID) || (id == H5AC_DRVRINFO_ID)) {
- if(tag != H5AC__SUPERBLOCK_TAG)
+ if ((id == H5AC_SUPERBLOCK_ID) || (id == H5AC_DRVRINFO_ID)) {
+ if (tag != H5AC__SUPERBLOCK_TAG)
HGOTO_ERROR(H5E_CACHE, H5E_CANTTAG, FAIL, "superblock not tagged with H5AC__SUPERBLOCK_TAG")
} /* end if */
else {
- if(tag == H5AC__SUPERBLOCK_TAG)
- HGOTO_ERROR(H5E_CACHE, H5E_CANTTAG, FAIL, "H5AC__SUPERBLOCK_TAG applied to non-superblock entry")
+ if (tag == H5AC__SUPERBLOCK_TAG)
+ HGOTO_ERROR(H5E_CACHE, H5E_CANTTAG, FAIL,
+ "H5AC__SUPERBLOCK_TAG applied to non-superblock entry")
} /* end else */
/* Free Space Manager */
- if(tag == H5AC__FREESPACE_TAG && ((id != H5AC_FSPACE_HDR_ID) && (id != H5AC_FSPACE_SINFO_ID)))
- HGOTO_ERROR(H5E_CACHE, H5E_CANTTAG, FAIL, "H5AC__FREESPACE_TAG applied to non-freespace entry")
+ if (tag == H5AC__FREESPACE_TAG && ((id != H5AC_FSPACE_HDR_ID) && (id != H5AC_FSPACE_SINFO_ID)))
+ HGOTO_ERROR(H5E_CACHE, H5E_CANTTAG, FAIL, "H5AC__FREESPACE_TAG applied to non-freespace entry")
/* SOHM */
- if((id == H5AC_SOHM_TABLE_ID) || (id == H5AC_SOHM_LIST_ID))
- if(tag != H5AC__SOHM_TAG)
+ if ((id == H5AC_SOHM_TABLE_ID) || (id == H5AC_SOHM_LIST_ID))
+ if (tag != H5AC__SOHM_TAG)
HGOTO_ERROR(H5E_CACHE, H5E_CANTTAG, FAIL, "sohm entry not tagged with H5AC__SOHM_TAG")
/* Global Heap */
- if(id == H5AC_GHEAP_ID) {
- if(tag != H5AC__GLOBALHEAP_TAG)
+ if (id == H5AC_GHEAP_ID) {
+ if (tag != H5AC__GLOBALHEAP_TAG)
HGOTO_ERROR(H5E_CACHE, H5E_CANTTAG, FAIL, "global heap not tagged with H5AC__GLOBALHEAP_TAG")
} /* end if */
else {
- if(tag == H5AC__GLOBALHEAP_TAG)
- HGOTO_ERROR(H5E_CACHE, H5E_CANTTAG, FAIL, "H5AC__GLOBALHEAP_TAG applied to non-globalheap entry")
+ if (tag == H5AC__GLOBALHEAP_TAG)
+ HGOTO_ERROR(H5E_CACHE, H5E_CANTTAG, FAIL,
+ "H5AC__GLOBALHEAP_TAG applied to non-globalheap entry")
} /* end else */
- } /* end else */
+ } /* end else */
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5C_verify_tag */
#endif
-
/*-------------------------------------------------------------------------
*
* Function: H5C_flush_tagged_entries
@@ -742,8 +724,8 @@ herr_t
H5C_flush_tagged_entries(H5F_t *f, haddr_t tag)
{
/* Variable Declarations */
- H5C_t *cache_ptr = NULL;
- herr_t ret_value = SUCCEED;
+ H5C_t *cache_ptr = NULL;
+ herr_t ret_value = SUCCEED;
FUNC_ENTER_NOAPI(FAIL)
@@ -755,18 +737,17 @@ H5C_flush_tagged_entries(H5F_t *f, haddr_t tag)
cache_ptr = f->shared->cache;
/* Mark all entries with specified tag */
- if(H5C__mark_tagged_entries(cache_ptr, tag) < 0)
+ if (H5C__mark_tagged_entries(cache_ptr, tag) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "Can't mark tagged entries")
/* Flush all marked entries */
- if(H5C__flush_marked_entries(f) < 0)
+ if (H5C__flush_marked_entries(f) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "Can't flush marked entries")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5C_flush_tagged_entries */
-
/*-------------------------------------------------------------------------
*
* Function: H5C_retag_entries
@@ -785,8 +766,8 @@ done:
herr_t
H5C_retag_entries(H5C_t *cache, haddr_t src_tag, haddr_t dest_tag)
{
- H5C_tag_info_t *tag_info; /* Points to a tag info struct */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5C_tag_info_t *tag_info; /* Points to a tag info struct */
+ herr_t ret_value = SUCCEED; /* Return value */
/* Function enter macro */
FUNC_ENTER_NOAPI(FAIL)
@@ -795,12 +776,12 @@ H5C_retag_entries(H5C_t *cache, haddr_t src_tag, haddr_t dest_tag)
HDassert(cache);
/* Remove tag info from tag list */
- if(NULL != (tag_info = (H5C_tag_info_t *)H5SL_remove(cache->tag_list, &src_tag))) {
+ if (NULL != (tag_info = (H5C_tag_info_t *)H5SL_remove(cache->tag_list, &src_tag))) {
/* Change to new tag */
tag_info->tag = dest_tag;
/* Re-insert tag info into skip list */
- if(H5SL_insert(cache->tag_list, tag_info, &(tag_info->tag)) < 0)
+ if (H5SL_insert(cache->tag_list, tag_info, &(tag_info->tag)) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTINSERT, FAIL, "can't insert tag info in skip list")
} /* end if */
@@ -808,7 +789,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5C_retag_entries() */
-
/*-------------------------------------------------------------------------
*
* Function: H5C__expunge_tag_type_metadata_cb
@@ -827,7 +807,7 @@ static int
H5C__expunge_tag_type_metadata_cb(H5C_cache_entry_t *entry, void *_ctx)
{
H5C_tag_iter_ettm_ctx_t *ctx = (H5C_tag_iter_ettm_ctx_t *)_ctx; /* Get pointer to iterator context */
- int ret_value = H5_ITER_CONT; /* Return value */
+ int ret_value = H5_ITER_CONT; /* Return value */
/* Function enter macro */
FUNC_ENTER_STATIC
@@ -837,15 +817,14 @@ 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(H5C_expunge_entry(ctx->f, entry->type, entry->addr, ctx->flags) < 0)
+ if (entry->type->id == ctx->type_id)
+ 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")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5C__expunge_tag_type_metadata_cb() */
-
/*-------------------------------------------------------------------------
*
* Function: H5C_expunge_tag_type_metadata
@@ -863,9 +842,9 @@ done:
herr_t
H5C_expunge_tag_type_metadata(H5F_t *f, haddr_t tag, int type_id, unsigned flags)
{
- H5C_t *cache; /* Pointer to cache structure */
- H5C_tag_iter_ettm_ctx_t ctx; /* Context for iterator callback */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5C_t * cache; /* Pointer to cache structure */
+ H5C_tag_iter_ettm_ctx_t ctx; /* Context for iterator callback */
+ herr_t ret_value = SUCCEED; /* Return value */
/* Function enter macro */
FUNC_ENTER_NOAPI(FAIL)
@@ -873,24 +852,23 @@ H5C_expunge_tag_type_metadata(H5F_t *f, haddr_t tag, int type_id, unsigned flags
/* Sanity checks */
HDassert(f);
HDassert(f->shared);
- cache = f->shared->cache; /* Get cache pointer */
+ cache = f->shared->cache; /* Get cache pointer */
HDassert(cache != NULL);
HDassert(cache->magic == H5C__H5C_T_MAGIC);
/* Construct context for iterator callbacks */
- ctx.f = f;
+ ctx.f = f;
ctx.type_id = type_id;
- ctx.flags = flags;
+ ctx.flags = flags;
/* 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)
+ if (H5C__iter_tagged_entries(cache, tag, FALSE, H5C__expunge_tag_type_metadata_cb, &ctx) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_BADITER, FAIL, "Iteration of tagged entries failed")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5C_expunge_tag_type_metadata() */
-
/*-------------------------------------------------------------------------
*
* Function: H5C_get_tag()
@@ -907,7 +885,7 @@ done:
herr_t
H5C_get_tag(const void *thing, haddr_t *tag /*OUT*/)
{
- const H5C_cache_entry_t *entry = (const H5C_cache_entry_t *)thing; /* Pointer to cache entry */
+ const H5C_cache_entry_t *entry = (const H5C_cache_entry_t *)thing; /* Pointer to cache entry */
FUNC_ENTER_NOAPI_NOERR
@@ -920,4 +898,3 @@ H5C_get_tag(const void *thing, haddr_t *tag /*OUT*/)
FUNC_LEAVE_NOAPI(SUCCEED)
} /* H5C_get_tag() */
-