summaryrefslogtreecommitdiffstats
path: root/src/H5EApkg.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5EApkg.h')
-rw-r--r--src/H5EApkg.h34
1 files changed, 31 insertions, 3 deletions
diff --git a/src/H5EApkg.h b/src/H5EApkg.h
index 70e6a55..093403c 100644
--- a/src/H5EApkg.h
+++ b/src/H5EApkg.h
@@ -206,6 +206,28 @@ typedef struct H5EA_hdr_t {
/* Client information (not stored) */
void *cb_ctx; /* Callback context */
+
+ /* SWMR / Flush dependency information (not stored) */
+ hbool_t swmr_write; /* Flag indicating the file is opened with SWMR-write access */
+ H5AC_proxy_entry_t *top_proxy; /* 'Top' proxy cache entry for all array entries */
+ void *parent; /* Pointer to 'top' proxy flush dependency
+ * parent, if it exists, otherwise NULL.
+ * If the extensible array is being used
+ * to index a chunked dataset and the
+ * dataset metadata is modified by a
+ * SWMR writer, this field will be set
+ * equal to the object header proxy
+ * that is the flush dependency parent
+ * of the extensible array header.
+ *
+ * The field is used to avoid duplicate
+ * setups of the flush dependency
+ * relationship, and to allow the
+ * extensible array header to destroy
+ * the flush dependency on receipt of
+ * an eviction notification from the
+ * metadata cache.
+ */
} H5EA_hdr_t;
/* The extensible array index block information */
@@ -223,6 +245,9 @@ typedef struct H5EA_iblock_t {
haddr_t addr; /* Address of this index block on disk */
size_t size; /* Size of index block on disk */
+ /* SWMR / Flush dependency information (not stored) */
+ H5AC_proxy_entry_t *top_proxy; /* "Top" proxy cache entry for all array entries */
+
/* Computed/cached values (not stored) */
size_t nsblks; /* # of super blocks whose data block addresses are in index block */
size_t ndblk_addrs; /* Number of pointers to data blocks in index block */
@@ -244,8 +269,9 @@ typedef struct H5EA_sblock_t {
haddr_t addr; /* Address of this index block on disk */
size_t size; /* Size of index block on disk */
- /* Flush dependency information (not stored) */
+ /* SWMR / Flush dependency information (not stored) */
hbool_t has_hdr_depend; /* Whether this object has a flush dependency on the header */
+ H5AC_proxy_entry_t *top_proxy; /* "Top" proxy cache entry for all array entries */
H5EA_iblock_t *parent; /* Parent object for super block (index block) */
/* Computed/cached values (not stored) */
@@ -271,8 +297,9 @@ typedef struct H5EA_dblock_t {
haddr_t addr; /* Address of this data block on disk */
size_t size; /* Size of data block on disk */
- /* Flush dependency information (not stored) */
+ /* SWMR / Flush dependency information (not stored) */
hbool_t has_hdr_depend; /* Whether this object has a flush dependency on the header */
+ H5AC_proxy_entry_t *top_proxy; /* 'Top' proxy cache entry for all array entries */
void *parent; /* Parent object for data block (index or super block) */
/* Computed/cached values (not stored) */
@@ -293,8 +320,9 @@ typedef struct H5EA_dbk_page_t {
haddr_t addr; /* Address of this data block page on disk */
size_t size; /* Size of data block page on disk */
- /* Flush dependency information (not stored) */
+ /* SWMR / Flush dependency information (not stored) */
hbool_t has_hdr_depend; /* Whether this object has a flush dependency on the header */
+ H5AC_proxy_entry_t *top_proxy; /* "Top" proxy cache entry for all array entries */
H5EA_sblock_t *parent; /* Parent object for data block page (super block) */
/* Computed/cached values (not stored) */