summaryrefslogtreecommitdiffstats
path: root/src/H5Cpkg.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Cpkg.h')
-rw-r--r--src/H5Cpkg.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/H5Cpkg.h b/src/H5Cpkg.h
index 392553a..306f5f9 100644
--- a/src/H5Cpkg.h
+++ b/src/H5Cpkg.h
@@ -3468,6 +3468,9 @@ typedef struct H5C_tag_info_t {
* clean data so as to avoid case b) above. Again, this is
* a soft limit.
*
+ * close_warning_received: Boolean flag indicating that a file closing
+ * warning has been received.
+ *
*
* In addition to the call back functions required for each entry, the
* cache requires the following call back functions for this instance of
@@ -4069,6 +4072,43 @@ typedef struct H5C_tag_info_t {
* entries relocated_counter: Number of entries whose base address has
* been changed since the last time this field was reset.
*
+ * Free Space Manager Related fields:
+ *
+ * The free space managers must be informed when we are about to close
+ * or flush the file so that they order themselves accordingly. This used
+ * to be done much later in the close process, but with cache image and
+ * page buffering, this is no longer viable, as we must finalize the on
+ * disk image of all metadata much sooner.
+ *
+ * This is handled by the H5FS_settle_raw_data_fsm() and
+ * H5FS_settle_meta_data_fsm() routines. As these calls are expensive,
+ * the following fields are used to track whether the target free space
+ * managers are clean.
+ *
+ * They are also used in sanity checking, as once a free space manager is
+ * settled, it should not become unsettled (i.e. be asked to allocate or
+ * free file space) either ever (in the case of a file close) or until the
+ * flush is complete.
+ *
+ * rdfsm_settled: Boolean flag indicating whether the raw data free space
+ * manager is settled -- i.e. whether the correct space has
+ * been allocated for it in the file.
+ *
+ * Note that the name of this field is deceptive. In the
+ * multi file case, the flag applies to all free space
+ * managers that are not involved in allocating space for
+ * free space manager metadata.
+ *
+ * mdfsm_settled: Boolean flag indicating whether the meta data free space
+ * manager is settled -- i.e. whether the correct space has
+ * been allocated for it in the file.
+ *
+ * Note that the name of this field is deceptive. In the
+ * multi file case, the flag applies only to free space
+ * managers that are involved in allocating space for free
+ * space managers.
+ *
+ *
* Statistics collection fields:
*
* When enabled, these fields are used to collect statistics as described
@@ -4349,6 +4389,7 @@ struct H5C_t {
hbool_t write_permitted;
H5C_log_flush_func_t log_flush;
hbool_t evictions_enabled;
+ hbool_t close_warning_received;
/* Fields for maintaining [hash table] index of entries */
int32_t index_len;
@@ -4454,6 +4495,10 @@ struct H5C_t {
int64_t entries_loaded_counter;
int64_t entries_inserted_counter;
int64_t entries_relocated_counter;
+ /* Free Space Manager Related fields */
+ hbool_t rdfsm_settled;
+ hbool_t mdfsm_settled;
+
#if H5C_COLLECT_CACHE_STATS
/* stats fields */
int64_t hits[H5C__MAX_NUM_TYPE_IDS + 1];