diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2017-01-05 05:36:14 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2017-01-05 05:36:14 (GMT) |
commit | afd7e5b476d65960d0e309f35fa2df3235731564 (patch) | |
tree | f92049d856d85402a334c00df4c98b12accf7a41 /src/H5Cpkg.h | |
parent | 6232dd6d62e5a58a6185b9502b6d8719cf0ce676 (diff) | |
download | hdf5-afd7e5b476d65960d0e309f35fa2df3235731564.zip hdf5-afd7e5b476d65960d0e309f35fa2df3235731564.tar.gz hdf5-afd7e5b476d65960d0e309f35fa2df3235731564.tar.bz2 |
Bring file shutdown code from cache image branch
Diffstat (limited to 'src/H5Cpkg.h')
-rw-r--r-- | src/H5Cpkg.h | 45 |
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]; |