summaryrefslogtreecommitdiffstats
path: root/src/H5HFsection.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5HFsection.c')
-rw-r--r--src/H5HFsection.c1897
1 files changed, 908 insertions, 989 deletions
diff --git a/src/H5HFsection.c b/src/H5HFsection.c
index b2d1e3c..a91b34b 100644
--- a/src/H5HFsection.c
+++ b/src/H5HFsection.c
@@ -23,159 +23,134 @@
/* Module Setup */
/****************/
-#include "H5HFmodule.h" /* This source code file is part of the H5HF module */
-
+#include "H5HFmodule.h" /* This source code file is part of the H5HF module */
/***********/
/* Headers */
/***********/
-#include "H5private.h" /* Generic Functions */
-#include "H5Eprivate.h" /* Error handling */
-#include "H5HFpkg.h" /* Fractal heaps */
-#include "H5MMprivate.h" /* Memory management */
-#include "H5VMprivate.h" /* Vectors and arrays */
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5HFpkg.h" /* Fractal heaps */
+#include "H5MMprivate.h" /* Memory management */
+#include "H5VMprivate.h" /* Vectors and arrays */
/****************/
/* Local Macros */
/****************/
/* Size of serialized indirect section information */
-#define H5HF_SECT_INDIRECT_SERIAL_SIZE(h) ( \
- (unsigned)(h)->heap_off_size /* Indirect block's offset in "heap space" */ \
- + (unsigned)2 /* Row */ \
- + (unsigned)2 /* Column */ \
- + (unsigned)2 /* # of entries */ \
+#define H5HF_SECT_INDIRECT_SERIAL_SIZE(h) \
+ ((unsigned)(h)->heap_off_size /* Indirect block's offset in "heap space" */ \
+ + (unsigned)2 /* Row */ \
+ + (unsigned)2 /* Column */ \
+ + (unsigned)2 /* # of entries */ \
)
-
/******************/
/* Local Typedefs */
/******************/
/* Typedef for "class private" information for sections */
typedef struct {
- H5HF_hdr_t *hdr; /* Pointer to fractal heap header */
+ H5HF_hdr_t *hdr; /* Pointer to fractal heap header */
} H5HF_sect_private_t;
-
/********************/
/* Package Typedefs */
/********************/
-
/********************/
/* Local Prototypes */
/********************/
/* Shared routines */
-static herr_t H5FS__sect_init_cls(H5FS_section_class_t *cls,
- H5HF_hdr_t *hdr);
-static herr_t H5FS__sect_term_cls(H5FS_section_class_t *cls);
-static H5HF_free_section_t *H5FS__sect_node_new(unsigned sect_type,
- haddr_t sect_addr, hsize_t sect_size, H5FS_section_state_t state);
-static herr_t H5HF__sect_node_free(H5HF_free_section_t *sect,
- H5HF_indirect_t *parent);
+static herr_t H5FS__sect_init_cls(H5FS_section_class_t *cls, H5HF_hdr_t *hdr);
+static herr_t H5FS__sect_term_cls(H5FS_section_class_t *cls);
+static H5HF_free_section_t *H5FS__sect_node_new(unsigned sect_type, haddr_t sect_addr, hsize_t sect_size,
+ H5FS_section_state_t state);
+static herr_t H5HF__sect_node_free(H5HF_free_section_t *sect, H5HF_indirect_t *parent);
/* 'single' section routines */
-static herr_t H5HF__sect_single_locate_parent(H5HF_hdr_t *hdr, hbool_t refresh,
- H5HF_free_section_t *sect);
+static herr_t H5HF__sect_single_locate_parent(H5HF_hdr_t *hdr, hbool_t refresh, H5HF_free_section_t *sect);
static herr_t H5HF__sect_single_full_dblock(H5HF_hdr_t *hdr, H5HF_free_section_t *sect);
/* 'single' section callbacks */
-static herr_t H5HF__sect_single_add(H5FS_section_info_t **sect, unsigned *flags,
- void *udata);
-static H5FS_section_info_t *H5HF__sect_single_deserialize(const H5FS_section_class_t *cls,
- const uint8_t *buf, haddr_t sect_addr, hsize_t sect_size,
- unsigned *des_flags);
-static htri_t H5HF__sect_single_can_merge(const H5FS_section_info_t *sect1,
- const H5FS_section_info_t *sect2, void *udata);
-static herr_t H5HF__sect_single_merge(H5FS_section_info_t **sect1,
- H5FS_section_info_t *sect2, void *udata);
-static htri_t H5HF__sect_single_can_shrink(const H5FS_section_info_t *sect,
- void *udata);
-static herr_t H5HF__sect_single_shrink(H5FS_section_info_t **_sect,
- void *udata);
-static herr_t H5HF__sect_single_valid(const H5FS_section_class_t *cls,
- const H5FS_section_info_t *sect);
+static herr_t H5HF__sect_single_add(H5FS_section_info_t **sect, unsigned *flags, void *udata);
+static H5FS_section_info_t *H5HF__sect_single_deserialize(const H5FS_section_class_t *cls, const uint8_t *buf,
+ haddr_t sect_addr, hsize_t sect_size,
+ unsigned *des_flags);
+static htri_t H5HF__sect_single_can_merge(const H5FS_section_info_t *sect1, const H5FS_section_info_t *sect2,
+ void *udata);
+static herr_t H5HF__sect_single_merge(H5FS_section_info_t **sect1, H5FS_section_info_t *sect2, void *udata);
+static htri_t H5HF__sect_single_can_shrink(const H5FS_section_info_t *sect, void *udata);
+static herr_t H5HF__sect_single_shrink(H5FS_section_info_t **_sect, void *udata);
+static herr_t H5HF__sect_single_valid(const H5FS_section_class_t *cls, const H5FS_section_info_t *sect);
/* 'row' section routines */
-static H5HF_free_section_t *H5HF__sect_row_create(haddr_t sect_off,
- hsize_t sect_size, hbool_t is_first, unsigned row, unsigned col,
- unsigned nentries, H5HF_free_section_t *under_sect);
-static herr_t H5HF__sect_row_first(H5HF_hdr_t *hdr, H5HF_free_section_t *sect);
-static herr_t H5HF__sect_row_parent_removed(H5HF_free_section_t *sect);
-static herr_t H5HF__sect_row_from_single(H5HF_hdr_t *hdr,
- H5HF_free_section_t *sect, H5HF_direct_t *dblock);
+static H5HF_free_section_t *H5HF__sect_row_create(haddr_t sect_off, hsize_t sect_size, hbool_t is_first,
+ unsigned row, unsigned col, unsigned nentries,
+ H5HF_free_section_t *under_sect);
+static herr_t H5HF__sect_row_first(H5HF_hdr_t *hdr, H5HF_free_section_t *sect);
+static herr_t H5HF__sect_row_parent_removed(H5HF_free_section_t *sect);
+static herr_t H5HF__sect_row_from_single(H5HF_hdr_t *hdr, H5HF_free_section_t *sect, H5HF_direct_t *dblock);
static herr_t H5HF__sect_row_free_real(H5HF_free_section_t *sect);
/* 'row' section callbacks */
static herr_t H5HF__sect_row_init_cls(H5FS_section_class_t *cls, void *udata);
static herr_t H5HF__sect_row_term_cls(H5FS_section_class_t *cls);
-static herr_t H5HF__sect_row_serialize(const H5FS_section_class_t *cls,
- const H5FS_section_info_t *sect, uint8_t *buf);
-static H5FS_section_info_t *H5HF__sect_row_deserialize(const H5FS_section_class_t *cls,
- const uint8_t *buf, haddr_t sect_addr, hsize_t sect_size,
- unsigned *des_flags);
-static htri_t H5HF__sect_row_can_merge(const H5FS_section_info_t *sect1,
- const H5FS_section_info_t *sect2, void *udata);
-static herr_t H5HF__sect_row_merge(H5FS_section_info_t **sect1,
- H5FS_section_info_t *sect2, void *udata);
-static htri_t H5HF__sect_row_can_shrink(const H5FS_section_info_t *sect,
- void *udata);
-static herr_t H5HF__sect_row_shrink(H5FS_section_info_t **sect,
- void *udata);
+static herr_t H5HF__sect_row_serialize(const H5FS_section_class_t *cls, const H5FS_section_info_t *sect,
+ uint8_t *buf);
+static H5FS_section_info_t *H5HF__sect_row_deserialize(const H5FS_section_class_t *cls, const uint8_t *buf,
+ haddr_t sect_addr, hsize_t sect_size,
+ unsigned *des_flags);
+static htri_t H5HF__sect_row_can_merge(const H5FS_section_info_t *sect1, const H5FS_section_info_t *sect2,
+ void *udata);
+static herr_t H5HF__sect_row_merge(H5FS_section_info_t **sect1, H5FS_section_info_t *sect2, void *udata);
+static htri_t H5HF__sect_row_can_shrink(const H5FS_section_info_t *sect, void *udata);
+static herr_t H5HF__sect_row_shrink(H5FS_section_info_t **sect, void *udata);
static herr_t H5HF__sect_row_free(H5FS_section_info_t *sect);
-static herr_t H5HF__sect_row_valid(const H5FS_section_class_t *cls,
- const H5FS_section_info_t *sect);
-static herr_t H5HF__sect_row_debug(const H5FS_section_info_t *sect,
- FILE *stream, int indent, int fwidth);
+static herr_t H5HF__sect_row_valid(const H5FS_section_class_t *cls, const H5FS_section_info_t *sect);
+static herr_t H5HF__sect_row_debug(const H5FS_section_info_t *sect, FILE *stream, int indent, int fwidth);
/* 'indirect' section routines */
-static H5HF_free_section_t *H5HF__sect_indirect_new(H5HF_hdr_t *hdr,
- haddr_t sect_off, hsize_t sect_size,
- H5HF_indirect_t *iblock, hsize_t iblock_off,
- unsigned row, unsigned col, unsigned nentries);
-static herr_t H5HF__sect_indirect_init_rows(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
- hbool_t first_child, H5HF_free_section_t **first_row_sect,
- unsigned space_flags, unsigned start_row, unsigned start_col,
- unsigned end_row, unsigned end_col);
-static H5HF_free_section_t *H5HF__sect_indirect_for_row(H5HF_hdr_t *hdr,
- H5HF_indirect_t *iblock, H5HF_free_section_t *row_sect);
-static herr_t H5HF__sect_indirect_decr(H5HF_free_section_t *sect);
-static herr_t H5HF__sect_indirect_revive_row(H5HF_hdr_t *hdr,
- H5HF_free_section_t *sect);
-static herr_t H5HF__sect_indirect_revive(H5HF_hdr_t *hdr,
- H5HF_free_section_t *sect, H5HF_indirect_t *sect_iblock);
-static herr_t H5HF__sect_indirect_reduce_row(H5HF_hdr_t *hdr,
- H5HF_free_section_t *row_sect, hbool_t *alloc_from_start);
-static herr_t H5HF__sect_indirect_reduce(H5HF_hdr_t *hdr,
- H5HF_free_section_t *sect, unsigned child_entry);
-static herr_t H5HF__sect_indirect_first(H5HF_hdr_t *hdr,
- H5HF_free_section_t *sect);
+static H5HF_free_section_t *H5HF__sect_indirect_new(H5HF_hdr_t *hdr, haddr_t sect_off, hsize_t sect_size,
+ H5HF_indirect_t *iblock, hsize_t iblock_off, unsigned row,
+ unsigned col, unsigned nentries);
+static herr_t H5HF__sect_indirect_init_rows(H5HF_hdr_t *hdr, H5HF_free_section_t *sect, hbool_t first_child,
+ H5HF_free_section_t **first_row_sect, unsigned space_flags,
+ unsigned start_row, unsigned start_col, unsigned end_row,
+ unsigned end_col);
+static H5HF_free_section_t *H5HF__sect_indirect_for_row(H5HF_hdr_t *hdr, H5HF_indirect_t *iblock,
+ H5HF_free_section_t *row_sect);
+static herr_t H5HF__sect_indirect_decr(H5HF_free_section_t *sect);
+static herr_t H5HF__sect_indirect_revive_row(H5HF_hdr_t *hdr, H5HF_free_section_t *sect);
+static herr_t H5HF__sect_indirect_revive(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
+ H5HF_indirect_t *sect_iblock);
+static herr_t H5HF__sect_indirect_reduce_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect,
+ hbool_t *alloc_from_start);
+static herr_t H5HF__sect_indirect_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect, unsigned child_entry);
+static herr_t H5HF__sect_indirect_first(H5HF_hdr_t *hdr, H5HF_free_section_t *sect);
static hbool_t H5HF__sect_indirect_is_first(H5HF_free_section_t *sect);
-static H5HF_indirect_t * H5HF__sect_indirect_get_iblock(H5HF_free_section_t *sect);
-static hsize_t H5HF__sect_indirect_iblock_off(const H5HF_free_section_t *sect);
+static H5HF_indirect_t * H5HF__sect_indirect_get_iblock(H5HF_free_section_t *sect);
+static hsize_t H5HF__sect_indirect_iblock_off(const H5HF_free_section_t *sect);
static H5HF_free_section_t *H5HF__sect_indirect_top(H5HF_free_section_t *sect);
-static herr_t H5HF__sect_indirect_merge_row(H5HF_hdr_t *hdr,
- H5HF_free_section_t *sect1, H5HF_free_section_t *sect2);
-static herr_t H5HF__sect_indirect_build_parent(H5HF_hdr_t *hdr, H5HF_free_section_t *sect);
-static herr_t H5HF__sect_indirect_shrink(H5HF_hdr_t *hdr,
- H5HF_free_section_t *sect);
-static herr_t H5HF__sect_indirect_serialize(H5HF_hdr_t *hdr,
- const H5HF_free_section_t *sect, uint8_t *buf);
-static H5FS_section_info_t *H5HF__sect_indirect_deserialize(H5HF_hdr_t *hdr,
- const uint8_t *buf, haddr_t sect_addr, hsize_t sect_size, unsigned *des_flags);
-static herr_t H5HF__sect_indirect_free(H5HF_free_section_t *sect);
-static herr_t H5HF__sect_indirect_valid(const H5HF_hdr_t *hdr,
- const H5HF_free_section_t *sect);
-static herr_t H5HF__sect_indirect_debug(const H5HF_free_section_t *sect,
- FILE *stream, int indent, int fwidth);
+static herr_t H5HF__sect_indirect_merge_row(H5HF_hdr_t *hdr, H5HF_free_section_t *sect1,
+ H5HF_free_section_t *sect2);
+static herr_t H5HF__sect_indirect_build_parent(H5HF_hdr_t *hdr, H5HF_free_section_t *sect);
+static herr_t H5HF__sect_indirect_shrink(H5HF_hdr_t *hdr, H5HF_free_section_t *sect);
+static herr_t H5HF__sect_indirect_serialize(H5HF_hdr_t *hdr, const H5HF_free_section_t *sect, uint8_t *buf);
+static H5FS_section_info_t *H5HF__sect_indirect_deserialize(H5HF_hdr_t *hdr, const uint8_t *buf,
+ haddr_t sect_addr, hsize_t sect_size,
+ unsigned *des_flags);
+static herr_t H5HF__sect_indirect_free(H5HF_free_section_t *sect);
+static herr_t H5HF__sect_indirect_valid(const H5HF_hdr_t *hdr, const H5HF_free_section_t *sect);
+static herr_t H5HF__sect_indirect_debug(const H5HF_free_section_t *sect, FILE *stream, int indent,
+ int fwidth);
/* 'indirect' section callbacks */
static herr_t H5HF__sect_indirect_init_cls(H5FS_section_class_t *cls, void *udata);
static herr_t H5HF__sect_indirect_term_cls(H5FS_section_class_t *cls);
-
/*********************/
/* Package Variables */
/*********************/
@@ -183,27 +158,27 @@ static herr_t H5HF__sect_indirect_term_cls(H5FS_section_class_t *cls);
/* Class info for "single" free space sections */
H5FS_section_class_t H5HF_FSPACE_SECT_CLS_SINGLE[1] = {{
/* Class variables */
- H5HF_FSPACE_SECT_SINGLE, /* Section type */
- 0, /* Extra serialized size */
- H5FS_CLS_MERGE_SYM, /* Class flags */
- NULL, /* Class private info */
+ H5HF_FSPACE_SECT_SINGLE, /* Section type */
+ 0, /* Extra serialized size */
+ H5FS_CLS_MERGE_SYM, /* Class flags */
+ NULL, /* Class private info */
/* Class methods */
- NULL, /* Initialize section class */
- NULL, /* Terminate section class */
+ NULL, /* Initialize section class */
+ NULL, /* Terminate section class */
/* Object methods */
- H5HF__sect_single_add, /* Add section */
- NULL, /* Serialize section */
- H5HF__sect_single_deserialize, /* Deserialize section */
- H5HF__sect_single_can_merge, /* Can sections merge? */
- H5HF__sect_single_merge, /* Merge sections */
- H5HF__sect_single_can_shrink, /* Can section shrink container?*/
- H5HF__sect_single_shrink, /* Shrink container w/section */
- H5HF__sect_single_free, /* Free section */
- H5HF__sect_single_valid, /* Check validity of section */
- NULL, /* Split section node for alignment */
- NULL, /* Dump debugging for section */
+ H5HF__sect_single_add, /* Add section */
+ NULL, /* Serialize section */
+ H5HF__sect_single_deserialize, /* Deserialize section */
+ H5HF__sect_single_can_merge, /* Can sections merge? */
+ H5HF__sect_single_merge, /* Merge sections */
+ H5HF__sect_single_can_shrink, /* Can section shrink container?*/
+ H5HF__sect_single_shrink, /* Shrink container w/section */
+ H5HF__sect_single_free, /* Free section */
+ H5HF__sect_single_valid, /* Check validity of section */
+ NULL, /* Split section node for alignment */
+ NULL, /* Dump debugging for section */
}};
/* Class info for "first row" free space sections */
@@ -212,53 +187,53 @@ H5FS_section_class_t H5HF_FSPACE_SECT_CLS_SINGLE[1] = {{
*/
H5FS_section_class_t H5HF_FSPACE_SECT_CLS_FIRST_ROW[1] = {{
/* Class variables */
- H5HF_FSPACE_SECT_FIRST_ROW, /* Section type */
- 0, /* Extra serialized size */
- H5FS_CLS_MERGE_SYM, /* Class flags */
- NULL, /* Class private info */
+ H5HF_FSPACE_SECT_FIRST_ROW, /* Section type */
+ 0, /* Extra serialized size */
+ H5FS_CLS_MERGE_SYM, /* Class flags */
+ NULL, /* Class private info */
/* Class methods */
- H5HF__sect_row_init_cls, /* Initialize section class */
- H5HF__sect_row_term_cls, /* Terminate section class */
+ H5HF__sect_row_init_cls, /* Initialize section class */
+ H5HF__sect_row_term_cls, /* Terminate section class */
/* Object methods */
- NULL, /* Add section */
- H5HF__sect_row_serialize, /* Serialize section */
- H5HF__sect_row_deserialize, /* Deserialize section */
- H5HF__sect_row_can_merge, /* Can sections merge? */
- H5HF__sect_row_merge, /* Merge sections */
- H5HF__sect_row_can_shrink, /* Can section shrink container?*/
- H5HF__sect_row_shrink, /* Shrink container w/section */
- H5HF__sect_row_free, /* Free section */
- H5HF__sect_row_valid, /* Check validity of section */
- NULL, /* Split section node for alignment */
- H5HF__sect_row_debug, /* Dump debugging for section */
+ NULL, /* Add section */
+ H5HF__sect_row_serialize, /* Serialize section */
+ H5HF__sect_row_deserialize, /* Deserialize section */
+ H5HF__sect_row_can_merge, /* Can sections merge? */
+ H5HF__sect_row_merge, /* Merge sections */
+ H5HF__sect_row_can_shrink, /* Can section shrink container?*/
+ H5HF__sect_row_shrink, /* Shrink container w/section */
+ H5HF__sect_row_free, /* Free section */
+ H5HF__sect_row_valid, /* Check validity of section */
+ NULL, /* Split section node for alignment */
+ H5HF__sect_row_debug, /* Dump debugging for section */
}};
/* Class info for "normal row" free space sections */
H5FS_section_class_t H5HF_FSPACE_SECT_CLS_NORMAL_ROW[1] = {{
/* Class variables */
- H5HF_FSPACE_SECT_NORMAL_ROW, /* Section type */
- 0, /* Extra serialized size */
- H5FS_CLS_MERGE_SYM|H5FS_CLS_SEPAR_OBJ|H5FS_CLS_GHOST_OBJ, /* Class flags */
- NULL, /* Class private info */
+ H5HF_FSPACE_SECT_NORMAL_ROW, /* Section type */
+ 0, /* Extra serialized size */
+ H5FS_CLS_MERGE_SYM | H5FS_CLS_SEPAR_OBJ | H5FS_CLS_GHOST_OBJ, /* Class flags */
+ NULL, /* Class private info */
/* Class methods */
- H5HF__sect_row_init_cls, /* Initialize section class */
- H5HF__sect_row_term_cls, /* Terminate section class */
+ H5HF__sect_row_init_cls, /* Initialize section class */
+ H5HF__sect_row_term_cls, /* Terminate section class */
/* Object methods */
- NULL, /* Add section */
- NULL, /* Serialize section */
- NULL, /* Deserialize section */
- NULL, /* Can sections merge? */
- NULL, /* Merge sections */
- NULL, /* Can section shrink container?*/
- NULL, /* Shrink container w/section */
- H5HF__sect_row_free, /* Free section */
- H5HF__sect_row_valid, /* Check validity of section */
- NULL, /* Split section node for alignment */
- H5HF__sect_row_debug, /* Dump debugging for section */
+ NULL, /* Add section */
+ NULL, /* Serialize section */
+ NULL, /* Deserialize section */
+ NULL, /* Can sections merge? */
+ NULL, /* Merge sections */
+ NULL, /* Can section shrink container?*/
+ NULL, /* Shrink container w/section */
+ H5HF__sect_row_free, /* Free section */
+ H5HF__sect_row_valid, /* Check validity of section */
+ NULL, /* Split section node for alignment */
+ H5HF__sect_row_debug, /* Dump debugging for section */
}};
/* Class info for "indirect" free space sections */
@@ -267,44 +242,40 @@ H5FS_section_class_t H5HF_FSPACE_SECT_CLS_NORMAL_ROW[1] = {{
*/
H5FS_section_class_t H5HF_FSPACE_SECT_CLS_INDIRECT[1] = {{
/* Class variables */
- H5HF_FSPACE_SECT_INDIRECT, /* Section type */
- 0, /* Extra serialized size */
- H5FS_CLS_MERGE_SYM|H5FS_CLS_GHOST_OBJ, /* Class flags */
- NULL, /* Class private info */
+ H5HF_FSPACE_SECT_INDIRECT, /* Section type */
+ 0, /* Extra serialized size */
+ H5FS_CLS_MERGE_SYM | H5FS_CLS_GHOST_OBJ, /* Class flags */
+ NULL, /* Class private info */
/* Class methods */
- H5HF__sect_indirect_init_cls, /* Initialize section class */
- H5HF__sect_indirect_term_cls, /* Terminate section class */
+ H5HF__sect_indirect_init_cls, /* Initialize section class */
+ H5HF__sect_indirect_term_cls, /* Terminate section class */
/* Object methods */
- NULL, /* Add section */
- NULL, /* Serialize section */
- NULL, /* Deserialize section */
- NULL, /* Can sections merge? */
- NULL, /* Merge sections */
- NULL, /* Can section shrink container?*/
- NULL, /* Shrink container w/section */
- NULL, /* Free section */
- NULL, /* Check validity of section */
- NULL, /* Split section node for alignment */
- NULL, /* Dump debugging for section */
+ NULL, /* Add section */
+ NULL, /* Serialize section */
+ NULL, /* Deserialize section */
+ NULL, /* Can sections merge? */
+ NULL, /* Merge sections */
+ NULL, /* Can section shrink container?*/
+ NULL, /* Shrink container w/section */
+ NULL, /* Free section */
+ NULL, /* Check validity of section */
+ NULL, /* Split section node for alignment */
+ NULL, /* Dump debugging for section */
}};
/* Declare a free list to manage the H5HF_free_section_t struct */
H5FL_DEFINE(H5HF_free_section_t);
-
/*****************************/
/* Library Private Variables */
/*****************************/
-
/*******************/
/* Local Variables */
/*******************/
-
-
/*-------------------------------------------------------------------------
* Function: H5FS__sect_init_cls
*
@@ -321,8 +292,8 @@ H5FL_DEFINE(H5HF_free_section_t);
static herr_t
H5FS__sect_init_cls(H5FS_section_class_t *cls, H5HF_hdr_t *hdr)
{
- H5HF_sect_private_t *cls_prvt; /* Pointer to class private info */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_sect_private_t *cls_prvt; /* Pointer to class private info */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -333,20 +304,19 @@ H5FS__sect_init_cls(H5FS_section_class_t *cls, H5HF_hdr_t *hdr)
/* Allocate & initialize the class-private (i.e. private shared) information
* for this type of section
*/
- if(NULL == (cls_prvt = (H5HF_sect_private_t *)H5MM_malloc(sizeof(H5HF_sect_private_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
- cls_prvt->hdr = hdr;
+ if (NULL == (cls_prvt = (H5HF_sect_private_t *)H5MM_malloc(sizeof(H5HF_sect_private_t))))
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
+ cls_prvt->hdr = hdr;
cls->cls_private = cls_prvt;
/* Increment reference count on heap header */
- if(H5HF__hdr_incr(hdr) < 0)
+ if (H5HF__hdr_incr(hdr) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTINC, FAIL, "can't increment reference count on shared heap header")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5FS__sect_init_cls() */
-
/*-------------------------------------------------------------------------
* Function: H5FS__sect_term_cls
*
@@ -363,8 +333,8 @@ done:
static herr_t
H5FS__sect_term_cls(H5FS_section_class_t *cls)
{
- H5HF_sect_private_t *cls_prvt; /* Pointer to class private info */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_sect_private_t *cls_prvt; /* Pointer to class private info */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -375,7 +345,7 @@ H5FS__sect_term_cls(H5FS_section_class_t *cls)
cls_prvt = (H5HF_sect_private_t *)cls->cls_private;
/* Decrement reference count on heap header */
- if(H5HF__hdr_decr(cls_prvt->hdr) < 0)
+ if (H5HF__hdr_decr(cls_prvt->hdr) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTDEC, FAIL, "can't decrement reference count on shared heap header")
/* Free the class private information */
@@ -385,7 +355,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5FS__sect_term_cls() */
-
/*-------------------------------------------------------------------------
* Function: H5FS__sect_node_new
*
@@ -401,11 +370,10 @@ done:
*-------------------------------------------------------------------------
*/
static H5HF_free_section_t *
-H5FS__sect_node_new(unsigned sect_type, haddr_t sect_addr, hsize_t sect_size,
- H5FS_section_state_t sect_state)
+H5FS__sect_node_new(unsigned sect_type, haddr_t sect_addr, hsize_t sect_size, H5FS_section_state_t sect_state)
{
- H5HF_free_section_t *new_sect; /* New section */
- H5HF_free_section_t *ret_value = NULL; /* Return value */
+ H5HF_free_section_t *new_sect; /* New section */
+ H5HF_free_section_t *ret_value = NULL; /* Return value */
FUNC_ENTER_STATIC
@@ -413,15 +381,16 @@ H5FS__sect_node_new(unsigned sect_type, haddr_t sect_addr, hsize_t sect_size,
HDassert(H5F_addr_defined(sect_addr));
/* Create free list section node */
- if(NULL == (new_sect = H5FL_MALLOC(H5HF_free_section_t)))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed for direct block free list section")
+ if (NULL == (new_sect = H5FL_MALLOC(H5HF_free_section_t)))
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL,
+ "memory allocation failed for direct block free list section")
/* Set the information passed in */
new_sect->sect_info.addr = sect_addr;
new_sect->sect_info.size = sect_size;
/* Set the section's class & state */
- new_sect->sect_info.type = sect_type;
+ new_sect->sect_info.type = sect_type;
new_sect->sect_info.state = sect_state;
/* Set return value */
@@ -431,7 +400,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5FS__sect_node_new() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_node_free
*
@@ -449,25 +417,25 @@ done:
static herr_t
H5HF__sect_node_free(H5HF_free_section_t *sect, H5HF_indirect_t *iblock)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
HDassert(sect);
/* Release indirect block, if there was one */
- if(iblock)
- if(H5HF__iblock_decr(iblock) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTDEC, FAIL, "can't decrement reference count on section's indirect block")
+ if (iblock)
+ if (H5HF__iblock_decr(iblock) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTDEC, FAIL,
+ "can't decrement reference count on section's indirect block")
/* Release the section */
sect = H5FL_FREE(H5HF_free_section_t, sect);
done:
FUNC_LEAVE_NOAPI(ret_value)
-} /* H5HF__sect_node_free() */
+} /* H5HF__sect_node_free() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_new
*
@@ -481,11 +449,10 @@ done:
*-------------------------------------------------------------------------
*/
H5HF_free_section_t *
-H5HF__sect_single_new(hsize_t sect_off, size_t sect_size,
- H5HF_indirect_t *parent, unsigned par_entry)
+H5HF__sect_single_new(hsize_t sect_off, size_t sect_size, H5HF_indirect_t *parent, unsigned par_entry)
{
- H5HF_free_section_t *sect = NULL; /* 'Single' free space section to add */
- H5HF_free_section_t *ret_value = NULL; /* Return value */
+ H5HF_free_section_t *sect = NULL; /* 'Single' free space section to add */
+ H5HF_free_section_t *ret_value = NULL; /* Return value */
FUNC_ENTER_PACKAGE
@@ -495,14 +462,16 @@ H5HF__sect_single_new(hsize_t sect_off, size_t sect_size,
HDassert(sect_size);
/* Create free space section node */
- if(NULL == (sect = H5FS__sect_node_new(H5HF_FSPACE_SECT_SINGLE, sect_off, (hsize_t)sect_size, H5FS_SECT_LIVE)))
+ if (NULL ==
+ (sect = H5FS__sect_node_new(H5HF_FSPACE_SECT_SINGLE, sect_off, (hsize_t)sect_size, H5FS_SECT_LIVE)))
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed for single section")
/* Set the 'single' specific fields */
sect->u.single.parent = parent;
- if(sect->u.single.parent) {
- if(H5HF__iblock_incr(sect->u.single.parent) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTINC, NULL, "can't increment reference count on shared indirect block")
+ if (sect->u.single.parent) {
+ if (H5HF__iblock_incr(sect->u.single.parent) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTINC, NULL,
+ "can't increment reference count on shared indirect block")
} /* end if */
sect->u.single.par_entry = par_entry;
@@ -510,7 +479,7 @@ H5HF__sect_single_new(hsize_t sect_off, size_t sect_size,
ret_value = sect;
done:
- if(!ret_value && sect) {
+ if (!ret_value && sect) {
/* Release the section */
sect = H5FL_FREE(H5HF_free_section_t, sect);
} /* end if */
@@ -518,7 +487,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_single_new() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_locate_parent
*
@@ -532,13 +500,12 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5HF__sect_single_locate_parent(H5HF_hdr_t *hdr, hbool_t refresh,
- H5HF_free_section_t *sect)
+H5HF__sect_single_locate_parent(H5HF_hdr_t *hdr, hbool_t refresh, H5HF_free_section_t *sect)
{
- H5HF_indirect_t *sec_iblock; /* Pointer to section indirect block */
- unsigned sec_entry; /* Entry within section indirect block */
- hbool_t did_protect; /* Whether we protected the indirect block or not */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_indirect_t *sec_iblock; /* Pointer to section indirect block */
+ unsigned sec_entry; /* Entry within section indirect block */
+ hbool_t did_protect; /* Whether we protected the indirect block or not */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -550,28 +517,30 @@ H5HF__sect_single_locate_parent(H5HF_hdr_t *hdr, hbool_t refresh,
HDassert(sect);
/* Look up indirect block containing direct blocks for range */
- if(H5HF__man_dblock_locate(hdr, sect->sect_info.addr, &sec_iblock, &sec_entry, &did_protect, H5AC__READ_ONLY_FLAG) < 0)
+ if (H5HF__man_dblock_locate(hdr, sect->sect_info.addr, &sec_iblock, &sec_entry, &did_protect,
+ H5AC__READ_ONLY_FLAG) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTCOMPUTE, FAIL, "can't compute row & column of section")
/* Increment reference count on indirect block that free section is in */
- if(H5HF__iblock_incr(sec_iblock) < 0)
+ if (H5HF__iblock_incr(sec_iblock) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTINC, FAIL, "can't increment reference count on shared indirect block")
/* Check for refreshing existing parent information */
- if(refresh) {
- if(sect->u.single.parent) {
+ if (refresh) {
+ if (sect->u.single.parent) {
/* Release hold on previous parent indirect block */
- if(H5HF__iblock_decr(sect->u.single.parent) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTDEC, FAIL, "can't decrement reference count on section's indirect block")
+ if (H5HF__iblock_decr(sect->u.single.parent) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTDEC, FAIL,
+ "can't decrement reference count on section's indirect block")
} /* end if */
- } /* end if */
+ } /* end if */
/* Set the information for the section */
- sect->u.single.parent = sec_iblock;
+ sect->u.single.parent = sec_iblock;
sect->u.single.par_entry = sec_entry;
/* Unlock indirect block */
- if(H5HF__man_iblock_unprotect(sec_iblock, H5AC__NO_FLAGS_SET, did_protect) < 0)
+ if (H5HF__man_iblock_unprotect(sec_iblock, H5AC__NO_FLAGS_SET, did_protect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTUNPROTECT, FAIL, "unable to release fractal heap indirect block")
sec_iblock = NULL;
@@ -579,7 +548,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_single_locate_parent() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_revive
*
@@ -595,7 +563,7 @@ done:
herr_t
H5HF__sect_single_revive(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE
@@ -607,15 +575,15 @@ H5HF__sect_single_revive(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
HDassert(sect->sect_info.state == H5FS_SECT_SERIALIZED);
/* Check for root direct block */
- if(hdr->man_dtable.curr_root_rows == 0) {
+ if (hdr->man_dtable.curr_root_rows == 0) {
/* Set the information for the section */
HDassert(H5F_addr_defined(hdr->man_dtable.table_addr));
- sect->u.single.parent = NULL;
+ sect->u.single.parent = NULL;
sect->u.single.par_entry = 0;
} /* end if */
else {
/* Look up indirect block information for section */
- if(H5HF__sect_single_locate_parent(hdr, FALSE, sect) < 0)
+ if (H5HF__sect_single_locate_parent(hdr, FALSE, sect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTGET, FAIL, "can't get section's parent info")
} /* end else */
@@ -626,7 +594,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_single_revive() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_dblock_info
*
@@ -640,8 +607,8 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5HF__sect_single_dblock_info(H5HF_hdr_t *hdr, const H5HF_free_section_t *sect,
- haddr_t *dblock_addr, size_t *dblock_size)
+H5HF__sect_single_dblock_info(H5HF_hdr_t *hdr, const H5HF_free_section_t *sect, haddr_t *dblock_addr,
+ size_t *dblock_size)
{
FUNC_ENTER_PACKAGE_NOERR
@@ -656,22 +623,22 @@ H5HF__sect_single_dblock_info(H5HF_hdr_t *hdr, const H5HF_free_section_t *sect,
HDassert(dblock_size);
/* Check for root direct block */
- if(hdr->man_dtable.curr_root_rows == 0) {
+ if (hdr->man_dtable.curr_root_rows == 0) {
/* Retrieve direct block info from heap header */
HDassert(H5F_addr_defined(hdr->man_dtable.table_addr));
- *dblock_addr = hdr->man_dtable.table_addr;
- *dblock_size = hdr->man_dtable.cparam.start_block_size;
+ *dblock_addr = hdr->man_dtable.table_addr;
+ *dblock_size = hdr->man_dtable.cparam.start_block_size;
} /* end if */
else {
/* Retrieve direct block info from parent indirect block */
- *dblock_addr = sect->u.single.parent->ents[sect->u.single.par_entry].addr;
- *dblock_size = hdr->man_dtable.row_block_size[sect->u.single.par_entry / hdr->man_dtable.cparam.width];
+ *dblock_addr = sect->u.single.parent->ents[sect->u.single.par_entry].addr;
+ *dblock_size =
+ hdr->man_dtable.row_block_size[sect->u.single.par_entry / hdr->man_dtable.cparam.width];
} /* end else */
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5HF__sect_single_dblock_info() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_reduce
*
@@ -689,7 +656,7 @@ H5HF__sect_single_dblock_info(H5HF_hdr_t *hdr, const H5HF_free_section_t *sect,
herr_t
H5HF__sect_single_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect, size_t amt)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE
@@ -702,9 +669,9 @@ H5HF__sect_single_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect, size_t amt)
HDassert(sect->sect_info.state == H5FS_SECT_LIVE);
/* Check for eliminating the section */
- if(sect->sect_info.size == amt) {
+ if (sect->sect_info.size == amt) {
/* Free single section */
- if(H5HF__sect_single_free((H5FS_section_info_t *)sect) < 0)
+ if (H5HF__sect_single_free((H5FS_section_info_t *)sect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free single section node")
} /* end if */
else {
@@ -713,7 +680,7 @@ H5HF__sect_single_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect, size_t amt)
sect->sect_info.size -= amt;
/* Re-insert section node into heap's free space */
- if(H5HF__space_add(hdr, sect, 0) < 0)
+ if (H5HF__space_add(hdr, sect, 0) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't re-add single section to free space manager")
} /* end else */
@@ -721,7 +688,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_single_reduce() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_full_dblock
*
@@ -742,10 +708,10 @@ done:
static herr_t
H5HF__sect_single_full_dblock(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
{
- haddr_t dblock_addr; /* Section's direct block's address */
- size_t dblock_size; /* Section's direct block's size */
- size_t dblock_overhead; /* Direct block's overhead */
- herr_t ret_value = SUCCEED; /* Return value */
+ haddr_t dblock_addr; /* Section's direct block's address */
+ size_t dblock_size; /* Section's direct block's size */
+ size_t dblock_overhead; /* Direct block's overhead */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -755,35 +721,35 @@ H5HF__sect_single_full_dblock(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
HDassert(hdr);
/* Retrieve direct block address from section */
- if(H5HF__sect_single_dblock_info(hdr, sect, &dblock_addr, &dblock_size) < 0)
+ if (H5HF__sect_single_dblock_info(hdr, sect, &dblock_addr, &dblock_size) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTGET, FAIL, "can't retrieve direct block information")
/* Check for section occupying entire direct block */
/* (and not the root direct block) */
dblock_overhead = H5HF_MAN_ABS_DIRECT_OVERHEAD(hdr);
- if((dblock_size - dblock_overhead) == sect->sect_info.size &&
- hdr->man_dtable.curr_root_rows > 0) {
- H5HF_direct_t *dblock; /* Pointer to direct block for section */
- hbool_t parent_removed; /* Whether the direct block parent was removed from the file */
+ if ((dblock_size - dblock_overhead) == sect->sect_info.size && hdr->man_dtable.curr_root_rows > 0) {
+ H5HF_direct_t *dblock; /* Pointer to direct block for section */
+ hbool_t parent_removed; /* Whether the direct block parent was removed from the file */
- if(NULL == (dblock = H5HF__man_dblock_protect(hdr, dblock_addr, dblock_size, sect->u.single.parent, sect->u.single.par_entry, H5AC__NO_FLAGS_SET)))
+ if (NULL == (dblock = H5HF__man_dblock_protect(hdr, dblock_addr, dblock_size, sect->u.single.parent,
+ sect->u.single.par_entry, H5AC__NO_FLAGS_SET)))
HGOTO_ERROR(H5E_HEAP, H5E_CANTPROTECT, FAIL, "unable to load fractal heap direct block")
HDassert(H5F_addr_eq(dblock->block_off + dblock_overhead, sect->sect_info.addr));
/* Convert 'single' section into 'row' section */
- if(H5HF__sect_row_from_single(hdr, sect, dblock) < 0)
+ if (H5HF__sect_row_from_single(hdr, sect, dblock) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTCONVERT, FAIL, "can't convert single section into row section")
/* Destroy direct block */
- if(H5HF__man_dblock_destroy(hdr, dblock, dblock_addr, &parent_removed) < 0)
+ if (H5HF__man_dblock_destroy(hdr, dblock, dblock_addr, &parent_removed) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't release direct block")
dblock = NULL;
/* If the parent for this direct block was removed and the indirect
* section is still "live", switch it to the "serialized" state.
*/
- if(parent_removed && H5FS_SECT_LIVE == sect->u.row.under->sect_info.state)
- if(H5HF__sect_row_parent_removed(sect) < 0)
+ if (parent_removed && H5FS_SECT_LIVE == sect->u.row.under->sect_info.state)
+ if (H5HF__sect_row_parent_removed(sect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTUPDATE, FAIL, "can't update section info")
} /* end if */
@@ -791,7 +757,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_single_full_dblock() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_add
*
@@ -809,17 +774,17 @@ done:
static herr_t
H5HF__sect_single_add(H5FS_section_info_t **_sect, unsigned *flags, void *_udata)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
/* Don't need to check section if we are deserializing, because it should
* have already been checked when it was first added
*/
- if(!(*flags & H5FS_ADD_DESERIALIZING)) {
- H5HF_free_section_t **sect = (H5HF_free_section_t **)_sect; /* Fractal heap free section */
- H5HF_sect_add_ud_t *udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
- H5HF_hdr_t *hdr = udata->hdr; /* Fractal heap header */
+ if (!(*flags & H5FS_ADD_DESERIALIZING)) {
+ H5HF_free_section_t **sect = (H5HF_free_section_t **)_sect; /* Fractal heap free section */
+ H5HF_sect_add_ud_t * udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
+ H5HF_hdr_t * hdr = udata->hdr; /* Fractal heap header */
/* Sanity check */
HDassert(sect);
@@ -827,14 +792,14 @@ H5HF__sect_single_add(H5FS_section_info_t **_sect, unsigned *flags, void *_udata
/* Check if single section covers entire direct block it's in */
/* (converts to row section possibly) */
- if(H5HF__sect_single_full_dblock(hdr, (*sect)) < 0)
+ if (H5HF__sect_single_full_dblock(hdr, (*sect)) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTCONVERT, FAIL, "can't check/convert single section")
/* Set the "returned space" flag if the single section was changed
* into a row section, so the "merging & shrinking" algorithm
* gets executed in the free space manager
*/
- if((*sect)->sect_info.type != H5HF_FSPACE_SECT_SINGLE)
+ if ((*sect)->sect_info.type != H5HF_FSPACE_SECT_SINGLE)
*flags |= H5FS_ADD_RETURNED_SPACE;
} /* end if */
@@ -842,7 +807,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_single_add() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_deserialize
*
@@ -858,11 +822,11 @@ done:
*/
static H5FS_section_info_t *
H5HF__sect_single_deserialize(const H5FS_section_class_t H5_ATTR_UNUSED *cls,
- const uint8_t H5_ATTR_UNUSED *buf, haddr_t sect_addr,
- hsize_t sect_size, unsigned H5_ATTR_UNUSED *des_flags)
+ const uint8_t H5_ATTR_UNUSED *buf, haddr_t sect_addr, hsize_t sect_size,
+ unsigned H5_ATTR_UNUSED *des_flags)
{
- H5HF_free_section_t *new_sect; /* New section */
- H5FS_section_info_t *ret_value = NULL; /* Return value */
+ H5HF_free_section_t *new_sect; /* New section */
+ H5FS_section_info_t *ret_value = NULL; /* Return value */
FUNC_ENTER_STATIC
@@ -871,7 +835,8 @@ H5HF__sect_single_deserialize(const H5FS_section_class_t H5_ATTR_UNUSED *cls,
HDassert(sect_size);
/* Create free list section node */
- if(NULL == (new_sect = H5FS__sect_node_new(H5HF_FSPACE_SECT_SINGLE, sect_addr, sect_size, H5FS_SECT_SERIALIZED)))
+ if (NULL ==
+ (new_sect = H5FS__sect_node_new(H5HF_FSPACE_SECT_SINGLE, sect_addr, sect_size, H5FS_SECT_SERIALIZED)))
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "allocation failed for direct block free list section")
/* Set return value */
@@ -881,7 +846,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_single_deserialize() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_can_merge
*
@@ -899,19 +863,19 @@ done:
*-------------------------------------------------------------------------
*/
static htri_t
-H5HF__sect_single_can_merge(const H5FS_section_info_t *_sect1,
- const H5FS_section_info_t *_sect2, void H5_ATTR_UNUSED *_udata)
+H5HF__sect_single_can_merge(const H5FS_section_info_t *_sect1, const H5FS_section_info_t *_sect2,
+ void H5_ATTR_UNUSED *_udata)
{
- const H5HF_free_section_t *sect1 = (const H5HF_free_section_t *)_sect1; /* Fractal heap free section */
- const H5HF_free_section_t *sect2 = (const H5HF_free_section_t *)_sect2; /* Fractal heap free section */
- htri_t ret_value = FALSE; /* Return value */
+ const H5HF_free_section_t *sect1 = (const H5HF_free_section_t *)_sect1; /* Fractal heap free section */
+ const H5HF_free_section_t *sect2 = (const H5HF_free_section_t *)_sect2; /* Fractal heap free section */
+ htri_t ret_value = FALSE; /* Return value */
FUNC_ENTER_STATIC_NOERR
/* Check arguments. */
HDassert(sect1);
HDassert(sect2);
- HDassert(sect1->sect_info.type == sect2->sect_info.type); /* Checks "MERGE_SYM" flag */
+ HDassert(sect1->sect_info.type == sect2->sect_info.type); /* Checks "MERGE_SYM" flag */
HDassert(H5F_addr_lt(sect1->sect_info.addr, sect2->sect_info.addr));
/* Check if second section adjoins first section */
@@ -919,14 +883,13 @@ H5HF__sect_single_can_merge(const H5FS_section_info_t *_sect1,
* overhead at the beginning of a block, so no need to check if sections
* are actually within the same direct block)
*/
- if(H5F_addr_eq(sect1->sect_info.addr + sect1->sect_info.size, sect2->sect_info.addr))
+ if (H5F_addr_eq(sect1->sect_info.addr + sect1->sect_info.size, sect2->sect_info.addr))
HGOTO_DONE(TRUE)
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_single_can_merge() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_merge
*
@@ -944,14 +907,13 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5HF__sect_single_merge(H5FS_section_info_t **_sect1, H5FS_section_info_t *_sect2,
- void *_udata)
+H5HF__sect_single_merge(H5FS_section_info_t **_sect1, H5FS_section_info_t *_sect2, void *_udata)
{
- H5HF_free_section_t **sect1 = (H5HF_free_section_t **)_sect1; /* Fractal heap free section */
- H5HF_free_section_t *sect2 = (H5HF_free_section_t *)_sect2; /* Fractal heap free section */
- H5HF_sect_add_ud_t *udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
- H5HF_hdr_t *hdr = udata->hdr; /* Fractal heap header */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_free_section_t **sect1 = (H5HF_free_section_t **)_sect1; /* Fractal heap free section */
+ H5HF_free_section_t * sect2 = (H5HF_free_section_t *)_sect2; /* Fractal heap free section */
+ H5HF_sect_add_ud_t * udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
+ H5HF_hdr_t * hdr = udata->hdr; /* Fractal heap header */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -966,24 +928,23 @@ H5HF__sect_single_merge(H5FS_section_info_t **_sect1, H5FS_section_info_t *_sect
(*sect1)->sect_info.size += sect2->sect_info.size;
/* Get rid of second section */
- if(H5HF__sect_single_free((H5FS_section_info_t *)sect2) < 0)
+ if (H5HF__sect_single_free((H5FS_section_info_t *)sect2) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free section node")
/* Check to see if we should revive first section */
- if((*sect1)->sect_info.state != H5FS_SECT_LIVE)
- if(H5HF__sect_single_revive(hdr, (*sect1)) < 0)
+ if ((*sect1)->sect_info.state != H5FS_SECT_LIVE)
+ if (H5HF__sect_single_revive(hdr, (*sect1)) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't revive single free section")
/* Check if single section covers entire direct block it's in */
/* (converts to row section possibly) */
- if(H5HF__sect_single_full_dblock(hdr, (*sect1)) < 0)
+ if (H5HF__sect_single_full_dblock(hdr, (*sect1)) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTCONVERT, FAIL, "can't check/convert single section")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_single_merge() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_can_shrink
*
@@ -1005,10 +966,10 @@ done:
static htri_t
H5HF__sect_single_can_shrink(const H5FS_section_info_t *_sect, void *_udata)
{
- const H5HF_free_section_t *sect = (const H5HF_free_section_t *)_sect; /* Fractal heap free section */
- H5HF_sect_add_ud_t *udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
- H5HF_hdr_t *hdr = udata->hdr; /* Fractal heap header */
- htri_t ret_value = FALSE; /* Return value */
+ const H5HF_free_section_t *sect = (const H5HF_free_section_t *)_sect; /* Fractal heap free section */
+ H5HF_sect_add_ud_t * udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
+ H5HF_hdr_t * hdr = udata->hdr; /* Fractal heap header */
+ htri_t ret_value = FALSE; /* Return value */
FUNC_ENTER_STATIC_NOERR
@@ -1021,13 +982,13 @@ H5HF__sect_single_can_shrink(const H5FS_section_info_t *_sect, void *_udata)
* would have been converted into a row section, if there was an
* indirect block that covered it)
*/
- if(hdr->man_dtable.curr_root_rows == 0) {
- size_t dblock_size; /* Section's direct block's size */
- size_t dblock_overhead; /* Direct block's overhead */
+ if (hdr->man_dtable.curr_root_rows == 0) {
+ size_t dblock_size; /* Section's direct block's size */
+ size_t dblock_overhead; /* Direct block's overhead */
- dblock_size = hdr->man_dtable.cparam.start_block_size;
+ dblock_size = hdr->man_dtable.cparam.start_block_size;
dblock_overhead = H5HF_MAN_ABS_DIRECT_OVERHEAD(hdr);
- if((dblock_size - dblock_overhead) == sect->sect_info.size)
+ if ((dblock_size - dblock_overhead) == sect->sect_info.size)
HGOTO_DONE(TRUE)
} /* end if */
else {
@@ -1042,7 +1003,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_single_can_shrink() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_shrink
*
@@ -1060,13 +1020,13 @@ done:
static herr_t
H5HF__sect_single_shrink(H5FS_section_info_t **_sect, void *_udata)
{
- H5HF_free_section_t **sect = (H5HF_free_section_t **)_sect; /* Fractal heap free section */
- H5HF_sect_add_ud_t *udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
- H5HF_hdr_t *hdr = udata->hdr; /* Fractal heap header */
- H5HF_direct_t *dblock; /* Pointer to direct block for section */
- haddr_t dblock_addr; /* Section's direct block's address */
- size_t dblock_size; /* Section's direct block's size */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_free_section_t **sect = (H5HF_free_section_t **)_sect; /* Fractal heap free section */
+ H5HF_sect_add_ud_t * udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
+ H5HF_hdr_t * hdr = udata->hdr; /* Fractal heap header */
+ H5HF_direct_t * dblock; /* Pointer to direct block for section */
+ haddr_t dblock_addr; /* Section's direct block's address */
+ size_t dblock_size; /* Section's direct block's size */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -1076,27 +1036,28 @@ H5HF__sect_single_shrink(H5FS_section_info_t **_sect, void *_udata)
HDassert((*sect)->sect_info.type == H5HF_FSPACE_SECT_SINGLE);
/* Check to see if we should revive section */
- if((*sect)->sect_info.state != H5FS_SECT_LIVE)
- if(H5HF__sect_single_revive(hdr, (*sect)) < 0)
+ if ((*sect)->sect_info.state != H5FS_SECT_LIVE)
+ if (H5HF__sect_single_revive(hdr, (*sect)) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't revive single free section")
/* Retrieve direct block address from section */
- if(H5HF__sect_single_dblock_info(hdr, (*sect), &dblock_addr, &dblock_size) < 0)
+ if (H5HF__sect_single_dblock_info(hdr, (*sect), &dblock_addr, &dblock_size) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTGET, FAIL, "can't retrieve direct block information")
/* Protect the direct block for the section */
/* (should be a root direct block) */
HDassert(dblock_addr == hdr->man_dtable.table_addr);
- if(NULL == (dblock = H5HF__man_dblock_protect(hdr, dblock_addr, dblock_size, (*sect)->u.single.parent, (*sect)->u.single.par_entry, H5AC__NO_FLAGS_SET)))
+ if (NULL == (dblock = H5HF__man_dblock_protect(hdr, dblock_addr, dblock_size, (*sect)->u.single.parent,
+ (*sect)->u.single.par_entry, H5AC__NO_FLAGS_SET)))
HGOTO_ERROR(H5E_HEAP, H5E_CANTPROTECT, FAIL, "unable to load fractal heap direct block")
HDassert(H5F_addr_eq(dblock->block_off + dblock_size, (*sect)->sect_info.addr + (*sect)->sect_info.size));
/* Get rid of section */
- if(H5HF__sect_single_free((H5FS_section_info_t *)*sect) < 0)
+ if (H5HF__sect_single_free((H5FS_section_info_t *)*sect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free section node")
/* Destroy direct block */
- if(H5HF__man_dblock_destroy(hdr, dblock, dblock_addr, NULL) < 0)
+ if (H5HF__man_dblock_destroy(hdr, dblock, dblock_addr, NULL) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't release direct block")
dblock = NULL;
@@ -1107,7 +1068,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_single_shrink() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_free
*
@@ -1125,9 +1085,9 @@ done:
herr_t
H5HF__sect_single_free(H5FS_section_info_t *_sect)
{
- H5HF_free_section_t *sect = (H5HF_free_section_t *)_sect; /* Pointer to section to free */
- H5HF_indirect_t *parent = NULL; /* Parent indirect block for section */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_free_section_t *sect = (H5HF_free_section_t *)_sect; /* Pointer to section to free */
+ H5HF_indirect_t * parent = NULL; /* Parent indirect block for section */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE
@@ -1135,20 +1095,19 @@ H5HF__sect_single_free(H5FS_section_info_t *_sect)
HDassert(sect);
/* Check for live reference to an indirect block */
- if(sect->sect_info.state == H5FS_SECT_LIVE)
+ if (sect->sect_info.state == H5FS_SECT_LIVE)
/* Get parent indirect block, if there was one */
- if(sect->u.single.parent)
+ if (sect->u.single.parent)
parent = sect->u.single.parent;
/* Release the section */
- if(H5HF__sect_node_free(sect, parent) < 0)
+ if (H5HF__sect_node_free(sect, parent) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free section node")
done:
FUNC_LEAVE_NOAPI(ret_value)
-} /* H5HF__sect_single_free() */
+} /* H5HF__sect_single_free() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_single_valid
*
@@ -1165,30 +1124,31 @@ done:
static herr_t
H5HF__sect_single_valid(const H5FS_section_class_t H5_ATTR_UNUSED *cls, const H5FS_section_info_t *_sect)
{
- const H5HF_free_section_t *sect = (const H5HF_free_section_t *)_sect; /* Pointer to section to check */
+ const H5HF_free_section_t *sect = (const H5HF_free_section_t *)_sect; /* Pointer to section to check */
FUNC_ENTER_STATIC_NOERR
/* Check arguments. */
HDassert(sect);
- if(sect->sect_info.state == H5FS_SECT_LIVE) {
+ if (sect->sect_info.state == H5FS_SECT_LIVE) {
/* Check if this section is not in a direct block that is the root direct block */
/* (not enough information to check on a single section in a root direct block) */
- if(sect->u.single.parent != NULL) {
- H5HF_indirect_t *iblock; /* Indirect block that section's direct block resides in */
- haddr_t dblock_addr; /* Direct block address */
- size_t dblock_size; /* Direct block size */
- unsigned dblock_status = 0; /* Direct block's status in the metadata cache */
- size_t H5_ATTR_NDEBUG_UNUSED dblock_overhead; /* Direct block's overhead */
- herr_t H5_ATTR_NDEBUG_UNUSED status; /* Generic status value */
+ if (sect->u.single.parent != NULL) {
+ H5HF_indirect_t * iblock; /* Indirect block that section's direct block resides in */
+ haddr_t dblock_addr; /* Direct block address */
+ size_t dblock_size; /* Direct block size */
+ unsigned dblock_status = 0; /* Direct block's status in the metadata cache */
+ size_t H5_ATTR_NDEBUG_UNUSED dblock_overhead; /* Direct block's overhead */
+ herr_t H5_ATTR_NDEBUG_UNUSED status; /* Generic status value */
/* Sanity check settings for section's direct block's parent */
iblock = sect->u.single.parent;
HDassert(H5F_addr_defined(iblock->ents[sect->u.single.par_entry].addr));
/* Retrieve direct block address from section */
- status = H5HF__sect_single_dblock_info(iblock->hdr, (const H5HF_free_section_t *)sect, &dblock_addr, &dblock_size);
+ status = H5HF__sect_single_dblock_info(iblock->hdr, (const H5HF_free_section_t *)sect,
+ &dblock_addr, &dblock_size);
HDassert(status >= 0);
HDassert(H5F_addr_eq(iblock->ents[sect->u.single.par_entry].addr, dblock_addr));
HDassert(dblock_size > 0);
@@ -1208,30 +1168,32 @@ H5HF__sect_single_valid(const H5FS_section_class_t H5_ATTR_UNUSED *cls, const H5
* protect it here in order to check single section's sanity
* against it.
*/
- if(!(dblock_status & H5AC_ES__IS_PROTECTED)) {
- H5HF_direct_t *dblock; /* Direct block for section */
+ if (!(dblock_status & H5AC_ES__IS_PROTECTED)) {
+ H5HF_direct_t *dblock; /* Direct block for section */
/* Protect the direct block for the section */
- dblock = H5HF__man_dblock_protect(iblock->hdr, dblock_addr, dblock_size, iblock, sect->u.single.par_entry, H5AC__READ_ONLY_FLAG);
+ dblock = H5HF__man_dblock_protect(iblock->hdr, dblock_addr, dblock_size, iblock,
+ sect->u.single.par_entry, H5AC__READ_ONLY_FLAG);
HDassert(dblock);
/* Sanity check settings for section */
HDassert(dblock_size == dblock->size);
HDassert(dblock->size > sect->sect_info.size);
HDassert(H5F_addr_lt(dblock->block_off, sect->sect_info.addr));
- HDassert(H5F_addr_ge((dblock->block_off + dblock->size), (sect->sect_info.addr + sect->sect_info.size)));
+ HDassert(H5F_addr_ge((dblock->block_off + dblock->size),
+ (sect->sect_info.addr + sect->sect_info.size)));
/* Release direct block */
- status = H5AC_unprotect(iblock->hdr->f, H5AC_FHEAP_DBLOCK, dblock_addr, dblock, H5AC__NO_FLAGS_SET);
+ status = H5AC_unprotect(iblock->hdr->f, H5AC_FHEAP_DBLOCK, dblock_addr, dblock,
+ H5AC__NO_FLAGS_SET);
HDassert(status >= 0);
} /* end if */
- } /* end if */
- } /* end if */
+ } /* end if */
+ } /* end if */
FUNC_LEAVE_NOAPI(SUCCEED)
-} /* H5HF__sect_single_valid() */
+} /* H5HF__sect_single_valid() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_create
*
@@ -1247,11 +1209,11 @@ H5HF__sect_single_valid(const H5FS_section_class_t H5_ATTR_UNUSED *cls, const H5
*-------------------------------------------------------------------------
*/
static H5HF_free_section_t *
-H5HF__sect_row_create(haddr_t sect_off, hsize_t sect_size, hbool_t is_first,
- unsigned row, unsigned col, unsigned nentries, H5HF_free_section_t *under_sect)
+H5HF__sect_row_create(haddr_t sect_off, hsize_t sect_size, hbool_t is_first, unsigned row, unsigned col,
+ unsigned nentries, H5HF_free_section_t *under_sect)
{
- H5HF_free_section_t *sect = NULL; /* 'Row' section created */
- H5HF_free_section_t *ret_value = NULL; /* Return value */
+ H5HF_free_section_t *sect = NULL; /* 'Row' section created */
+ H5HF_free_section_t *ret_value = NULL; /* Return value */
FUNC_ENTER_STATIC
@@ -1262,13 +1224,15 @@ H5HF__sect_row_create(haddr_t sect_off, hsize_t sect_size, hbool_t is_first,
/* Create 'row' free space section node */
/* ("inherits" underlying indirect section's state) */
- if(NULL == (sect = H5FS__sect_node_new((unsigned)(is_first ? H5HF_FSPACE_SECT_FIRST_ROW : H5HF_FSPACE_SECT_NORMAL_ROW), sect_off, sect_size, under_sect->sect_info.state)))
+ if (NULL == (sect = H5FS__sect_node_new(
+ (unsigned)(is_first ? H5HF_FSPACE_SECT_FIRST_ROW : H5HF_FSPACE_SECT_NORMAL_ROW),
+ sect_off, sect_size, under_sect->sect_info.state)))
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed for row section")
/* Set the 'row' specific fields */
- sect->u.row.under = under_sect;
- sect->u.row.row = row;
- sect->u.row.col = col;
+ sect->u.row.under = under_sect;
+ sect->u.row.row = row;
+ sect->u.row.col = col;
sect->u.row.num_entries = nentries;
sect->u.row.checked_out = FALSE;
@@ -1279,7 +1243,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_row_create() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_from_single
*
@@ -1293,10 +1256,9 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5HF__sect_row_from_single(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
- H5HF_direct_t *dblock)
+H5HF__sect_row_from_single(H5HF_hdr_t *hdr, H5HF_free_section_t *sect, H5HF_direct_t *dblock)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -1308,26 +1270,25 @@ H5HF__sect_row_from_single(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
HDassert(dblock);
/* Convert 'single' section information to 'row' section info */
- sect->sect_info.addr = dblock->block_off;
- sect->sect_info.type = H5HF_FSPACE_SECT_FIRST_ROW;
- sect->u.row.row = dblock->par_entry / hdr->man_dtable.cparam.width;
- sect->u.row.col = dblock->par_entry % hdr->man_dtable.cparam.width;
+ sect->sect_info.addr = dblock->block_off;
+ sect->sect_info.type = H5HF_FSPACE_SECT_FIRST_ROW;
+ sect->u.row.row = dblock->par_entry / hdr->man_dtable.cparam.width;
+ sect->u.row.col = dblock->par_entry % hdr->man_dtable.cparam.width;
sect->u.row.num_entries = 1;
sect->u.row.checked_out = FALSE;
/* Create indirect section that underlies the row section */
- if(NULL == (sect->u.row.under = H5HF__sect_indirect_for_row(hdr, dblock->parent, sect)))
+ if (NULL == (sect->u.row.under = H5HF__sect_indirect_for_row(hdr, dblock->parent, sect)))
HGOTO_ERROR(H5E_HEAP, H5E_CANTCREATE, FAIL, "serializing row section not supported yet")
/* Release single section's hold on underlying indirect block */
- if(H5HF__iblock_decr(dblock->parent) < 0)
+ if (H5HF__iblock_decr(dblock->parent) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTDEC, FAIL, "can't decrement reference count on shared indirect block")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_row_from_single() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_revive
*
@@ -1343,7 +1304,7 @@ done:
herr_t
H5HF__sect_row_revive(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE
@@ -1357,14 +1318,14 @@ H5HF__sect_row_revive(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
/* If the indirect section's iblock has been removed from the cache, but the
* section is still marked as "live", switch it to the "serialized" state.
*/
- if((H5FS_SECT_LIVE == sect->u.row.under->sect_info.state)
- && (TRUE == sect->u.row.under->u.indirect.u.iblock->removed_from_cache))
- if(H5HF__sect_row_parent_removed(sect) < 0)
+ if ((H5FS_SECT_LIVE == sect->u.row.under->sect_info.state) &&
+ (TRUE == sect->u.row.under->u.indirect.u.iblock->removed_from_cache))
+ if (H5HF__sect_row_parent_removed(sect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTUPDATE, FAIL, "can't update section info")
/* Pass along "revive" request to underlying indirect section */
/* (which will mark this section as "live") */
- if(H5HF__sect_indirect_revive_row(hdr, sect->u.row.under) < 0)
+ if (H5HF__sect_indirect_revive_row(hdr, sect->u.row.under) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTREVIVE, FAIL, "can't revive indirect section")
HDassert(sect->sect_info.state == H5FS_SECT_LIVE);
@@ -1372,7 +1333,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_row_revive() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_reduce
*
@@ -1388,11 +1348,10 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5HF__sect_row_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
- unsigned *entry_p)
+H5HF__sect_row_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect, unsigned *entry_p)
{
- hbool_t alloc_from_start; /* Whether to allocate from the end of the row */
- herr_t ret_value = SUCCEED; /* Return value */
+ hbool_t alloc_from_start; /* Whether to allocate from the end of the row */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE
@@ -1402,7 +1361,7 @@ H5HF__sect_row_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
HDassert(hdr);
HDassert(sect);
HDassert(sect->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW ||
- sect->sect_info.type == H5HF_FSPACE_SECT_NORMAL_ROW);
+ sect->sect_info.type == H5HF_FSPACE_SECT_NORMAL_ROW);
HDassert(sect->sect_info.state == H5FS_SECT_LIVE);
HDassert(entry_p);
@@ -1412,23 +1371,23 @@ H5HF__sect_row_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
/* Forward row section to indirect routines, to handle reducing underlying indirect section */
alloc_from_start = FALSE;
- if(H5HF__sect_indirect_reduce_row(hdr, sect, &alloc_from_start) < 0)
+ if (H5HF__sect_indirect_reduce_row(hdr, sect, &alloc_from_start) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTSHRINK, FAIL, "can't reduce underlying section")
/* Determine entry allocated */
*entry_p = (sect->u.row.row * hdr->man_dtable.cparam.width) + sect->u.row.col;
- if(!alloc_from_start)
+ if (!alloc_from_start)
*entry_p += (sect->u.row.num_entries - 1);
/* Check for eliminating the section */
- if(sect->u.row.num_entries == 1) {
+ if (sect->u.row.num_entries == 1) {
/* Free row section */
- if(H5HF__sect_row_free((H5FS_section_info_t *)sect) < 0)
+ if (H5HF__sect_row_free((H5FS_section_info_t *)sect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free row section node")
} /* end if */
else {
/* Check whether to allocate from the beginning or end of the row */
- if(alloc_from_start) {
+ if (alloc_from_start) {
/* Adjust section start */
sect->sect_info.addr += hdr->man_dtable.row_block_size[sect->u.row.row];
sect->u.row.col++;
@@ -1441,7 +1400,7 @@ H5HF__sect_row_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
sect->u.row.checked_out = FALSE;
/* Add 'row' section back to free space list */
- if(H5HF__space_add(hdr, sect, 0) < 0)
+ if (H5HF__space_add(hdr, sect, 0) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't re-add indirect section to free space manager")
} /* end else */
@@ -1449,7 +1408,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_row_reduce() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_first
*
@@ -1465,7 +1423,7 @@ done:
static herr_t
H5HF__sect_row_first(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -1478,18 +1436,17 @@ H5HF__sect_row_first(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
* change it's class directly and the free space manager will adjust when
* it is checked back in.
*/
- if(sect->u.row.checked_out)
+ if (sect->u.row.checked_out)
sect->sect_info.type = H5HF_FSPACE_SECT_FIRST_ROW;
else
/* Change row section to be the "first row" */
- if(H5HF__space_sect_change_class(hdr, sect, H5HF_FSPACE_SECT_FIRST_ROW) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTSET, FAIL, "can't set row section to be first row")
+ if (H5HF__space_sect_change_class(hdr, sect, H5HF_FSPACE_SECT_FIRST_ROW) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTSET, FAIL, "can't set row section to be first row")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_row_first() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_get_iblock
*
@@ -1505,7 +1462,7 @@ done:
H5HF_indirect_t *
H5HF__sect_row_get_iblock(H5HF_free_section_t *sect)
{
- H5HF_indirect_t *ret_value = NULL; /* Return value */
+ H5HF_indirect_t *ret_value = NULL; /* Return value */
FUNC_ENTER_PACKAGE_NOERR
@@ -1514,7 +1471,7 @@ H5HF__sect_row_get_iblock(H5HF_free_section_t *sect)
*/
HDassert(sect);
HDassert(sect->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW ||
- sect->sect_info.type == H5HF_FSPACE_SECT_NORMAL_ROW);
+ sect->sect_info.type == H5HF_FSPACE_SECT_NORMAL_ROW);
HDassert(sect->sect_info.state == H5FS_SECT_LIVE);
ret_value = H5HF__sect_indirect_get_iblock(sect->u.row.under);
@@ -1522,7 +1479,6 @@ H5HF__sect_row_get_iblock(H5HF_free_section_t *sect)
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_row_get_iblock() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_parent_removed
*
@@ -1539,9 +1495,9 @@ H5HF__sect_row_get_iblock(H5HF_free_section_t *sect)
static herr_t
H5HF__sect_row_parent_removed(H5HF_free_section_t *sect)
{
- hsize_t tmp_iblock_off; /* Indirect block offset for row */
- unsigned u; /* Local index value */
- herr_t ret_value = SUCCEED; /* Return value */
+ hsize_t tmp_iblock_off; /* Indirect block offset for row */
+ unsigned u; /* Local index value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -1552,16 +1508,16 @@ H5HF__sect_row_parent_removed(H5HF_free_section_t *sect)
tmp_iblock_off = sect->u.row.under->u.indirect.u.iblock->block_off;
/* Decrement the refcount on the indirect block, since serialized sections don't hold a reference */
- if(H5HF__iblock_decr(sect->u.row.under->u.indirect.u.iblock) < 0)
+ if (H5HF__iblock_decr(sect->u.row.under->u.indirect.u.iblock) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTDEC, FAIL, "can't decrement reference count on shared indirect block")
/* Switch indirect block info to serialized form */
/* (Overwrites iblock pointer in the indirect section) */
- sect->u.row.under->u.indirect.u.iblock_off = tmp_iblock_off;
+ sect->u.row.under->u.indirect.u.iblock_off = tmp_iblock_off;
sect->u.row.under->u.indirect.iblock_entries = 0;
/* Loop over derived row sections and mark them all as 'live' now */
- for(u = 0; u < sect->u.row.under->u.indirect.dir_nrows; u++)
+ for (u = 0; u < sect->u.row.under->u.indirect.dir_nrows; u++)
sect->u.row.under->u.indirect.dir_rows[u]->sect_info.state = H5FS_SECT_SERIALIZED;
/* Mark the indirect section as serialized now */
@@ -1574,7 +1530,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_row_parent_removed() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_init_cls
*
@@ -1595,8 +1550,8 @@ done:
static herr_t
H5HF__sect_row_init_cls(H5FS_section_class_t *cls, void *_udata)
{
- H5HF_hdr_t *hdr = (H5HF_hdr_t *)_udata; /* Fractal heap header */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_hdr_t *hdr = (H5HF_hdr_t *)_udata; /* Fractal heap header */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -1605,11 +1560,11 @@ H5HF__sect_row_init_cls(H5FS_section_class_t *cls, void *_udata)
HDassert(hdr);
/* Call common class initialization */
- if(H5FS__sect_init_cls(cls, hdr) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't initialize common section class")
+ if (H5FS__sect_init_cls(cls, hdr) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't initialize common section class")
/* First row sections actually are proxies for indirection sections on disk */
- if(cls->type == H5HF_FSPACE_SECT_FIRST_ROW)
+ if (cls->type == H5HF_FSPACE_SECT_FIRST_ROW)
cls->serial_size = H5HF_SECT_INDIRECT_SERIAL_SIZE(hdr);
else
cls->serial_size = 0;
@@ -1618,7 +1573,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_row_init_cls() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_term_cls
*
@@ -1639,7 +1593,7 @@ done:
static herr_t
H5HF__sect_row_term_cls(H5FS_section_class_t *cls)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -1647,14 +1601,13 @@ H5HF__sect_row_term_cls(H5FS_section_class_t *cls)
HDassert(cls);
/* Call common class termination */
- if(H5FS__sect_term_cls(cls) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't terminate common section class")
+ if (H5FS__sect_term_cls(cls) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't terminate common section class")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_row_term_cls() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_serialize
*
@@ -1670,12 +1623,11 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5HF__sect_row_serialize(const H5FS_section_class_t *cls,
- const H5FS_section_info_t *_sect, uint8_t *buf)
+H5HF__sect_row_serialize(const H5FS_section_class_t *cls, const H5FS_section_info_t *_sect, uint8_t *buf)
{
- H5HF_hdr_t *hdr; /* Fractal heap header */
- const H5HF_free_section_t *sect = (const H5HF_free_section_t *)_sect;
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_hdr_t * hdr; /* Fractal heap header */
+ const H5HF_free_section_t *sect = (const H5HF_free_section_t *)_sect;
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -1688,14 +1640,14 @@ H5HF__sect_row_serialize(const H5FS_section_class_t *cls,
/* Forward to indirect routine to serialize underlying section */
hdr = ((H5HF_sect_private_t *)(cls->cls_private))->hdr;
- if(H5HF__sect_indirect_serialize(hdr, sect->u.row.under, buf) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTSERIALIZE, FAIL, "can't serialize row section's underlying indirect section")
+ if (H5HF__sect_indirect_serialize(hdr, sect->u.row.under, buf) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTSERIALIZE, FAIL,
+ "can't serialize row section's underlying indirect section")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_row_serialize() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_deserialize
*
@@ -1714,11 +1666,11 @@ done:
*-------------------------------------------------------------------------
*/
static H5FS_section_info_t *
-H5HF__sect_row_deserialize(const H5FS_section_class_t *cls, const uint8_t *buf,
- haddr_t sect_addr, hsize_t sect_size, unsigned *des_flags)
+H5HF__sect_row_deserialize(const H5FS_section_class_t *cls, const uint8_t *buf, haddr_t sect_addr,
+ hsize_t sect_size, unsigned *des_flags)
{
- H5HF_hdr_t *hdr; /* Fractal heap header */
- H5FS_section_info_t *ret_value = NULL; /* Return value */
+ H5HF_hdr_t * hdr; /* Fractal heap header */
+ H5FS_section_info_t *ret_value = NULL; /* Return value */
FUNC_ENTER_STATIC
@@ -1730,14 +1682,14 @@ H5HF__sect_row_deserialize(const H5FS_section_class_t *cls, const uint8_t *buf,
/* Forward to indirect routine to deserialize underlying section */
hdr = ((H5HF_sect_private_t *)(cls->cls_private))->hdr;
- if(NULL == (ret_value = H5HF__sect_indirect_deserialize(hdr, buf, sect_addr, sect_size, des_flags)))
- HGOTO_ERROR(H5E_HEAP, H5E_CANTDECODE, NULL, "can't deserialize row section's underlying indirect section")
+ if (NULL == (ret_value = H5HF__sect_indirect_deserialize(hdr, buf, sect_addr, sect_size, des_flags)))
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTDECODE, NULL,
+ "can't deserialize row section's underlying indirect section")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_row_deserialize() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_can_merge
*
@@ -1755,13 +1707,13 @@ done:
*-------------------------------------------------------------------------
*/
static htri_t
-H5HF__sect_row_can_merge(const H5FS_section_info_t *_sect1,
- const H5FS_section_info_t *_sect2, void H5_ATTR_UNUSED *_udata)
+H5HF__sect_row_can_merge(const H5FS_section_info_t *_sect1, const H5FS_section_info_t *_sect2,
+ void H5_ATTR_UNUSED *_udata)
{
- const H5HF_free_section_t *sect1 = (const H5HF_free_section_t *)_sect1; /* Fractal heap free section */
- const H5HF_free_section_t *sect2 = (const H5HF_free_section_t *)_sect2; /* Fractal heap free section */
- H5HF_free_section_t *top_indir_sect1, *top_indir_sect2; /* Top indirect section for each row */
- htri_t ret_value = FALSE; /* Return value */
+ const H5HF_free_section_t *sect1 = (const H5HF_free_section_t *)_sect1; /* Fractal heap free section */
+ const H5HF_free_section_t *sect2 = (const H5HF_free_section_t *)_sect2; /* Fractal heap free section */
+ H5HF_free_section_t * top_indir_sect1, *top_indir_sect2; /* Top indirect section for each row */
+ htri_t ret_value = FALSE; /* Return value */
FUNC_ENTER_STATIC_NOERR
@@ -1769,7 +1721,7 @@ H5HF__sect_row_can_merge(const H5FS_section_info_t *_sect1,
HDassert(sect1);
HDassert(sect1->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW);
HDassert(sect2);
- HDassert(sect1->sect_info.type == sect2->sect_info.type); /* Checks "MERGE_SYM" flag */
+ HDassert(sect1->sect_info.type == sect2->sect_info.type); /* Checks "MERGE_SYM" flag */
HDassert(H5F_addr_lt(sect1->sect_info.addr, sect2->sect_info.addr));
/* Get the top indirect section underlying each row */
@@ -1782,17 +1734,18 @@ H5HF__sect_row_can_merge(const H5FS_section_info_t *_sect1,
* the first section, but doesn't already have same underlying indirect
* section.
*/
- if(top_indir_sect1 != top_indir_sect2)
- if(H5HF__sect_indirect_iblock_off(sect1->u.row.under) == H5HF__sect_indirect_iblock_off(sect2->u.row.under))
+ if (top_indir_sect1 != top_indir_sect2)
+ if (H5HF__sect_indirect_iblock_off(sect1->u.row.under) ==
+ H5HF__sect_indirect_iblock_off(sect2->u.row.under))
/* Check if second section adjoins first section */
- if(H5F_addr_eq((top_indir_sect1->sect_info.addr + top_indir_sect1->u.indirect.span_size), top_indir_sect2->sect_info.addr))
+ if (H5F_addr_eq((top_indir_sect1->sect_info.addr + top_indir_sect1->u.indirect.span_size),
+ top_indir_sect2->sect_info.addr))
HGOTO_DONE(TRUE)
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_row_can_merge() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_merge
*
@@ -1810,14 +1763,13 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5HF__sect_row_merge(H5FS_section_info_t **_sect1, H5FS_section_info_t *_sect2,
- void *_udata)
+H5HF__sect_row_merge(H5FS_section_info_t **_sect1, H5FS_section_info_t *_sect2, void *_udata)
{
- H5HF_free_section_t **sect1 = (H5HF_free_section_t **)_sect1; /* Fractal heap free section */
- H5HF_free_section_t *sect2 = (H5HF_free_section_t *)_sect2; /* Fractal heap free section */
- H5HF_sect_add_ud_t *udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
- H5HF_hdr_t *hdr = udata->hdr; /* Fractal heap header */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_free_section_t **sect1 = (H5HF_free_section_t **)_sect1; /* Fractal heap free section */
+ H5HF_free_section_t * sect2 = (H5HF_free_section_t *)_sect2; /* Fractal heap free section */
+ H5HF_sect_add_ud_t * udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
+ H5HF_hdr_t * hdr = udata->hdr; /* Fractal heap header */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -1828,26 +1780,25 @@ H5HF__sect_row_merge(H5FS_section_info_t **_sect1, H5FS_section_info_t *_sect2,
HDassert(sect2->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW);
/* Check if second section is past end of "next block" iterator */
- if(sect2->sect_info.addr >= hdr->man_iter_off) {
- H5HF_free_section_t *top_indir_sect; /* Top indirect section for row */
+ if (sect2->sect_info.addr >= hdr->man_iter_off) {
+ H5HF_free_section_t *top_indir_sect; /* Top indirect section for row */
/* Get the top indirect section underlying second row section */
top_indir_sect = H5HF__sect_indirect_top(sect2->u.row.under);
/* Shrink away underlying indirect section */
- if(H5HF__sect_indirect_shrink(hdr, top_indir_sect) < 0)
+ if (H5HF__sect_indirect_shrink(hdr, top_indir_sect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTSHRINK, FAIL, "can't shrink underlying indirect section")
} /* end if */
else
/* Merge rows' underlying indirect sections together */
- if(H5HF__sect_indirect_merge_row(hdr, (*sect1), sect2) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTMERGE, FAIL, "can't merge underlying indirect sections")
+ if (H5HF__sect_indirect_merge_row(hdr, (*sect1), sect2) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTMERGE, FAIL, "can't merge underlying indirect sections")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_row_merge() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_can_shrink
*
@@ -1869,10 +1820,10 @@ done:
static htri_t
H5HF__sect_row_can_shrink(const H5FS_section_info_t *_sect, void H5_ATTR_UNUSED *_udata)
{
- const H5HF_free_section_t *sect = (const H5HF_free_section_t *)_sect; /* Fractal heap free section */
- H5HF_sect_add_ud_t *udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
- H5HF_hdr_t *hdr = udata->hdr; /* Fractal heap header */
- htri_t ret_value = FALSE; /* Return value */
+ const H5HF_free_section_t *sect = (const H5HF_free_section_t *)_sect; /* Fractal heap free section */
+ H5HF_sect_add_ud_t * udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
+ H5HF_hdr_t * hdr = udata->hdr; /* Fractal heap header */
+ htri_t ret_value = FALSE; /* Return value */
FUNC_ENTER_STATIC_NOERR
@@ -1881,14 +1832,13 @@ H5HF__sect_row_can_shrink(const H5FS_section_info_t *_sect, void H5_ATTR_UNUSED
HDassert(sect->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW);
/* Check if section is past end of "next block" iterator */
- if(sect->sect_info.addr >= hdr->man_iter_off)
+ if (sect->sect_info.addr >= hdr->man_iter_off)
HGOTO_DONE(TRUE)
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_row_can_shrink() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_shrink
*
@@ -1906,11 +1856,11 @@ done:
static herr_t
H5HF__sect_row_shrink(H5FS_section_info_t **_sect, void *_udata)
{
- H5HF_free_section_t **sect = (H5HF_free_section_t **)_sect; /* Fractal heap free section */
- H5HF_free_section_t *top_indir_sect; /* Top indirect section for row */
- H5HF_sect_add_ud_t *udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
- H5HF_hdr_t *hdr = udata->hdr; /* Fractal heap header */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_free_section_t **sect = (H5HF_free_section_t **)_sect; /* Fractal heap free section */
+ H5HF_free_section_t * top_indir_sect; /* Top indirect section for row */
+ H5HF_sect_add_ud_t * udata = (H5HF_sect_add_ud_t *)_udata; /* User callback data */
+ H5HF_hdr_t * hdr = udata->hdr; /* Fractal heap header */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -1923,7 +1873,7 @@ H5HF__sect_row_shrink(H5FS_section_info_t **_sect, void *_udata)
top_indir_sect = H5HF__sect_indirect_top((*sect)->u.row.under);
/* Shrink away underlying indirect section */
- if(H5HF__sect_indirect_shrink(hdr, top_indir_sect) < 0)
+ if (H5HF__sect_indirect_shrink(hdr, top_indir_sect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTSHRINK, FAIL, "can't shrink underlying indirect section")
/* Indicate that the section has been released */
@@ -1933,7 +1883,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_row_shrink() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_free_real
*
@@ -1951,21 +1900,20 @@ done:
static herr_t
H5HF__sect_row_free_real(H5HF_free_section_t *sect)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
HDassert(sect);
/* Release the section */
- if(H5HF__sect_node_free(sect, NULL) < 0)
+ if (H5HF__sect_node_free(sect, NULL) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free section node")
done:
FUNC_LEAVE_NOAPI(ret_value)
-} /* H5HF__sect_row_free_real() */
+} /* H5HF__sect_row_free_real() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_free
*
@@ -1983,8 +1931,8 @@ done:
static herr_t
H5HF__sect_row_free(H5FS_section_info_t *_sect)
{
- H5HF_free_section_t *sect = (H5HF_free_section_t *)_sect; /* Pointer to section to free */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_free_section_t *sect = (H5HF_free_section_t *)_sect; /* Pointer to section to free */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -1992,18 +1940,17 @@ H5HF__sect_row_free(H5FS_section_info_t *_sect)
HDassert(sect->u.row.under);
/* Decrement the ref. count on the row section's underlying indirect section */
- if(H5HF__sect_indirect_decr(sect->u.row.under) < 0)
+ if (H5HF__sect_indirect_decr(sect->u.row.under) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't detach section node")
/* Release the section */
- if(H5HF__sect_row_free_real(sect) < 0)
+ if (H5HF__sect_row_free_real(sect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free section node")
done:
FUNC_LEAVE_NOAPI(ret_value)
-} /* H5HF__sect_row_free() */
+} /* H5HF__sect_row_free() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_valid
*
@@ -2020,10 +1967,10 @@ done:
static herr_t
H5HF__sect_row_valid(const H5FS_section_class_t *cls, const H5FS_section_info_t *_sect)
{
- H5HF_sect_private_t *cls_prvt; /* Pointer to class private info */
- const H5HF_hdr_t *hdr; /* Fractal heap header */
- const H5HF_free_section_t *sect = (const H5HF_free_section_t *)_sect; /* Pointer to section to check */
- const H5HF_free_section_t *indir_sect; /* Pointer to underlying indirect section */
+ H5HF_sect_private_t * cls_prvt; /* Pointer to class private info */
+ const H5HF_hdr_t * hdr; /* Fractal heap header */
+ const H5HF_free_section_t *sect = (const H5HF_free_section_t *)_sect; /* Pointer to section to check */
+ const H5HF_free_section_t *indir_sect; /* Pointer to underlying indirect section */
unsigned H5_ATTR_NDEBUG_UNUSED indir_idx; /* Index of row in underlying indirect section's row array */
FUNC_ENTER_STATIC_NOERR
@@ -2034,22 +1981,22 @@ H5HF__sect_row_valid(const H5FS_section_class_t *cls, const H5FS_section_info_t
/* Retrieve class private information */
cls_prvt = (H5HF_sect_private_t *)cls->cls_private;
- hdr = cls_prvt->hdr;
+ hdr = cls_prvt->hdr;
/* Sanity checking on the row */
HDassert(sect->u.row.under);
HDassert(sect->u.row.num_entries);
HDassert(sect->u.row.checked_out == FALSE);
indir_sect = sect->u.row.under;
- indir_idx = sect->u.row.row - indir_sect->u.indirect.row;
+ indir_idx = sect->u.row.row - indir_sect->u.indirect.row;
HDassert(indir_sect->u.indirect.dir_rows[indir_idx] == sect);
/* Check if the section is actually within the heap */
HDassert(sect->sect_info.addr < hdr->man_iter_off);
/* Different checking for different kinds of rows */
- if(sect->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW) {
- H5HF_free_section_t *top_indir_sect; /* Top indirect section for row */
+ if (sect->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW) {
+ H5HF_free_section_t *top_indir_sect; /* Top indirect section for row */
/* Some extra sanity checks on the row */
HDassert(sect->u.row.row == indir_sect->u.indirect.row);
@@ -2062,9 +2009,8 @@ H5HF__sect_row_valid(const H5FS_section_class_t *cls, const H5FS_section_info_t
} /* end if */
FUNC_LEAVE_NOAPI(SUCCEED)
-} /* H5HF__sect_row_valid() */
+} /* H5HF__sect_row_valid() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_row_debug
*
@@ -2081,7 +2027,7 @@ H5HF__sect_row_valid(const H5FS_section_class_t *cls, const H5FS_section_info_t
static herr_t
H5HF__sect_row_debug(const H5FS_section_info_t *_sect, FILE *stream, int indent, int fwidth)
{
- const H5HF_free_section_t *sect = (const H5HF_free_section_t *)_sect; /* Section to dump info */
+ const H5HF_free_section_t *sect = (const H5HF_free_section_t *)_sect; /* Section to dump info */
FUNC_ENTER_STATIC_NOERR
@@ -2089,21 +2035,14 @@ H5HF__sect_row_debug(const H5FS_section_info_t *_sect, FILE *stream, int indent,
HDassert(sect);
/* Print indirect section information */
- HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Row:",
- sect->u.row.row);
- HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Column:",
- sect->u.row.col);
- HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Number of entries:",
- sect->u.row.num_entries);
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, "Row:", sect->u.row.row);
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, "Column:", sect->u.row.col);
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, "Number of entries:", sect->u.row.num_entries);
/* If this is a first row section display information about underlying indirect section */
- if(sect->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW) {
+ if (sect->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW) {
/* Print indirect section header */
- HDfprintf(stream, "%*s%-*s\n", indent, "", fwidth,
- "Underlying indirect section:");
+ HDfprintf(stream, "%*s%-*s\n", indent, "", fwidth, "Underlying indirect section:");
H5HF__sect_indirect_debug(sect->u.row.under, stream, indent + 3, MAX(0, fwidth - 3));
} /* end if */
@@ -2111,7 +2050,6 @@ H5HF__sect_row_debug(const H5FS_section_info_t *_sect, FILE *stream, int indent,
FUNC_LEAVE_NOAPI(SUCCEED)
} /* H5HF__sect_row_debug() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_iblock_off
*
@@ -2127,7 +2065,7 @@ H5HF__sect_row_debug(const H5FS_section_info_t *_sect, FILE *stream, int indent,
static hsize_t
H5HF__sect_indirect_iblock_off(const H5HF_free_section_t *sect)
{
- hsize_t ret_value = 0; /* Return value */
+ hsize_t ret_value = 0; /* Return value */
FUNC_ENTER_STATIC_NOERR
@@ -2136,12 +2074,12 @@ H5HF__sect_indirect_iblock_off(const H5HF_free_section_t *sect)
*/
HDassert(sect);
- ret_value = sect->sect_info.state == H5FS_SECT_LIVE ? sect->u.indirect.u.iblock->block_off : sect->u.indirect.u.iblock_off;
+ ret_value = sect->sect_info.state == H5FS_SECT_LIVE ? sect->u.indirect.u.iblock->block_off
+ : sect->u.indirect.u.iblock_off;
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_iblock_off() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_top
*
@@ -2157,7 +2095,7 @@ H5HF__sect_indirect_iblock_off(const H5HF_free_section_t *sect)
static H5HF_free_section_t *
H5HF__sect_indirect_top(H5HF_free_section_t *sect)
{
- H5HF_free_section_t *ret_value = NULL; /* Return value */
+ H5HF_free_section_t *ret_value = NULL; /* Return value */
FUNC_ENTER_STATIC_NOERR
@@ -2166,7 +2104,7 @@ H5HF__sect_indirect_top(H5HF_free_section_t *sect)
*/
HDassert(sect);
- if(sect->u.indirect.parent)
+ if (sect->u.indirect.parent)
ret_value = H5HF__sect_indirect_top(sect->u.indirect.parent);
else
ret_value = sect;
@@ -2174,7 +2112,6 @@ H5HF__sect_indirect_top(H5HF_free_section_t *sect)
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_top() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_init_cls
*
@@ -2192,8 +2129,8 @@ H5HF__sect_indirect_top(H5HF_free_section_t *sect)
static herr_t
H5HF__sect_indirect_init_cls(H5FS_section_class_t *cls, void *_udata)
{
- H5HF_hdr_t *hdr = (H5HF_hdr_t *)_udata; /* Fractal heap header */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_hdr_t *hdr = (H5HF_hdr_t *)_udata; /* Fractal heap header */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -2202,8 +2139,8 @@ H5HF__sect_indirect_init_cls(H5FS_section_class_t *cls, void *_udata)
HDassert(hdr);
/* Call to common class initialization */
- if(H5FS__sect_init_cls(cls, hdr) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't initialize common section class")
+ if (H5FS__sect_init_cls(cls, hdr) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't initialize common section class")
/* Set the size of all serialized objects of this class of sections */
cls->serial_size = H5HF_SECT_INDIRECT_SERIAL_SIZE(hdr);
@@ -2212,7 +2149,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_indirect_init_cls() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_term_cls
*
@@ -2230,7 +2166,7 @@ done:
static herr_t
H5HF__sect_indirect_term_cls(H5FS_section_class_t *cls)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -2238,14 +2174,13 @@ H5HF__sect_indirect_term_cls(H5FS_section_class_t *cls)
HDassert(cls);
/* Call common class termination */
- if(H5FS__sect_term_cls(cls) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't terminate common section class")
+ if (H5FS__sect_term_cls(cls) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't terminate common section class")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_indirect_term_cls() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_new
*
@@ -2260,12 +2195,11 @@ done:
*-------------------------------------------------------------------------
*/
static H5HF_free_section_t *
-H5HF__sect_indirect_new(H5HF_hdr_t *hdr, haddr_t sect_off, hsize_t sect_size,
- H5HF_indirect_t *iblock, hsize_t iblock_off, unsigned row, unsigned col,
- unsigned nentries)
+H5HF__sect_indirect_new(H5HF_hdr_t *hdr, haddr_t sect_off, hsize_t sect_size, H5HF_indirect_t *iblock,
+ hsize_t iblock_off, unsigned row, unsigned col, unsigned nentries)
{
- H5HF_free_section_t *sect = NULL; /* 'Indirect' free space section to add */
- H5HF_free_section_t *ret_value = NULL; /* Return value */
+ H5HF_free_section_t *sect = NULL; /* 'Indirect' free space section to add */
+ H5HF_free_section_t *ret_value = NULL; /* Return value */
FUNC_ENTER_STATIC
@@ -2276,40 +2210,39 @@ H5HF__sect_indirect_new(H5HF_hdr_t *hdr, haddr_t sect_off, hsize_t sect_size,
HDassert(nentries);
/* Create free space section node */
- if(NULL == (sect = H5FS__sect_node_new(H5HF_FSPACE_SECT_INDIRECT, sect_off,
- sect_size, (iblock ? H5FS_SECT_LIVE : H5FS_SECT_SERIALIZED))))
+ if (NULL == (sect = H5FS__sect_node_new(H5HF_FSPACE_SECT_INDIRECT, sect_off, sect_size,
+ (iblock ? H5FS_SECT_LIVE : H5FS_SECT_SERIALIZED))))
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed for indirect section")
/* Set the 'indirect' specific fields */
- if(iblock) {
- sect->u.indirect.u.iblock = iblock;
- sect->u.indirect.iblock_entries = hdr->man_dtable.cparam.width *
- sect->u.indirect.u.iblock->max_rows;
- if(H5HF__iblock_incr(sect->u.indirect.u.iblock) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTINC, NULL, "can't increment reference count on shared indirect block")
+ if (iblock) {
+ sect->u.indirect.u.iblock = iblock;
+ sect->u.indirect.iblock_entries = hdr->man_dtable.cparam.width * sect->u.indirect.u.iblock->max_rows;
+ if (H5HF__iblock_incr(sect->u.indirect.u.iblock) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTINC, NULL,
+ "can't increment reference count on shared indirect block")
} /* end if */
else {
- sect->u.indirect.u.iblock_off = iblock_off;
+ sect->u.indirect.u.iblock_off = iblock_off;
sect->u.indirect.iblock_entries = 0;
} /* end else */
- sect->u.indirect.row = row;
- sect->u.indirect.col = col;
+ sect->u.indirect.row = row;
+ sect->u.indirect.col = col;
sect->u.indirect.num_entries = nentries;
/* Compute span size of indirect section */
- sect->u.indirect.span_size = H5HF__dtable_span_size(&hdr->man_dtable,
- row, col, nentries);
+ sect->u.indirect.span_size = H5HF__dtable_span_size(&hdr->man_dtable, row, col, nentries);
HDassert(sect->u.indirect.span_size > 0);
/* This indirect section doesn't (currently) have a parent */
- sect->u.indirect.parent = NULL;
+ sect->u.indirect.parent = NULL;
sect->u.indirect.par_entry = 0;
/* Set return value */
ret_value = sect;
done:
- if(!ret_value && sect) {
+ if (!ret_value && sect) {
/* Release the section */
sect = H5FL_FREE(H5HF_free_section_t, sect);
} /* end if */
@@ -2317,7 +2250,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_new() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_for_row
*
@@ -2331,11 +2263,10 @@ done:
*-------------------------------------------------------------------------
*/
static H5HF_free_section_t *
-H5HF__sect_indirect_for_row(H5HF_hdr_t *hdr, H5HF_indirect_t *iblock,
- H5HF_free_section_t *row_sect)
+H5HF__sect_indirect_for_row(H5HF_hdr_t *hdr, H5HF_indirect_t *iblock, H5HF_free_section_t *row_sect)
{
- H5HF_free_section_t *sect = NULL; /* 'Indirect' free space section to add */
- H5HF_free_section_t *ret_value = NULL; /* Return value */
+ H5HF_free_section_t *sect = NULL; /* 'Indirect' free space section to add */
+ H5HF_free_section_t *ret_value = NULL; /* Return value */
FUNC_ENTER_STATIC
@@ -2348,38 +2279,38 @@ H5HF__sect_indirect_for_row(H5HF_hdr_t *hdr, H5HF_indirect_t *iblock,
HDassert(row_sect->u.row.row < hdr->man_dtable.max_direct_rows);
/* Create free space section node */
- if(NULL == (sect = H5HF__sect_indirect_new(hdr, row_sect->sect_info.addr,
- row_sect->sect_info.size, iblock, iblock->block_off,
- row_sect->u.row.row, row_sect->u.row.col, row_sect->u.row.num_entries)))
+ if (NULL == (sect = H5HF__sect_indirect_new(hdr, row_sect->sect_info.addr, row_sect->sect_info.size,
+ iblock, iblock->block_off, row_sect->u.row.row,
+ row_sect->u.row.col, row_sect->u.row.num_entries)))
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, NULL, "can't create indirect section")
/* Set # of direct rows covered */
sect->u.indirect.dir_nrows = 1;
/* Allocate space for the derived row sections */
- if(NULL == (sect->u.indirect.dir_rows = (H5HF_free_section_t **)H5MM_malloc(sizeof(H5HF_free_section_t *))))
+ if (NULL ==
+ (sect->u.indirect.dir_rows = (H5HF_free_section_t **)H5MM_malloc(sizeof(H5HF_free_section_t *))))
HGOTO_ERROR(H5E_HEAP, H5E_NOSPACE, NULL, "allocation failed for row section pointer array")
/* Atatch the new row section to indirect section */
sect->u.indirect.dir_rows[0] = row_sect;
- sect->u.indirect.rc = 1;
+ sect->u.indirect.rc = 1;
/* No indirect rows in current section */
sect->u.indirect.indir_nents = 0;
- sect->u.indirect.indir_ents = NULL;
+ sect->u.indirect.indir_ents = NULL;
/* Set return value */
ret_value = sect;
done:
- if(!ret_value && sect)
- if(H5HF__sect_indirect_free(sect) < 0)
+ if (!ret_value && sect)
+ if (H5HF__sect_indirect_free(sect) < 0)
HDONE_ERROR(H5E_HEAP, H5E_CANTRELEASE, NULL, "can't free indirect section node")
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_for_row() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_init_rows
*
@@ -2394,21 +2325,20 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5HF__sect_indirect_init_rows(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
- hbool_t first_child, H5HF_free_section_t **first_row_sect,
- unsigned space_flags, unsigned start_row, unsigned start_col,
- unsigned end_row, unsigned end_col)
+H5HF__sect_indirect_init_rows(H5HF_hdr_t *hdr, H5HF_free_section_t *sect, hbool_t first_child,
+ H5HF_free_section_t **first_row_sect, unsigned space_flags, unsigned start_row,
+ unsigned start_col, unsigned end_row, unsigned end_col)
{
- hsize_t curr_off; /* Offset of new section in "heap space" */
- size_t dblock_overhead; /* Direct block's overhead */
- unsigned row_entries; /* # of entries in row */
- unsigned row_col; /* Column within current row */
- unsigned curr_entry; /* Current entry within indirect section */
- unsigned curr_indir_entry; /* Current indirect entry within indirect section */
- unsigned curr_row; /* Current row within indirect section */
- unsigned dir_nrows; /* # of direct rows in indirect section */
- unsigned u; /* Local index variable */
- herr_t ret_value = SUCCEED; /* Return value */
+ hsize_t curr_off; /* Offset of new section in "heap space" */
+ size_t dblock_overhead; /* Direct block's overhead */
+ unsigned row_entries; /* # of entries in row */
+ unsigned row_col; /* Column within current row */
+ unsigned curr_entry; /* Current entry within indirect section */
+ unsigned curr_indir_entry; /* Current indirect entry within indirect section */
+ unsigned curr_row; /* Current row within indirect section */
+ unsigned dir_nrows; /* # of direct rows in indirect section */
+ unsigned u; /* Local index variable */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -2420,13 +2350,13 @@ H5HF__sect_indirect_init_rows(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
/* Reset reference count for indirect section */
/* (Also reset the direct & indirect row pointers */
- sect->u.indirect.rc = 0;
- sect->u.indirect.dir_rows = NULL;
+ sect->u.indirect.rc = 0;
+ sect->u.indirect.dir_rows = NULL;
sect->u.indirect.indir_ents = NULL;
/* Set up direct block information, if necessary */
- if(start_row < hdr->man_dtable.max_direct_rows) {
- unsigned max_direct_row; /* Max. direct row covered */
+ if (start_row < hdr->man_dtable.max_direct_rows) {
+ unsigned max_direct_row; /* Max. direct row covered */
/* Compute max. direct row covered by indirect section */
max_direct_row = MIN(end_row, (hdr->man_dtable.max_direct_rows - 1));
@@ -2441,24 +2371,25 @@ H5HF__sect_indirect_init_rows(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
sect->u.indirect.dir_nrows = 0;
/* Allocate space for the derived row sections */
- if(NULL == (sect->u.indirect.dir_rows = (H5HF_free_section_t **)H5MM_malloc(sizeof(H5HF_free_section_t *) * dir_nrows)))
+ if (NULL == (sect->u.indirect.dir_rows =
+ (H5HF_free_section_t **)H5MM_malloc(sizeof(H5HF_free_section_t *) * dir_nrows)))
HGOTO_ERROR(H5E_HEAP, H5E_NOSPACE, FAIL, "allocation failed for row section pointer array")
} /* end if */
else {
/* No rows of direct blocks covered, reset direct row information */
- dir_nrows = 0;
+ dir_nrows = 0;
sect->u.indirect.dir_nrows = 0;
} /* end else */
/* Set up indirect block information, if necessary */
- if(end_row >= hdr->man_dtable.max_direct_rows) {
- unsigned indirect_start_row; /* Row to start indirect entries on */
- unsigned indirect_start_col; /* Column to start indirect entries on */
- unsigned indirect_start_entry; /* Index of starting indirect entry */
- unsigned indirect_end_entry; /* Index of ending indirect entry */
+ if (end_row >= hdr->man_dtable.max_direct_rows) {
+ unsigned indirect_start_row; /* Row to start indirect entries on */
+ unsigned indirect_start_col; /* Column to start indirect entries on */
+ unsigned indirect_start_entry; /* Index of starting indirect entry */
+ unsigned indirect_end_entry; /* Index of ending indirect entry */
/* Compute starting indirect entry */
- if(start_row < hdr->man_dtable.max_direct_rows) {
+ if (start_row < hdr->man_dtable.max_direct_rows) {
indirect_start_row = hdr->man_dtable.max_direct_rows;
indirect_start_col = 0;
} /* end if */
@@ -2466,8 +2397,7 @@ H5HF__sect_indirect_init_rows(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
indirect_start_row = start_row;
indirect_start_col = start_col;
} /* end else */
- indirect_start_entry = (indirect_start_row * hdr->man_dtable.cparam.width)
- + indirect_start_col;
+ indirect_start_entry = (indirect_start_row * hdr->man_dtable.cparam.width) + indirect_start_col;
/* Compute ending indirect entry */
indirect_end_entry = (end_row * hdr->man_dtable.cparam.width) + end_col;
@@ -2476,7 +2406,8 @@ H5HF__sect_indirect_init_rows(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
sect->u.indirect.indir_nents = (indirect_end_entry - indirect_start_entry) + 1;
/* Allocate space for the child indirect sections */
- if(NULL == (sect->u.indirect.indir_ents = (H5HF_free_section_t **)H5MM_malloc(sizeof(H5HF_free_section_t *) * sect->u.indirect.indir_nents)))
+ if (NULL == (sect->u.indirect.indir_ents = (H5HF_free_section_t **)H5MM_malloc(
+ sizeof(H5HF_free_section_t *) * sect->u.indirect.indir_nents)))
HGOTO_ERROR(H5E_HEAP, H5E_NOSPACE, FAIL, "allocation failed for indirect section pointer array")
} /* end if */
else {
@@ -2485,38 +2416,38 @@ H5HF__sect_indirect_init_rows(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
} /* end else */
/* Set up initial row information */
- if(start_row == end_row)
+ if (start_row == end_row)
row_entries = (end_col - start_col) + 1;
else
row_entries = hdr->man_dtable.cparam.width - start_col;
row_col = start_col;
/* Loop over creating the sections covered by this indirect section */
- curr_off = sect->sect_info.addr;
- curr_entry = (start_row * hdr->man_dtable.cparam.width) + start_col;
- curr_row = 0;
+ curr_off = sect->sect_info.addr;
+ curr_entry = (start_row * hdr->man_dtable.cparam.width) + start_col;
+ curr_row = 0;
curr_indir_entry = 0;
- dblock_overhead = H5HF_MAN_ABS_DIRECT_OVERHEAD(hdr);
- for(u = start_row; u <= end_row; u++, curr_row++) {
- if(u < hdr->man_dtable.max_direct_rows) {
- H5HF_free_section_t *row_sect = NULL; /* 'Row' free space section to add */
+ dblock_overhead = H5HF_MAN_ABS_DIRECT_OVERHEAD(hdr);
+ for (u = start_row; u <= end_row; u++, curr_row++) {
+ if (u < hdr->man_dtable.max_direct_rows) {
+ H5HF_free_section_t *row_sect = NULL; /* 'Row' free space section to add */
/* Create 'row' free space section node */
- if(NULL == (row_sect = H5HF__sect_row_create(curr_off,
- (hdr->man_dtable.row_block_size[u] - dblock_overhead), first_child, u, row_col,
- row_entries, sect)))
+ if (NULL == (row_sect = H5HF__sect_row_create(
+ curr_off, (hdr->man_dtable.row_block_size[u] - dblock_overhead), first_child, u,
+ row_col, row_entries, sect)))
HGOTO_ERROR(H5E_HEAP, H5E_CANTCREATE, FAIL, "creation failed for child row section")
/* Add new row section to array for indirect section */
sect->u.indirect.dir_rows[curr_row] = row_sect;
/* Check to see if we should grab the first row section instead of adding it immediately */
- if(first_row_sect)
+ if (first_row_sect)
*first_row_sect = row_sect;
else
/* Add new row section to free space manager for the heap */
- if(H5HF__space_add(hdr, row_sect, space_flags) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't add row section to free space")
+ if (H5HF__space_add(hdr, row_sect, space_flags) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't add row section to free space")
/* Increment reference count for underlying indirect section */
sect->u.indirect.rc++;
@@ -2528,36 +2459,41 @@ H5HF__sect_indirect_init_rows(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
curr_entry += row_entries;
/* Reset the 'first child' parameters */
- first_child = FALSE;
+ first_child = FALSE;
first_row_sect = NULL;
} /* end if */
else {
- H5HF_indirect_t *child_iblock; /* Child indirect block */
- H5HF_free_section_t *child_sect; /* Child 'indirect' section to add */
- unsigned child_nrows; /* Number of child rows in indirect blocks for this row */
- unsigned child_nentries; /* Number of child entries in indirect blocks for this row */
- unsigned v; /* Local index variable */
+ H5HF_indirect_t * child_iblock; /* Child indirect block */
+ H5HF_free_section_t *child_sect; /* Child 'indirect' section to add */
+ unsigned child_nrows; /* Number of child rows in indirect blocks for this row */
+ unsigned child_nentries; /* Number of child entries in indirect blocks for this row */
+ unsigned v; /* Local index variable */
/* Compute info about row's indirect blocks for child section */
- child_nrows = H5HF__dtable_size_to_rows(&hdr->man_dtable, hdr->man_dtable.row_block_size[u]);
+ child_nrows = H5HF__dtable_size_to_rows(&hdr->man_dtable, hdr->man_dtable.row_block_size[u]);
child_nentries = child_nrows * hdr->man_dtable.cparam.width;
/* Add an indirect section for each indirect block in the row */
- for(v = 0; v < row_entries; v++) {
- hbool_t did_protect; /* Whether we protected the indirect block or not */
+ for (v = 0; v < row_entries; v++) {
+ hbool_t did_protect; /* Whether we protected the indirect block or not */
/* Try to get the child section's indirect block, if it's available */
- if(sect->sect_info.state == H5FS_SECT_LIVE) {
- haddr_t child_iblock_addr; /* Child indirect block's address on disk */
+ if (sect->sect_info.state == H5FS_SECT_LIVE) {
+ haddr_t child_iblock_addr; /* Child indirect block's address on disk */
/* Get the address of the child indirect block */
- if(H5HF__man_iblock_entry_addr(sect->u.indirect.u.iblock, curr_entry, &child_iblock_addr) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTGET, FAIL, "unable to retrieve child indirect block's address")
+ if (H5HF__man_iblock_entry_addr(sect->u.indirect.u.iblock, curr_entry,
+ &child_iblock_addr) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTGET, FAIL,
+ "unable to retrieve child indirect block's address")
/* If the child indirect block's address is defined, protect it */
- if(H5F_addr_defined(child_iblock_addr)) {
- if(NULL == (child_iblock = H5HF__man_iblock_protect(hdr, child_iblock_addr, child_nrows, sect->u.indirect.u.iblock, curr_entry, FALSE, H5AC__NO_FLAGS_SET, &did_protect)))
- HGOTO_ERROR(H5E_HEAP, H5E_CANTPROTECT, FAIL, "unable to protect fractal heap indirect block")
+ if (H5F_addr_defined(child_iblock_addr)) {
+ if (NULL == (child_iblock = H5HF__man_iblock_protect(
+ hdr, child_iblock_addr, child_nrows, sect->u.indirect.u.iblock,
+ curr_entry, FALSE, H5AC__NO_FLAGS_SET, &did_protect)))
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTPROTECT, FAIL,
+ "unable to protect fractal heap indirect block")
} /* end if */
else
child_iblock = NULL;
@@ -2566,25 +2502,26 @@ H5HF__sect_indirect_init_rows(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
child_iblock = NULL;
/* Create free space section node */
- if(NULL == (child_sect = H5HF__sect_indirect_new(hdr, curr_off, (hsize_t)0,
- child_iblock, curr_off, 0, 0, child_nentries)))
+ if (NULL == (child_sect = H5HF__sect_indirect_new(hdr, curr_off, (hsize_t)0, child_iblock,
+ curr_off, 0, 0, child_nentries)))
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't create indirect section")
/* Initialize rows for new indirect section */
- if(H5HF__sect_indirect_init_rows(hdr, child_sect,
- first_child, first_row_sect, space_flags, 0, 0,
- (child_nrows - 1), (hdr->man_dtable.cparam.width - 1)) < 0)
+ if (H5HF__sect_indirect_init_rows(hdr, child_sect, first_child, first_row_sect, space_flags,
+ 0, 0, (child_nrows - 1),
+ (hdr->man_dtable.cparam.width - 1)) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't initialize indirect section")
/* If we have a valid child indirect block, release it now */
/* (will be pinned, if rows reference it) */
- if(child_iblock)
- if(H5HF__man_iblock_unprotect(child_iblock, H5AC__NO_FLAGS_SET, did_protect) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTUNPROTECT, FAIL, "unable to release fractal heap indirect block")
+ if (child_iblock)
+ if (H5HF__man_iblock_unprotect(child_iblock, H5AC__NO_FLAGS_SET, did_protect) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTUNPROTECT, FAIL,
+ "unable to release fractal heap indirect block")
/* Attach child section to this section */
- child_sect->u.indirect.parent = sect;
- child_sect->u.indirect.par_entry = curr_entry;
+ child_sect->u.indirect.parent = sect;
+ child_sect->u.indirect.par_entry = curr_entry;
sect->u.indirect.indir_ents[curr_indir_entry] = child_sect;
sect->u.indirect.rc++;
@@ -2596,13 +2533,13 @@ H5HF__sect_indirect_init_rows(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
curr_indir_entry++;
/* Reset the 'first child' parameters */
- first_child = FALSE;
+ first_child = FALSE;
first_row_sect = NULL;
} /* end for */
- } /* end else */
+ } /* end else */
/* Compute the # of entries for the next row */
- if(u < (end_row - 1))
+ if (u < (end_row - 1))
row_entries = hdr->man_dtable.cparam.width;
else
row_entries = end_col + 1;
@@ -2615,21 +2552,19 @@ H5HF__sect_indirect_init_rows(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
sect->u.indirect.dir_nrows = dir_nrows;
/* Make certain we've tracked the section's dependents correctly */
- HDassert(sect->u.indirect.rc ==
- (sect->u.indirect.indir_nents + sect->u.indirect.dir_nrows));
+ HDassert(sect->u.indirect.rc == (sect->u.indirect.indir_nents + sect->u.indirect.dir_nrows));
done:
- if(ret_value < 0) {
- if(sect->u.indirect.indir_ents)
+ if (ret_value < 0) {
+ if (sect->u.indirect.indir_ents)
H5MM_xfree(sect->u.indirect.indir_ents);
- if(sect->u.indirect.dir_rows)
+ if (sect->u.indirect.dir_rows)
H5MM_xfree(sect->u.indirect.dir_rows);
} /* end if */
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_init_rows() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_add
*
@@ -2646,16 +2581,16 @@ done:
herr_t
H5HF__sect_indirect_add(H5HF_hdr_t *hdr, H5HF_indirect_t *iblock, unsigned start_entry, unsigned nentries)
{
- H5HF_free_section_t *sect = NULL; /* 'Indirect' free space section to add */
- H5HF_free_section_t *first_row_sect = NULL; /* First row section in new indirect section */
- hsize_t sect_off; /* Offset of section in heap space */
- unsigned start_row; /* Start row in indirect block */
- unsigned start_col; /* Start column in indirect block */
- unsigned end_entry; /* End entry in indirect block */
- unsigned end_row; /* End row in indirect block */
- unsigned end_col; /* End column in indirect block */
- unsigned u; /* Local index variable */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_free_section_t *sect = NULL; /* 'Indirect' free space section to add */
+ H5HF_free_section_t *first_row_sect = NULL; /* First row section in new indirect section */
+ hsize_t sect_off; /* Offset of section in heap space */
+ unsigned start_row; /* Start row in indirect block */
+ unsigned start_col; /* Start column in indirect block */
+ unsigned end_entry; /* End entry in indirect block */
+ unsigned end_row; /* End row in indirect block */
+ unsigned end_col; /* End column in indirect block */
+ unsigned u; /* Local index variable */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE
@@ -2672,41 +2607,40 @@ H5HF__sect_indirect_add(H5HF_hdr_t *hdr, H5HF_indirect_t *iblock, unsigned start
/* Compute end column & row */
end_entry = (start_entry + nentries) - 1;
- end_row = end_entry / hdr->man_dtable.cparam.width;
- end_col = end_entry % hdr->man_dtable.cparam.width;
+ end_row = end_entry / hdr->man_dtable.cparam.width;
+ end_col = end_entry % hdr->man_dtable.cparam.width;
/* Initialize information for rows skipped over */
sect_off = iblock->block_off;
- for(u = 0; u < start_row; u++)
+ for (u = 0; u < start_row; u++)
sect_off += hdr->man_dtable.row_block_size[u] * hdr->man_dtable.cparam.width;
sect_off += hdr->man_dtable.row_block_size[start_row] * start_col;
/* Create free space section node */
- if(NULL == (sect = H5HF__sect_indirect_new(hdr, sect_off, (hsize_t)0, iblock,
- iblock->block_off, start_row, start_col, nentries)))
+ if (NULL == (sect = H5HF__sect_indirect_new(hdr, sect_off, (hsize_t)0, iblock, iblock->block_off,
+ start_row, start_col, nentries)))
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't create indirect section")
/* Initialize rows for new indirect section */
- if(H5HF__sect_indirect_init_rows(hdr, sect, TRUE, &first_row_sect,
- H5FS_ADD_SKIP_VALID, start_row, start_col, end_row, end_col) < 0)
+ if (H5HF__sect_indirect_init_rows(hdr, sect, TRUE, &first_row_sect, H5FS_ADD_SKIP_VALID, start_row,
+ start_col, end_row, end_col) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't initialize indirect section")
HDassert(first_row_sect);
/* Now that underlying indirect section is consistent, add first row
* section to free space manager for the heap
*/
- if(H5HF__space_add(hdr, first_row_sect, H5FS_ADD_RETURNED_SPACE) < 0)
+ if (H5HF__space_add(hdr, first_row_sect, H5FS_ADD_RETURNED_SPACE) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't add row section to free space")
done:
- if(ret_value < 0 && sect)
- if(H5HF__sect_indirect_free(sect) < 0)
+ if (ret_value < 0 && sect)
+ if (H5HF__sect_indirect_free(sect) < 0)
HDONE_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free indirect section node")
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_add() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_decr
*
@@ -2722,7 +2656,7 @@ done:
static herr_t
H5HF__sect_indirect_decr(H5HF_free_section_t *sect)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -2736,27 +2670,27 @@ H5HF__sect_indirect_decr(H5HF_free_section_t *sect)
sect->u.indirect.rc--;
/* If the indirect section's ref. count drops to zero, free the section */
- if(sect->u.indirect.rc == 0) {
- H5HF_free_section_t *par_sect; /* Parent indirect section */
+ if (sect->u.indirect.rc == 0) {
+ H5HF_free_section_t *par_sect; /* Parent indirect section */
/* Preserve pointer to parent indirect section when freeing this section */
par_sect = sect->u.indirect.parent;
/* Free indirect section */
- if(H5HF__sect_indirect_free(sect) < 0)
+ if (H5HF__sect_indirect_free(sect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free indirect section node")
/* Decrement ref. count on indirect section's parent */
- if(par_sect)
- if(H5HF__sect_indirect_decr(par_sect) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't decrement ref. count on parent indirect section")
+ if (par_sect)
+ if (H5HF__sect_indirect_decr(par_sect) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL,
+ "can't decrement ref. count on parent indirect section")
} /* end if */
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_decr() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_revive_row
*
@@ -2772,9 +2706,9 @@ done:
static herr_t
H5HF__sect_indirect_revive_row(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
{
- H5HF_indirect_t *sec_iblock; /* Pointer to section indirect block */
- hbool_t did_protect; /* Whether we protected the indirect block or not */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_indirect_t *sec_iblock; /* Pointer to section indirect block */
+ hbool_t did_protect; /* Whether we protected the indirect block or not */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -2786,22 +2720,22 @@ H5HF__sect_indirect_revive_row(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
HDassert(sect->sect_info.state == H5FS_SECT_SERIALIZED);
/* Look up indirect block containing indirect blocks for section */
- if(H5HF__man_dblock_locate(hdr, sect->sect_info.addr, &sec_iblock, NULL, &did_protect, H5AC__READ_ONLY_FLAG) < 0)
+ if (H5HF__man_dblock_locate(hdr, sect->sect_info.addr, &sec_iblock, NULL, &did_protect,
+ H5AC__READ_ONLY_FLAG) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTCOMPUTE, FAIL, "can't compute row & column of section")
/* Review the section */
- if(H5HF__sect_indirect_revive(hdr, sect, sec_iblock) < 0)
+ if (H5HF__sect_indirect_revive(hdr, sect, sec_iblock) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTREVIVE, FAIL, "can't revive indirect section")
done:
/* Unlock indirect block */
- if(sec_iblock && H5HF__man_iblock_unprotect(sec_iblock, H5AC__NO_FLAGS_SET, did_protect) < 0)
+ if (sec_iblock && H5HF__man_iblock_unprotect(sec_iblock, H5AC__NO_FLAGS_SET, did_protect) < 0)
HDONE_ERROR(H5E_HEAP, H5E_CANTUNPROTECT, FAIL, "unable to release fractal heap indirect block")
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_revive_row() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_revive
*
@@ -2817,8 +2751,8 @@ done:
static herr_t
H5HF__sect_indirect_revive(H5HF_hdr_t *hdr, H5HF_free_section_t *sect, H5HF_indirect_t *sect_iblock)
{
- unsigned u; /* Local index variable */
- herr_t ret_value = SUCCEED; /* Return value */
+ unsigned u; /* Local index variable */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -2831,33 +2765,31 @@ H5HF__sect_indirect_revive(H5HF_hdr_t *hdr, H5HF_free_section_t *sect, H5HF_indi
HDassert(sect_iblock);
/* Increment reference count on indirect block that free section is in */
- if(H5HF__iblock_incr(sect_iblock) < 0)
+ if (H5HF__iblock_incr(sect_iblock) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTDEC, FAIL, "can't decrement reference count on shared indirect block")
/* Set the pointer to the section's indirect block */
sect->u.indirect.u.iblock = sect_iblock;
/* Set the number of entries in the indirect block */
- sect->u.indirect.iblock_entries = hdr->man_dtable.cparam.width *
- sect->u.indirect.u.iblock->max_rows;
+ sect->u.indirect.iblock_entries = hdr->man_dtable.cparam.width * sect->u.indirect.u.iblock->max_rows;
/* Section is "live" now */
sect->sect_info.state = H5FS_SECT_LIVE;
/* Loop over derived row sections and mark them all as 'live' now */
- for(u = 0; u < sect->u.indirect.dir_nrows; u++)
+ for (u = 0; u < sect->u.indirect.dir_nrows; u++)
sect->u.indirect.dir_rows[u]->sect_info.state = H5FS_SECT_LIVE;
/* Revive parent indirect section, if there is one */
- if(sect->u.indirect.parent && sect->u.indirect.parent->sect_info.state == H5FS_SECT_SERIALIZED)
- if(H5HF__sect_indirect_revive(hdr, sect->u.indirect.parent, sect->u.indirect.u.iblock->parent) < 0)
+ if (sect->u.indirect.parent && sect->u.indirect.parent->sect_info.state == H5FS_SECT_SERIALIZED)
+ if (H5HF__sect_indirect_revive(hdr, sect->u.indirect.parent, sect->u.indirect.u.iblock->parent) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTREVIVE, FAIL, "can't revive indirect section")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_revive() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_reduce_row
*
@@ -2873,20 +2805,19 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5HF__sect_indirect_reduce_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect,
- hbool_t *alloc_from_start)
+H5HF__sect_indirect_reduce_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect, hbool_t *alloc_from_start)
{
- H5HF_free_section_t *sect; /* Indirect section underlying row section */
- unsigned row_start_entry; /* Entry for first block covered in row section */
- unsigned row_end_entry; /* Entry for last block covered in row section */
- unsigned row_entry; /* Entry to allocate in row section */
- unsigned start_entry; /* Entry for first block covered */
- unsigned start_row; /* Start row in indirect block */
- unsigned start_col; /* Start column in indirect block */
- unsigned end_entry; /* Entry for last block covered */
- unsigned end_row; /* End row in indirect block */
- H5HF_free_section_t *peer_sect = NULL; /* Peer indirect section */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_free_section_t *sect; /* Indirect section underlying row section */
+ unsigned row_start_entry; /* Entry for first block covered in row section */
+ unsigned row_end_entry; /* Entry for last block covered in row section */
+ unsigned row_entry; /* Entry to allocate in row section */
+ unsigned start_entry; /* Entry for first block covered */
+ unsigned start_row; /* Start row in indirect block */
+ unsigned start_col; /* Start column in indirect block */
+ unsigned end_entry; /* Entry for last block covered */
+ unsigned end_row; /* End row in indirect block */
+ H5HF_free_section_t *peer_sect = NULL; /* Peer indirect section */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -2898,15 +2829,15 @@ H5HF__sect_indirect_reduce_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect,
/* Compute starting & ending information for row section */
row_start_entry = (row_sect->u.row.row * hdr->man_dtable.cparam.width) + row_sect->u.row.col;
- row_end_entry = (row_start_entry + row_sect->u.row.num_entries) - 1;
+ row_end_entry = (row_start_entry + row_sect->u.row.num_entries) - 1;
/* Compute starting & ending information for indirect section */
- sect = row_sect->u.row.under;
- start_row = sect->u.indirect.row;
- start_col = sect->u.indirect.col;
+ sect = row_sect->u.row.under;
+ start_row = sect->u.indirect.row;
+ start_col = sect->u.indirect.col;
start_entry = (start_row * hdr->man_dtable.cparam.width) + start_col;
- end_entry = (start_entry + sect->u.indirect.num_entries) - 1;
- end_row = end_entry / hdr->man_dtable.cparam.width;
+ end_entry = (start_entry + sect->u.indirect.num_entries) - 1;
+ end_row = end_entry / hdr->man_dtable.cparam.width;
/* Additional sanity check */
HDassert(sect->u.indirect.span_size > 0);
@@ -2916,31 +2847,31 @@ H5HF__sect_indirect_reduce_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect,
HDassert(sect->u.indirect.dir_rows[(row_sect->u.row.row - start_row)] == row_sect);
/* Check if we should allocate from end of indirect section */
- if(row_end_entry == end_entry && start_row != end_row) {
+ if (row_end_entry == end_entry && start_row != end_row) {
*alloc_from_start = FALSE;
- row_entry = row_end_entry;
+ row_entry = row_end_entry;
} /* end if */
else {
*alloc_from_start = TRUE;
- row_entry = row_start_entry;
+ row_entry = row_start_entry;
} /* end else */
/* Check if we have a parent section to be detached from */
- if(sect->u.indirect.parent) {
- hbool_t is_first; /* Flag to indicate that this section is the first section in hierarchy */
+ if (sect->u.indirect.parent) {
+ hbool_t is_first; /* Flag to indicate that this section is the first section in hierarchy */
/* Check if this section is the first section */
is_first = H5HF__sect_indirect_is_first(sect);
/* Remove this indirect section from parent indirect section */
- if(H5HF__sect_indirect_reduce(hdr, sect->u.indirect.parent, sect->u.indirect.par_entry) < 0)
+ if (H5HF__sect_indirect_reduce(hdr, sect->u.indirect.parent, sect->u.indirect.par_entry) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTSHRINK, FAIL, "can't reduce parent indirect section")
- sect->u.indirect.parent = NULL;
+ sect->u.indirect.parent = NULL;
sect->u.indirect.par_entry = 0;
/* If we weren't the first section, set "first row" for this indirect section */
- if(!is_first)
- if(H5HF__sect_indirect_first(hdr, sect) < 0)
+ if (!is_first)
+ if (H5HF__sect_indirect_first(hdr, sect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't make new 'first row' for indirect section")
} /* end if */
@@ -2948,14 +2879,14 @@ H5HF__sect_indirect_reduce_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect,
sect->u.indirect.span_size -= row_sect->sect_info.size;
/* Check how to adjust section for allocated entry */
- if(sect->u.indirect.num_entries > 1) {
- if(row_entry == start_entry) {
+ if (sect->u.indirect.num_entries > 1) {
+ if (row_entry == start_entry) {
/* Adjust section start */
sect->sect_info.addr += hdr->man_dtable.row_block_size[sect->u.indirect.row];
/* Adjust block coordinates of span */
sect->u.indirect.col++;
- if(sect->u.indirect.col == hdr->man_dtable.cparam.width) {
+ if (sect->u.indirect.col == hdr->man_dtable.cparam.width) {
HDassert(row_sect->u.row.num_entries == 1);
/* Adjust section's span information */
@@ -2966,17 +2897,17 @@ H5HF__sect_indirect_reduce_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect,
sect->u.indirect.dir_nrows--;
/* Adjust direct row sections for indirect section */
- if(sect->u.indirect.dir_nrows > 0) {
+ if (sect->u.indirect.dir_nrows > 0) {
HDassert(sect->u.indirect.dir_rows);
- HDmemmove(&sect->u.indirect.dir_rows[0],
- &sect->u.indirect.dir_rows[1],
- sect->u.indirect.dir_nrows * sizeof(H5HF_free_section_t *));
+ HDmemmove(&sect->u.indirect.dir_rows[0], &sect->u.indirect.dir_rows[1],
+ sect->u.indirect.dir_nrows * sizeof(H5HF_free_section_t *));
HDassert(sect->u.indirect.dir_rows[0]);
/* Make new "first row" in indirect section */
- if(row_sect->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW)
- if(H5HF__sect_row_first(hdr, sect->u.indirect.dir_rows[0]) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't make new 'first row' for indirect section")
+ if (row_sect->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW)
+ if (H5HF__sect_row_first(hdr, sect->u.indirect.dir_rows[0]) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL,
+ "can't make new 'first row' for indirect section")
} /* end if */
else {
/* Sanity check */
@@ -2987,17 +2918,18 @@ H5HF__sect_indirect_reduce_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect,
sect->u.indirect.dir_rows = (H5HF_free_section_t **)H5MM_xfree(sect->u.indirect.dir_rows);
/* Make new "first row" in indirect section */
- if(row_sect->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW)
- if(H5HF__sect_indirect_first(hdr, sect->u.indirect.indir_ents[0]) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't make new 'first row' for child indirect section")
+ if (row_sect->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW)
+ if (H5HF__sect_indirect_first(hdr, sect->u.indirect.indir_ents[0]) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL,
+ "can't make new 'first row' for child indirect section")
} /* end else */
- } /* end if */
+ } /* end if */
/* Adjust number of entries covered */
sect->u.indirect.num_entries--;
} /* end if */
- else if(row_entry == end_entry) {
- unsigned new_end_row; /* New end row for entries */
+ else if (row_entry == end_entry) {
+ unsigned new_end_row; /* New end row for entries */
/* Sanity check */
HDassert(sect->u.indirect.indir_nents == 0);
@@ -3009,18 +2941,18 @@ H5HF__sect_indirect_reduce_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect,
/* Check for eliminating a direct row */
new_end_row = ((start_entry + sect->u.indirect.num_entries) - 1) / hdr->man_dtable.cparam.width;
HDassert(new_end_row <= end_row);
- if(new_end_row < end_row) {
+ if (new_end_row < end_row) {
HDassert(new_end_row == (end_row - 1));
sect->u.indirect.dir_nrows--;
} /* end if */
- } /* end if */
+ } /* end if */
else {
- H5HF_indirect_t *iblock; /* Pointer to indirect block for this section */
- hsize_t iblock_off; /* Section's indirect block's offset in "heap space" */
- unsigned peer_nentries; /* Number of entries in new peer indirect section */
- unsigned peer_dir_nrows; /* Number of direct rows in new peer indirect section */
- unsigned new_start_row; /* New starting row for current indirect section */
- unsigned u; /* Local index variable */
+ H5HF_indirect_t *iblock; /* Pointer to indirect block for this section */
+ hsize_t iblock_off; /* Section's indirect block's offset in "heap space" */
+ unsigned peer_nentries; /* Number of entries in new peer indirect section */
+ unsigned peer_dir_nrows; /* Number of direct rows in new peer indirect section */
+ unsigned new_start_row; /* New starting row for current indirect section */
+ unsigned u; /* Local index variable */
/* Sanity checks */
HDassert(row_sect->u.row.col == 0);
@@ -3030,45 +2962,44 @@ H5HF__sect_indirect_reduce_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect,
HDassert(row_sect->sect_info.type == H5HF_FSPACE_SECT_NORMAL_ROW);
/* Compute basic information about peer & current indirect sections */
- new_start_row = row_sect->u.row.row;
- peer_nentries = row_entry - start_entry;
+ new_start_row = row_sect->u.row.row;
+ peer_nentries = row_entry - start_entry;
peer_dir_nrows = new_start_row - start_row;
/* Get indirect block information for peer */
- if(sect->sect_info.state == H5FS_SECT_LIVE) {
- iblock = sect->u.indirect.u.iblock;
+ if (sect->sect_info.state == H5FS_SECT_LIVE) {
+ iblock = sect->u.indirect.u.iblock;
iblock_off = sect->u.indirect.u.iblock->block_off;
} /* end if */
else {
- iblock = NULL;
+ iblock = NULL;
iblock_off = sect->u.indirect.u.iblock_off;
} /* end else */
/* Create peer indirect section */
- if(NULL == (peer_sect = H5HF__sect_indirect_new(hdr, sect->sect_info.addr,
- sect->sect_info.size, iblock, iblock_off, start_row, start_col,
- peer_nentries)))
+ if (NULL ==
+ (peer_sect = H5HF__sect_indirect_new(hdr, sect->sect_info.addr, sect->sect_info.size, iblock,
+ iblock_off, start_row, start_col, peer_nentries)))
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't create indirect section")
/* Set up direct row & indirect entry information for peer section */
peer_sect->u.indirect.indir_nents = 0;
- peer_sect->u.indirect.indir_ents = NULL;
- peer_sect->u.indirect.dir_nrows = peer_dir_nrows;
- if(NULL == (peer_sect->u.indirect.dir_rows = (H5HF_free_section_t **)H5MM_malloc(sizeof(H5HF_free_section_t *) * peer_dir_nrows)))
+ peer_sect->u.indirect.indir_ents = NULL;
+ peer_sect->u.indirect.dir_nrows = peer_dir_nrows;
+ if (NULL == (peer_sect->u.indirect.dir_rows = (H5HF_free_section_t **)H5MM_malloc(
+ sizeof(H5HF_free_section_t *) * peer_dir_nrows)))
HGOTO_ERROR(H5E_HEAP, H5E_CANTALLOC, FAIL, "allocation failed for row section pointer array")
/* Transfer row sections between current & peer sections */
- H5MM_memcpy(&peer_sect->u.indirect.dir_rows[0],
- &sect->u.indirect.dir_rows[0],
- (sizeof(H5HF_free_section_t *) * peer_dir_nrows));
- HDmemmove(&sect->u.indirect.dir_rows[0],
- &sect->u.indirect.dir_rows[peer_dir_nrows],
- (sizeof(H5HF_free_section_t *) * (sect->u.indirect.dir_nrows - peer_dir_nrows)));
+ H5MM_memcpy(&peer_sect->u.indirect.dir_rows[0], &sect->u.indirect.dir_rows[0],
+ (sizeof(H5HF_free_section_t *) * peer_dir_nrows));
+ HDmemmove(&sect->u.indirect.dir_rows[0], &sect->u.indirect.dir_rows[peer_dir_nrows],
+ (sizeof(H5HF_free_section_t *) * (sect->u.indirect.dir_nrows - peer_dir_nrows)));
sect->u.indirect.dir_nrows -= peer_dir_nrows;
HDassert(row_sect == sect->u.indirect.dir_rows[0]);
/* Re-target transferred row sections to point to new underlying indirect section */
- for(u = 0; u < peer_dir_nrows; u++)
+ for (u = 0; u < peer_dir_nrows; u++)
peer_sect->u.indirect.dir_rows[u]->u.row.under = peer_sect;
/* Change first row section in indirect section to be the "first row" */
@@ -3084,25 +3015,27 @@ H5HF__sect_indirect_reduce_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect,
/* Transfer/update cached information about indirect block */
peer_sect->u.indirect.iblock_entries = sect->u.indirect.iblock_entries;
- peer_sect->u.indirect.span_size = row_sect->sect_info.addr - peer_sect->sect_info.addr;
+ peer_sect->u.indirect.span_size = row_sect->sect_info.addr - peer_sect->sect_info.addr;
/* Update information for current section */
sect->sect_info.addr = row_sect->sect_info.addr + hdr->man_dtable.row_block_size[new_start_row];
- sect->u.indirect.span_size -= peer_sect->u.indirect.span_size; /* (span for row section has already been removed) */
+ sect->u.indirect.span_size -=
+ peer_sect->u.indirect.span_size; /* (span for row section has already been removed) */
sect->u.indirect.row = new_start_row;
sect->u.indirect.col = row_sect->u.row.col + 1;
- sect->u.indirect.num_entries -= (peer_nentries + 1); /* Transferred entries, plus the entry allocated out of the row */
+ sect->u.indirect.num_entries -=
+ (peer_nentries + 1); /* Transferred entries, plus the entry allocated out of the row */
/* Make certain we've tracked the sections' dependents correctly */
- HDassert(sect->u.indirect.rc ==
- (sect->u.indirect.indir_nents + sect->u.indirect.dir_nrows));
+ HDassert(sect->u.indirect.rc == (sect->u.indirect.indir_nents + sect->u.indirect.dir_nrows));
HDassert(peer_sect->u.indirect.rc ==
- (peer_sect->u.indirect.indir_nents + peer_sect->u.indirect.dir_nrows));
+ (peer_sect->u.indirect.indir_nents + peer_sect->u.indirect.dir_nrows));
- /* Reset the peer_sect variable, to indicate that it has been hooked into the data structures correctly and shouldn't be freed */
+ /* Reset the peer_sect variable, to indicate that it has been hooked into the data structures
+ * correctly and shouldn't be freed */
peer_sect = NULL;
} /* end else */
- } /* end if */
+ } /* end if */
else {
/* Decrement count of entries & rows */
sect->u.indirect.num_entries--;
@@ -3116,18 +3049,17 @@ H5HF__sect_indirect_reduce_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect,
done:
/* Free allocated peer_sect. Note that this is necessary for all failures until peer_sect is linked
* into the main free space structures (via the direct blocks), and the reference count is updated. */
- if(peer_sect) {
+ if (peer_sect) {
/* Sanity check - we should only be here if an error occurred */
HDassert(ret_value < 0);
- if(H5HF__sect_indirect_free(peer_sect) < 0)
+ if (H5HF__sect_indirect_free(peer_sect) < 0)
HDONE_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free indirect section node")
} /* end if */
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_reduce_row() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_reduce
*
@@ -3143,16 +3075,15 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5HF__sect_indirect_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
- unsigned child_entry)
+H5HF__sect_indirect_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect, unsigned child_entry)
{
- unsigned start_entry; /* Entry for first block covered */
- unsigned start_row; /* Start row in indirect block */
- unsigned start_col; /* Start column in indirect block */
- unsigned end_entry; /* Entry for last block covered */
- unsigned end_row; /* End row in indirect block */
- H5HF_free_section_t *peer_sect = NULL; /* Peer indirect section */
- herr_t ret_value = SUCCEED; /* Return value */
+ unsigned start_entry; /* Entry for first block covered */
+ unsigned start_row; /* Start row in indirect block */
+ unsigned start_col; /* Start column in indirect block */
+ unsigned end_entry; /* Entry for last block covered */
+ unsigned end_row; /* End row in indirect block */
+ H5HF_free_section_t *peer_sect = NULL; /* Peer indirect section */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -3165,35 +3096,36 @@ H5HF__sect_indirect_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
HDassert(sect->u.indirect.iblock_entries > 0);
/* Compute starting & ending information for indirect section */
- start_row = sect->u.indirect.row;
- start_col = sect->u.indirect.col;
+ start_row = sect->u.indirect.row;
+ start_col = sect->u.indirect.col;
start_entry = (start_row * hdr->man_dtable.cparam.width) + start_col;
- end_entry = (start_entry + sect->u.indirect.num_entries) - 1;
- end_row = end_entry / hdr->man_dtable.cparam.width;
+ end_entry = (start_entry + sect->u.indirect.num_entries) - 1;
+ end_row = end_entry / hdr->man_dtable.cparam.width;
/* Check how to adjust section for allocated entry */
- if(sect->u.indirect.num_entries > 1) {
+ if (sect->u.indirect.num_entries > 1) {
/* Check if we have a parent section to be detached from */
- if(sect->u.indirect.parent) {
- hbool_t is_first; /* Flag to indicate that this section is the first section in hierarchy */
+ if (sect->u.indirect.parent) {
+ hbool_t is_first; /* Flag to indicate that this section is the first section in hierarchy */
/* Check if this section is the first section */
is_first = H5HF__sect_indirect_is_first(sect);
/* Reduce parent indirect section */
- if(H5HF__sect_indirect_reduce(hdr, sect->u.indirect.parent, sect->u.indirect.par_entry) < 0)
+ if (H5HF__sect_indirect_reduce(hdr, sect->u.indirect.parent, sect->u.indirect.par_entry) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTSHRINK, FAIL, "can't reduce parent indirect section")
- sect->u.indirect.parent = NULL;
+ sect->u.indirect.parent = NULL;
sect->u.indirect.par_entry = 0;
/* If we weren't the first section, set "first row" for this indirect section */
- if(!is_first)
- if(H5HF__sect_indirect_first(hdr, sect) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't make new 'first row' for indirect section")
+ if (!is_first)
+ if (H5HF__sect_indirect_first(hdr, sect) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL,
+ "can't make new 'first row' for indirect section")
} /* end if */
/* Check if we can allocate from start of indirect section */
- if(child_entry == start_entry) {
+ if (child_entry == start_entry) {
/* Sanity check */
HDassert(sect->u.indirect.dir_nrows == 0);
HDassert(sect->u.indirect.dir_rows == NULL);
@@ -3205,7 +3137,7 @@ H5HF__sect_indirect_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
/* Adjust span of blocks covered */
sect->u.indirect.col++;
- if(sect->u.indirect.col == hdr->man_dtable.cparam.width) {
+ if (sect->u.indirect.col == hdr->man_dtable.cparam.width) {
sect->u.indirect.row++;
sect->u.indirect.col = 0;
} /* end if */
@@ -3214,16 +3146,16 @@ H5HF__sect_indirect_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
/* Adjust indirect entry information */
sect->u.indirect.indir_nents--;
- HDmemmove(&sect->u.indirect.indir_ents[0],
- &sect->u.indirect.indir_ents[1],
- sect->u.indirect.indir_nents * sizeof(H5HF_free_section_t *));
+ HDmemmove(&sect->u.indirect.indir_ents[0], &sect->u.indirect.indir_ents[1],
+ sect->u.indirect.indir_nents * sizeof(H5HF_free_section_t *));
HDassert(sect->u.indirect.indir_ents[0]);
/* Make new "first row" in new first indirect child section */
- if(H5HF__sect_indirect_first(hdr, sect->u.indirect.indir_ents[0]) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't make new 'first row' for child indirect section")
+ if (H5HF__sect_indirect_first(hdr, sect->u.indirect.indir_ents[0]) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL,
+ "can't make new 'first row' for child indirect section")
} /* end if */
- else if(child_entry == end_entry) {
+ else if (child_entry == end_entry) {
/* Sanity check */
HDassert(sect->u.indirect.indir_nents > 0);
HDassert(sect->u.indirect.indir_ents);
@@ -3234,47 +3166,47 @@ H5HF__sect_indirect_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
/* Adjust indirect entry information */
sect->u.indirect.indir_nents--;
- if(sect->u.indirect.indir_nents == 0)
+ if (sect->u.indirect.indir_nents == 0)
sect->u.indirect.indir_ents = (H5HF_free_section_t **)H5MM_xfree(sect->u.indirect.indir_ents);
} /* end if */
else {
- H5HF_indirect_t *iblock; /* Pointer to indirect block for this section */
- hsize_t iblock_off; /* Section's indirect block's offset in "heap space" */
- haddr_t peer_sect_addr; /* Address of new peer section in "heap space" */
- unsigned peer_nentries; /* Number of entries in new peer indirect section */
- unsigned peer_start_row; /* Starting row for new peer indirect section */
- unsigned peer_start_col; /* Starting column for new peer indirect section */
- unsigned child_row; /* Row where child entry is located */
- unsigned new_nentries; /* New number of entries for current indirect section */
- unsigned u; /* Local index variable */
+ H5HF_indirect_t *iblock; /* Pointer to indirect block for this section */
+ hsize_t iblock_off; /* Section's indirect block's offset in "heap space" */
+ haddr_t peer_sect_addr; /* Address of new peer section in "heap space" */
+ unsigned peer_nentries; /* Number of entries in new peer indirect section */
+ unsigned peer_start_row; /* Starting row for new peer indirect section */
+ unsigned peer_start_col; /* Starting column for new peer indirect section */
+ unsigned child_row; /* Row where child entry is located */
+ unsigned new_nentries; /* New number of entries for current indirect section */
+ unsigned u; /* Local index variable */
/* Sanity check */
HDassert(sect->u.indirect.indir_nents > 0);
HDassert(sect->u.indirect.indir_ents);
/* Compute basic information about peer & current indirect sections */
- peer_nentries = end_entry - child_entry;
+ peer_nentries = end_entry - child_entry;
peer_start_row = (child_entry + 1) / hdr->man_dtable.cparam.width;
peer_start_col = (child_entry + 1) % hdr->man_dtable.cparam.width;
- child_row = child_entry / hdr->man_dtable.cparam.width;
- new_nentries = sect->u.indirect.num_entries - (peer_nentries + 1);
+ child_row = child_entry / hdr->man_dtable.cparam.width;
+ new_nentries = sect->u.indirect.num_entries - (peer_nentries + 1);
HDassert(child_row >= hdr->man_dtable.max_direct_rows);
/* Get indirect block information for peer */
- if(sect->sect_info.state == H5FS_SECT_LIVE) {
- iblock = sect->u.indirect.u.iblock;
+ if (sect->sect_info.state == H5FS_SECT_LIVE) {
+ iblock = sect->u.indirect.u.iblock;
iblock_off = sect->u.indirect.u.iblock->block_off;
} /* end if */
else {
- iblock = NULL;
+ iblock = NULL;
iblock_off = sect->u.indirect.u.iblock_off;
} /* end else */
/* Update the number of entries in current section & calculate it's span size */
/* (Will use this to compute the section address for the peer section */
sect->u.indirect.num_entries = new_nentries;
- sect->u.indirect.span_size = H5HF__dtable_span_size(&hdr->man_dtable,
- sect->u.indirect.row, sect->u.indirect.col, new_nentries);
+ sect->u.indirect.span_size = H5HF__dtable_span_size(&hdr->man_dtable, sect->u.indirect.row,
+ sect->u.indirect.col, new_nentries);
HDassert(sect->u.indirect.span_size > 0);
/* Compute address of peer indirect section */
@@ -3283,30 +3215,32 @@ H5HF__sect_indirect_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
peer_sect_addr += hdr->man_dtable.row_block_size[child_row];
/* Create peer indirect section */
- if(NULL == (peer_sect = H5HF__sect_indirect_new(hdr, peer_sect_addr,
- sect->sect_info.size, iblock, iblock_off, peer_start_row,
- peer_start_col, peer_nentries)))
+ if (NULL == (peer_sect = H5HF__sect_indirect_new(hdr, peer_sect_addr, sect->sect_info.size,
+ iblock, iblock_off, peer_start_row,
+ peer_start_col, peer_nentries)))
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't create indirect section")
/* Set up direct row & indirect entry information for peer section */
- peer_sect->u.indirect.dir_nrows = 0;
- peer_sect->u.indirect.dir_rows = NULL;
+ peer_sect->u.indirect.dir_nrows = 0;
+ peer_sect->u.indirect.dir_rows = NULL;
peer_sect->u.indirect.indir_nents = peer_nentries;
- if(NULL == (peer_sect->u.indirect.indir_ents = (H5HF_free_section_t **)H5MM_malloc(sizeof(H5HF_free_section_t *) * peer_nentries)))
- HGOTO_ERROR(H5E_HEAP, H5E_CANTALLOC, FAIL, "allocation failed for indirect section pointer array")
+ if (NULL == (peer_sect->u.indirect.indir_ents = (H5HF_free_section_t **)H5MM_malloc(
+ sizeof(H5HF_free_section_t *) * peer_nentries)))
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTALLOC, FAIL,
+ "allocation failed for indirect section pointer array")
/* Transfer child indirect sections between current & peer sections */
H5MM_memcpy(&peer_sect->u.indirect.indir_ents[0],
- &sect->u.indirect.indir_ents[sect->u.indirect.indir_nents - peer_nentries],
- (sizeof(H5HF_free_section_t *) * peer_nentries));
+ &sect->u.indirect.indir_ents[sect->u.indirect.indir_nents - peer_nentries],
+ (sizeof(H5HF_free_section_t *) * peer_nentries));
sect->u.indirect.indir_nents -= (peer_nentries + 1); /* Transferred blocks, plus child entry */
/* Eliminate indirect entries for this section, if appropriate */
- if(sect->u.indirect.indir_nents == 0)
+ if (sect->u.indirect.indir_nents == 0)
sect->u.indirect.indir_ents = (H5HF_free_section_t **)H5MM_xfree(sect->u.indirect.indir_ents);
/* Re-target transferred row sections to point to new underlying indirect section */
- for(u = 0; u < peer_nentries; u++)
+ for (u = 0; u < peer_nentries; u++)
peer_sect->u.indirect.indir_ents[u]->u.indirect.parent = peer_sect;
/* Adjust reference counts for current & peer sections */
@@ -3321,18 +3255,20 @@ H5HF__sect_indirect_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
* detached the child section yet)
*/
HDassert((sect->u.indirect.rc - 1) ==
- (sect->u.indirect.indir_nents + sect->u.indirect.dir_nrows));
+ (sect->u.indirect.indir_nents + sect->u.indirect.dir_nrows));
HDassert(peer_sect->u.indirect.rc ==
- (peer_sect->u.indirect.indir_nents + peer_sect->u.indirect.dir_nrows));
+ (peer_sect->u.indirect.indir_nents + peer_sect->u.indirect.dir_nrows));
/* Make new "first row" in peer section */
- if(H5HF__sect_indirect_first(hdr, peer_sect->u.indirect.indir_ents[0]) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't make new 'first row' for peer indirect section")
+ if (H5HF__sect_indirect_first(hdr, peer_sect->u.indirect.indir_ents[0]) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL,
+ "can't make new 'first row' for peer indirect section")
- /* Reset the peer_sect variable, to indicate that it has been hooked into the data structures correctly and shouldn't be freed */
+ /* Reset the peer_sect variable, to indicate that it has been hooked into the data structures
+ * correctly and shouldn't be freed */
peer_sect = NULL;
} /* end else */
- } /* end if */
+ } /* end if */
else {
/* Decrement count of entries & indirect entries */
sect->u.indirect.num_entries--;
@@ -3345,24 +3281,23 @@ H5HF__sect_indirect_reduce(H5HF_hdr_t *hdr, H5HF_free_section_t *sect,
/* Decrement # of sections which depend on this row */
/* (Must be last as section can be freed) */
- if(H5HF__sect_indirect_decr(sect) < 0)
+ if (H5HF__sect_indirect_decr(sect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't decrement section's ref. count ")
done:
/* Free allocated peer_sect. Note that this is necessary for all failures until peer_sect is linked
* into the main free space structures (via the direct blocks), and the reference count is updated. */
- if(peer_sect) {
+ if (peer_sect) {
/* Sanity check - we should only be here if an error occurred */
HDassert(ret_value < 0);
- if(H5HF__sect_indirect_free(peer_sect) < 0)
+ if (H5HF__sect_indirect_free(peer_sect) < 0)
HDONE_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free indirect section node")
} /* end if */
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_reduce() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_is_first
*
@@ -3378,7 +3313,7 @@ done:
static hbool_t
H5HF__sect_indirect_is_first(H5HF_free_section_t *sect)
{
- hbool_t ret_value = FALSE; /* Return value */
+ hbool_t ret_value = FALSE; /* Return value */
FUNC_ENTER_STATIC_NOERR
@@ -3386,8 +3321,8 @@ H5HF__sect_indirect_is_first(H5HF_free_section_t *sect)
HDassert(sect);
/* Recurse to parent */
- if(sect->u.indirect.parent) {
- if(sect->sect_info.addr == sect->u.indirect.parent->sect_info.addr)
+ if (sect->u.indirect.parent) {
+ if (sect->sect_info.addr == sect->u.indirect.parent->sect_info.addr)
ret_value = H5HF__sect_indirect_is_first(sect->u.indirect.parent);
} /* end if */
else
@@ -3396,7 +3331,6 @@ H5HF__sect_indirect_is_first(H5HF_free_section_t *sect)
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_is_first() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_first
*
@@ -3412,7 +3346,7 @@ H5HF__sect_indirect_is_first(H5HF_free_section_t *sect)
static herr_t
H5HF__sect_indirect_first(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -3421,7 +3355,7 @@ H5HF__sect_indirect_first(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
HDassert(sect);
/* Check if this indirect section has direct block rows */
- if(sect->u.indirect.dir_nrows > 0) {
+ if (sect->u.indirect.dir_nrows > 0) {
/* Sanity checks */
HDassert(sect->u.indirect.row == 0);
HDassert(sect->u.indirect.col == 0);
@@ -3429,7 +3363,7 @@ H5HF__sect_indirect_first(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
HDassert(sect->u.indirect.dir_rows[0]);
/* Change first row section in indirect section to be the "first row" */
- if(H5HF__sect_row_first(hdr, sect->u.indirect.dir_rows[0]) < 0)
+ if (H5HF__sect_row_first(hdr, sect->u.indirect.dir_rows[0]) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTSET, FAIL, "can't set row section to be first row")
} /* end if */
else {
@@ -3439,7 +3373,7 @@ H5HF__sect_indirect_first(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
HDassert(sect->u.indirect.indir_ents[0]);
/* Forward to first child indirect section */
- if(H5HF__sect_indirect_first(hdr, sect->u.indirect.indir_ents[0]) < 0)
+ if (H5HF__sect_indirect_first(hdr, sect->u.indirect.indir_ents[0]) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTSET, FAIL, "can't set child indirect section to be first row")
} /* end else */
@@ -3447,7 +3381,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_first() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_get_iblock
*
@@ -3475,7 +3408,6 @@ H5HF__sect_indirect_get_iblock(H5HF_free_section_t *sect)
FUNC_LEAVE_NOAPI(sect->u.indirect.u.iblock)
} /* end H5HF__sect_indirect_get_iblock() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_merge_row
*
@@ -3493,18 +3425,17 @@ H5HF__sect_indirect_get_iblock(H5HF_free_section_t *sect)
*-------------------------------------------------------------------------
*/
static herr_t
-H5HF__sect_indirect_merge_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect1,
- H5HF_free_section_t *row_sect2)
+H5HF__sect_indirect_merge_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect1, H5HF_free_section_t *row_sect2)
{
- H5HF_free_section_t *sect1, *sect2; /* Indirect sections underlying row sections */
- unsigned start_entry1; /* Start entry for section #1 */
- unsigned start_row1, start_col1; /* Starting row & column for section #1 */
- unsigned end_entry1; /* End entry for section #1 */
- unsigned end_row1; /* Ending row for section #1 */
- unsigned start_row2; /* Starting row for section #2 */
- hbool_t merged_rows; /* Flag to indicate that rows was merged together */
- unsigned u; /* Local index variable */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_free_section_t *sect1, *sect2; /* Indirect sections underlying row sections */
+ unsigned start_entry1; /* Start entry for section #1 */
+ unsigned start_row1, start_col1; /* Starting row & column for section #1 */
+ unsigned end_entry1; /* End entry for section #1 */
+ unsigned end_row1; /* Ending row for section #1 */
+ unsigned start_row2; /* Starting row for section #2 */
+ hbool_t merged_rows; /* Flag to indicate that rows was merged together */
+ unsigned u; /* Local index variable */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -3527,22 +3458,22 @@ H5HF__sect_indirect_merge_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect1,
HDassert(sect2->u.indirect.span_size > 0);
/* Set up span information */
- start_row1 = sect1->u.indirect.row;
- start_col1 = sect1->u.indirect.col;
+ start_row1 = sect1->u.indirect.row;
+ start_col1 = sect1->u.indirect.col;
start_entry1 = (start_row1 * hdr->man_dtable.cparam.width) + start_col1;
- end_entry1 = (start_entry1 + sect1->u.indirect.num_entries) - 1;
- end_row1 = end_entry1 / hdr->man_dtable.cparam.width;
- start_row2 = sect2->u.indirect.row;
+ end_entry1 = (start_entry1 + sect1->u.indirect.num_entries) - 1;
+ end_row1 = end_entry1 / hdr->man_dtable.cparam.width;
+ start_row2 = sect2->u.indirect.row;
/* Check for direct sections in second section */
/* (second indirect section can be parent of indirect section for second
* row, and thus have no row sections of it's own)
*/
- if(sect2->u.indirect.dir_nrows > 0) {
- hsize_t sect1_iblock_off, sect2_iblock_off; /* Offset of indirect block underlying row section */
- unsigned new_dir_nrows1; /* New value for number of direct rows in first section */
- unsigned src_row2; /* Source row for copying from second section */
- unsigned nrows_moved2; /* Number of rows to move from second section to first */
+ if (sect2->u.indirect.dir_nrows > 0) {
+ hsize_t sect1_iblock_off, sect2_iblock_off; /* Offset of indirect block underlying row section */
+ unsigned new_dir_nrows1; /* New value for number of direct rows in first section */
+ unsigned src_row2; /* Source row for copying from second section */
+ unsigned nrows_moved2; /* Number of rows to move from second section to first */
/* Sanity check child row assumptions */
/* (second indirect section should be at top of equal or deeper
@@ -3554,21 +3485,21 @@ H5HF__sect_indirect_merge_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect1,
HDassert(sect1->u.indirect.dir_rows);
/* Get the offsets for the indirect blocks under the rows */
- if(H5FS_SECT_LIVE == row_sect1->u.row.under->sect_info.state)
+ if (H5FS_SECT_LIVE == row_sect1->u.row.under->sect_info.state)
sect1_iblock_off = row_sect1->u.row.under->u.indirect.u.iblock->block_off;
else
sect1_iblock_off = row_sect1->u.row.under->u.indirect.u.iblock_off;
- if(H5FS_SECT_LIVE == row_sect2->u.row.under->sect_info.state)
+ if (H5FS_SECT_LIVE == row_sect2->u.row.under->sect_info.state)
sect2_iblock_off = row_sect2->u.row.under->u.indirect.u.iblock->block_off;
else
sect2_iblock_off = row_sect2->u.row.under->u.indirect.u.iblock_off;
/* Check for sections sharing a row in the same underlying indirect block */
- if(sect1_iblock_off == sect2_iblock_off && end_row1 == start_row2) {
- H5HF_free_section_t *last_row_sect1; /* Last row in first indirect section */
+ if (sect1_iblock_off == sect2_iblock_off && end_row1 == start_row2) {
+ H5HF_free_section_t *last_row_sect1; /* Last row in first indirect section */
/* Locate the last row section in first indirect section, if we don't already have it */
- if(row_sect1->u.row.row != end_row1)
+ if (row_sect1->u.row.row != end_row1)
last_row_sect1 = sect1->u.indirect.dir_rows[sect1->u.indirect.dir_nrows - 1];
else
last_row_sect1 = row_sect1;
@@ -3580,8 +3511,8 @@ H5HF__sect_indirect_merge_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect1,
last_row_sect1->u.row.num_entries += row_sect2->u.row.num_entries;
/* Set up parameters for transfer of rows */
- src_row2 = 1;
- nrows_moved2 = sect2->u.indirect.dir_nrows - 1;
+ src_row2 = 1;
+ nrows_moved2 = sect2->u.indirect.dir_nrows - 1;
new_dir_nrows1 = (sect1->u.indirect.dir_nrows + sect2->u.indirect.dir_nrows) - 1;
/* Indicate that the rows were merged */
@@ -3590,8 +3521,8 @@ H5HF__sect_indirect_merge_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect1,
else {
/* Set up parameters for transfer of rows */
- src_row2 = 0;
- nrows_moved2 = sect2->u.indirect.dir_nrows;
+ src_row2 = 0;
+ nrows_moved2 = sect2->u.indirect.dir_nrows;
new_dir_nrows1 = sect1->u.indirect.dir_nrows + sect2->u.indirect.dir_nrows;
/* Indicate that the rows were _not_ merged */
@@ -3599,21 +3530,22 @@ H5HF__sect_indirect_merge_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect1,
} /* end else */
/* Check if we need to move additional rows */
- if(nrows_moved2 > 0) {
- H5HF_free_section_t **new_dir_rows; /* Pointer to new array of direct row pointers */
+ if (nrows_moved2 > 0) {
+ H5HF_free_section_t **new_dir_rows; /* Pointer to new array of direct row pointers */
/* Extend the first section's row array */
- if(NULL == (new_dir_rows = (H5HF_free_section_t **)H5MM_realloc(sect1->u.indirect.dir_rows, sizeof(H5HF_free_section_t *) * new_dir_nrows1)))
+ if (NULL == (new_dir_rows = (H5HF_free_section_t **)H5MM_realloc(
+ sect1->u.indirect.dir_rows, sizeof(H5HF_free_section_t *) * new_dir_nrows1)))
HGOTO_ERROR(H5E_HEAP, H5E_NOSPACE, FAIL, "allocation failed for row section pointer array")
sect1->u.indirect.dir_rows = new_dir_rows;
/* Transfer the second section's rows to first section */
H5MM_memcpy(&sect1->u.indirect.dir_rows[sect1->u.indirect.dir_nrows],
- &sect2->u.indirect.dir_rows[src_row2],
- (sizeof(H5HF_free_section_t *) * nrows_moved2));
+ &sect2->u.indirect.dir_rows[src_row2],
+ (sizeof(H5HF_free_section_t *) * nrows_moved2));
/* Re-target the row sections moved from second section */
- for(u = sect1->u.indirect.dir_nrows; u < new_dir_nrows1; u++)
+ for (u = sect1->u.indirect.dir_nrows; u < new_dir_nrows1; u++)
sect1->u.indirect.dir_rows[u]->u.row.under = sect1;
/* Adjust reference counts to account for transferred rows */
@@ -3623,14 +3555,14 @@ H5HF__sect_indirect_merge_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect1,
/* Update information for first section */
sect1->u.indirect.dir_nrows = new_dir_nrows1;
} /* end if */
- } /* end if */
+ } /* end if */
else
/* Indicate that the rows were _not_ merged */
merged_rows = FALSE;
/* Check for indirect sections in second section */
- if(sect2->u.indirect.indir_nents > 0) {
- unsigned new_indir_nents1; /* New value for number of indirect entries in first section */
+ if (sect2->u.indirect.indir_nents > 0) {
+ unsigned new_indir_nents1; /* New value for number of indirect entries in first section */
/* Some sanity checks on second indirect section */
HDassert(sect2->u.indirect.rc > 0);
@@ -3641,26 +3573,27 @@ H5HF__sect_indirect_merge_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect1,
new_indir_nents1 = sect1->u.indirect.indir_nents + sect2->u.indirect.indir_nents;
/* Check if first section can just take over second section's memory buffer */
- if(sect1->u.indirect.indir_ents == NULL) {
+ if (sect1->u.indirect.indir_ents == NULL) {
sect1->u.indirect.indir_ents = sect2->u.indirect.indir_ents;
sect2->u.indirect.indir_ents = NULL;
} /* end if */
else {
- H5HF_free_section_t **new_indir_ents; /* Pointer to new array of indirect entries */
+ H5HF_free_section_t **new_indir_ents; /* Pointer to new array of indirect entries */
/* Extend the first section's entry array */
- if(NULL == (new_indir_ents = (H5HF_free_section_t **)H5MM_realloc(sect1->u.indirect.indir_ents, sizeof(H5HF_free_section_t *) * new_indir_nents1)))
+ if (NULL == (new_indir_ents = (H5HF_free_section_t **)H5MM_realloc(
+ sect1->u.indirect.indir_ents, sizeof(H5HF_free_section_t *) * new_indir_nents1)))
HGOTO_ERROR(H5E_HEAP, H5E_NOSPACE, FAIL, "allocation failed for row section pointer array")
sect1->u.indirect.indir_ents = new_indir_ents;
/* Transfer the second section's entries to first section */
H5MM_memcpy(&sect1->u.indirect.indir_ents[sect1->u.indirect.indir_nents],
- &sect2->u.indirect.indir_ents[0],
- (sizeof(H5HF_free_section_t *) * sect2->u.indirect.indir_nents));
+ &sect2->u.indirect.indir_ents[0],
+ (sizeof(H5HF_free_section_t *) * sect2->u.indirect.indir_nents));
} /* end else */
/* Re-target the child indirect sections moved from second section */
- for(u = sect1->u.indirect.indir_nents; u < new_indir_nents1; u++)
+ for (u = sect1->u.indirect.indir_nents; u < new_indir_nents1; u++)
sect1->u.indirect.indir_ents[u]->u.indirect.parent = sect1;
/* Adjust reference counts for transferred child indirect sections */
@@ -3676,46 +3609,46 @@ H5HF__sect_indirect_merge_row(H5HF_hdr_t *hdr, H5HF_free_section_t *row_sect1,
sect1->u.indirect.span_size += sect2->u.indirect.span_size;
/* Make certain we've tracked the first section's dependents correctly */
- HDassert(sect1->u.indirect.rc ==
- (sect1->u.indirect.indir_nents + sect1->u.indirect.dir_nrows));
+ HDassert(sect1->u.indirect.rc == (sect1->u.indirect.indir_nents + sect1->u.indirect.dir_nrows));
/* Wrap up, freeing or re-inserting second row section */
/* (want this to be after the first indirect section is consistent again) */
- if(merged_rows) {
+ if (merged_rows) {
/* Release second row section */
/* (indirectly releases second indirect section, since all of it's
* other dependents are gone)
*/
HDassert(sect2->u.indirect.rc == 1);
- if(H5HF__sect_row_free((H5FS_section_info_t *)row_sect2) < 0)
+ if (H5HF__sect_row_free((H5FS_section_info_t *)row_sect2) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free row section")
} /* end if */
else {
/* Decrement ref. count on second indirect section's parent */
HDassert(sect2->u.indirect.rc == 0);
- if(sect2->u.indirect.parent)
- if(H5HF__sect_indirect_decr(sect2->u.indirect.parent) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't decrement ref. count on parent indirect section")
+ if (sect2->u.indirect.parent)
+ if (H5HF__sect_indirect_decr(sect2->u.indirect.parent) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL,
+ "can't decrement ref. count on parent indirect section")
/* Free second indirect section */
- if(H5HF__sect_indirect_free(sect2) < 0)
+ if (H5HF__sect_indirect_free(sect2) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free indirect section node")
/* Re-add the second section's first row */
/* (it's already been added to first indirect section, but it's been removed
* from the free space manager and needs to be re-added)
- */
+ */
row_sect2->sect_info.type = H5HF_FSPACE_SECT_NORMAL_ROW;
- if(H5HF__space_add(hdr, row_sect2, H5FS_ADD_SKIP_VALID) < 0)
+ if (H5HF__space_add(hdr, row_sect2, H5FS_ADD_SKIP_VALID) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't re-add second row section to free space")
} /* end else */
/* Check if we can create parent indirect section for first section */
/* (i.e. merged indirect sections cover an entire indirect block) */
- if(sect1->u.indirect.iblock_entries == sect1->u.indirect.num_entries) {
+ if (sect1->u.indirect.iblock_entries == sect1->u.indirect.num_entries) {
/* Build parent section for fully populated indirect section */
HDassert(sect1->u.indirect.parent == NULL);
- if(H5HF__sect_indirect_build_parent(hdr, sect1) < 0)
+ if (H5HF__sect_indirect_build_parent(hdr, sect1) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTCREATE, FAIL, "can't create parent for full indirect section")
} /* end if */
@@ -3723,7 +3656,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_merge_row() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_build_parent
*
@@ -3740,12 +3672,12 @@ done:
static herr_t
H5HF__sect_indirect_build_parent(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
{
- H5HF_indirect_t *par_iblock; /* Indirect block for parent section */
- H5HF_free_section_t *par_sect = NULL; /* Parent indirect section */
- hsize_t par_block_off; /* Offset of parent's block */
- unsigned par_row, par_col; /* Row & column in parent indirect section */
- unsigned par_entry; /* Entry within parent indirect section */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_indirect_t * par_iblock; /* Indirect block for parent section */
+ H5HF_free_section_t *par_sect = NULL; /* Parent indirect section */
+ hsize_t par_block_off; /* Offset of parent's block */
+ unsigned par_row, par_col; /* Row & column in parent indirect section */
+ unsigned par_entry; /* Entry within parent indirect section */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -3760,14 +3692,14 @@ H5HF__sect_indirect_build_parent(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
HDassert(sect->u.indirect.parent == NULL);
/* Get information for creating parent indirect section */
- if(sect->u.indirect.u.iblock->parent) {
- par_entry = sect->u.indirect.u.iblock->par_entry;
- par_iblock = sect->u.indirect.u.iblock->parent;
+ if (sect->u.indirect.u.iblock->parent) {
+ par_entry = sect->u.indirect.u.iblock->par_entry;
+ par_iblock = sect->u.indirect.u.iblock->parent;
par_block_off = par_iblock->block_off;
} /* end if */
else {
/* Retrieve the information for the parent block */
- if(H5HF__man_iblock_parent_info(hdr, sect->sect_info.addr, &par_block_off, &par_entry) < 0)
+ if (H5HF__man_iblock_parent_info(hdr, sect->sect_info.addr, &par_block_off, &par_entry) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTGET, FAIL, "can't get block entry")
par_iblock = NULL;
} /* end else */
@@ -3778,35 +3710,34 @@ H5HF__sect_indirect_build_parent(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
HDassert(par_row >= hdr->man_dtable.max_direct_rows);
/* Create parent indirect section */
- if(NULL == (par_sect = H5HF__sect_indirect_new(hdr, sect->sect_info.addr,
- sect->sect_info.size, par_iblock, par_block_off,
- par_row, par_col, 1)))
+ if (NULL == (par_sect = H5HF__sect_indirect_new(hdr, sect->sect_info.addr, sect->sect_info.size,
+ par_iblock, par_block_off, par_row, par_col, 1)))
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, FAIL, "can't create indirect section")
/* No rows of direct blocks covered in parent, reset direct row information */
par_sect->u.indirect.dir_nrows = 0;
- par_sect->u.indirect.dir_rows = NULL;
+ par_sect->u.indirect.dir_rows = NULL;
/* Allocate space for the child indirect sections */
par_sect->u.indirect.indir_nents = 1;
- if(NULL == (par_sect->u.indirect.indir_ents = (H5HF_free_section_t **)H5MM_malloc(sizeof(H5HF_free_section_t *))))
+ if (NULL == (par_sect->u.indirect.indir_ents =
+ (H5HF_free_section_t **)H5MM_malloc(sizeof(H5HF_free_section_t *))))
HGOTO_ERROR(H5E_HEAP, H5E_NOSPACE, FAIL, "allocation failed for indirect section pointer array")
/* Attach sections together */
- sect->u.indirect.parent = par_sect;
- sect->u.indirect.par_entry = par_entry;
+ sect->u.indirect.parent = par_sect;
+ sect->u.indirect.par_entry = par_entry;
par_sect->u.indirect.indir_ents[0] = sect;
- par_sect->u.indirect.rc = 1;
+ par_sect->u.indirect.rc = 1;
done:
- if(ret_value < 0)
- if(par_sect && H5HF__sect_indirect_free(par_sect) < 0)
+ if (ret_value < 0)
+ if (par_sect && H5HF__sect_indirect_free(par_sect) < 0)
HDONE_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free indirect section node")
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_build_parent() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_shrink
*
@@ -3823,8 +3754,8 @@ done:
static herr_t
H5HF__sect_indirect_shrink(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
{
- unsigned u; /* Local index variable */
- herr_t ret_value = SUCCEED; /* Return value */
+ unsigned u; /* Local index variable */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -3836,33 +3767,32 @@ H5HF__sect_indirect_shrink(H5HF_hdr_t *hdr, H5HF_free_section_t *sect)
HDassert(sect->u.indirect.dir_nrows > 0 || sect->u.indirect.indir_nents > 0);
/* Walk through direct rows, freeing them */
- for(u = 0; u < sect->u.indirect.dir_nrows; u++) {
+ for (u = 0; u < sect->u.indirect.dir_nrows; u++) {
/* Remove the normal rows from free space manager */
- if(sect->u.indirect.dir_rows[u]->sect_info.type != H5HF_FSPACE_SECT_FIRST_ROW) {
+ if (sect->u.indirect.dir_rows[u]->sect_info.type != H5HF_FSPACE_SECT_FIRST_ROW) {
HDassert(sect->u.indirect.dir_rows[u]->sect_info.type == H5HF_FSPACE_SECT_NORMAL_ROW);
- if(H5HF__space_remove(hdr, sect->u.indirect.dir_rows[u]) < 0)
+ if (H5HF__space_remove(hdr, sect->u.indirect.dir_rows[u]) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTREMOVE, FAIL, "can't remove section from heap free space")
} /* end if */
/* Release the row section */
- if(H5HF__sect_row_free_real(sect->u.indirect.dir_rows[u]) < 0)
+ if (H5HF__sect_row_free_real(sect->u.indirect.dir_rows[u]) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free child section node")
} /* end for */
/* Walk through indirect entries, freeing them (recursively) */
- for(u = 0; u < sect->u.indirect.indir_nents; u++)
- if(H5HF__sect_indirect_shrink(hdr, sect->u.indirect.indir_ents[u]) < 0)
+ for (u = 0; u < sect->u.indirect.indir_nents; u++)
+ if (H5HF__sect_indirect_shrink(hdr, sect->u.indirect.indir_ents[u]) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free child section node")
/* Free the indirect section itself */
- if(H5HF__sect_indirect_free(sect) < 0)
+ if (H5HF__sect_indirect_free(sect) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free indirect section node")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__sect_indirect_shrink() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_serialize
*
@@ -3878,10 +3808,9 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5HF__sect_indirect_serialize(H5HF_hdr_t *hdr, const H5HF_free_section_t *sect,
- uint8_t *buf)
+H5HF__sect_indirect_serialize(H5HF_hdr_t *hdr, const H5HF_free_section_t *sect, uint8_t *buf)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -3891,14 +3820,15 @@ H5HF__sect_indirect_serialize(H5HF_hdr_t *hdr, const H5HF_free_section_t *sect,
HDassert(buf);
/* Check if this indirect section has a parent & forward if this section is first */
- if(sect->u.indirect.parent) {
- if(sect->sect_info.addr == sect->u.indirect.parent->sect_info.addr)
- if(H5HF__sect_indirect_serialize(hdr, sect->u.indirect.parent, buf) < 0)
- HGOTO_ERROR(H5E_HEAP, H5E_CANTSERIALIZE, FAIL, "can't serialize indirect section's parent indirect section")
+ if (sect->u.indirect.parent) {
+ if (sect->sect_info.addr == sect->u.indirect.parent->sect_info.addr)
+ if (H5HF__sect_indirect_serialize(hdr, sect->u.indirect.parent, buf) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTSERIALIZE, FAIL,
+ "can't serialize indirect section's parent indirect section")
} /* end if */
else {
/* Indirect range's indirect block's block offset */
- if(sect->sect_info.state == H5FS_SECT_LIVE) {
+ if (sect->sect_info.state == H5FS_SECT_LIVE) {
HDassert(sect->u.indirect.u.iblock);
UINT64ENCODE_VAR(buf, sect->u.indirect.u.iblock->block_off, hdr->heap_off_size);
} /* end if */
@@ -3919,7 +3849,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_indirect_serialize() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_deserialize
*
@@ -3934,19 +3863,19 @@ done:
*-------------------------------------------------------------------------
*/
static H5FS_section_info_t *
-H5HF__sect_indirect_deserialize(H5HF_hdr_t *hdr, const uint8_t *buf,
- haddr_t sect_addr, hsize_t sect_size, unsigned *des_flags)
+H5HF__sect_indirect_deserialize(H5HF_hdr_t *hdr, const uint8_t *buf, haddr_t sect_addr, hsize_t sect_size,
+ unsigned *des_flags)
{
- H5HF_free_section_t *new_sect; /* New indirect section */
- hsize_t iblock_off; /* Indirect block's offset */
- unsigned start_row; /* Indirect section's start row */
- unsigned start_col; /* Indirect section's start column */
- unsigned nentries; /* Indirect section's number of entries */
- unsigned start_entry; /* Start entry in indirect block */
- unsigned end_entry; /* End entry in indirect block */
- unsigned end_row; /* End row in indirect block */
- unsigned end_col; /* End column in indirect block */
- H5FS_section_info_t *ret_value = NULL; /* Return value */
+ H5HF_free_section_t *new_sect; /* New indirect section */
+ hsize_t iblock_off; /* Indirect block's offset */
+ unsigned start_row; /* Indirect section's start row */
+ unsigned start_col; /* Indirect section's start column */
+ unsigned nentries; /* Indirect section's number of entries */
+ unsigned start_entry; /* Start entry in indirect block */
+ unsigned end_entry; /* End entry in indirect block */
+ unsigned end_row; /* End row in indirect block */
+ unsigned end_col; /* End column in indirect block */
+ H5FS_section_info_t *ret_value = NULL; /* Return value */
FUNC_ENTER_STATIC
@@ -3969,8 +3898,8 @@ H5HF__sect_indirect_deserialize(H5HF_hdr_t *hdr, const uint8_t *buf,
UINT16DECODE(buf, nentries);
/* Create free space section node */
- if(NULL == (new_sect = H5HF__sect_indirect_new(hdr, sect_addr, sect_size,
- NULL, iblock_off, start_row, start_col, nentries)))
+ if (NULL == (new_sect = H5HF__sect_indirect_new(hdr, sect_addr, sect_size, NULL, iblock_off, start_row,
+ start_col, nentries)))
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, NULL, "can't create indirect section")
/* Compute start entry */
@@ -3978,13 +3907,13 @@ H5HF__sect_indirect_deserialize(H5HF_hdr_t *hdr, const uint8_t *buf,
/* Compute end column & row */
end_entry = (start_entry + nentries) - 1;
- end_row = end_entry / hdr->man_dtable.cparam.width;
- end_col = end_entry % hdr->man_dtable.cparam.width;
+ end_row = end_entry / hdr->man_dtable.cparam.width;
+ end_col = end_entry % hdr->man_dtable.cparam.width;
/* Initialize rows for new indirect section */
- if(H5HF__sect_indirect_init_rows(hdr, new_sect, TRUE, NULL,
- H5FS_ADD_DESERIALIZING, new_sect->u.indirect.row, new_sect->u.indirect.col,
- end_row, end_col) < 0)
+ if (H5HF__sect_indirect_init_rows(hdr, new_sect, TRUE, NULL, H5FS_ADD_DESERIALIZING,
+ new_sect->u.indirect.row, new_sect->u.indirect.col, end_row,
+ end_col) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTINIT, NULL, "can't initialize indirect section")
/* Indicate that this section shouldn't be added to free space manager's list */
@@ -3997,7 +3926,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF__sect_indirect_deserialize() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_free
*
@@ -4015,8 +3943,8 @@ done:
static herr_t
H5HF__sect_indirect_free(H5HF_free_section_t *sect)
{
- H5HF_indirect_t *iblock = NULL; /* Indirect block for section */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5HF_indirect_t *iblock = NULL; /* Indirect block for section */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_STATIC
@@ -4029,20 +3957,19 @@ H5HF__sect_indirect_free(H5HF_free_section_t *sect)
sect->u.indirect.indir_ents = (H5HF_free_section_t **)H5MM_xfree(sect->u.indirect.indir_ents);
/* Check for live reference to an indirect block */
- if(sect->sect_info.state == H5FS_SECT_LIVE)
+ if (sect->sect_info.state == H5FS_SECT_LIVE)
/* Get indirect block, if there was one */
- if(sect->u.indirect.u.iblock)
+ if (sect->u.indirect.u.iblock)
iblock = sect->u.indirect.u.iblock;
/* Release the sections */
- if(H5HF__sect_node_free(sect, iblock) < 0)
+ if (H5HF__sect_node_free(sect, iblock) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't free section node")
done:
FUNC_LEAVE_NOAPI(ret_value)
-} /* H5HF__sect_indirect_free() */
+} /* H5HF__sect_indirect_free() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_valid
*
@@ -4059,12 +3986,12 @@ done:
static herr_t
H5HF__sect_indirect_valid(const H5HF_hdr_t *hdr, const H5HF_free_section_t *sect)
{
- unsigned start_row; /* Row for first block covered */
- unsigned start_col; /* Column for first block covered */
- unsigned start_entry; /* Entry for first block covered */
- unsigned end_row; /* Row for last block covered */
- unsigned end_entry; /* Entry for last block covered */
- unsigned u; /* Local index variable */
+ unsigned start_row; /* Row for first block covered */
+ unsigned start_col; /* Column for first block covered */
+ unsigned start_entry; /* Entry for first block covered */
+ unsigned end_row; /* Row for last block covered */
+ unsigned end_entry; /* Entry for last block covered */
+ unsigned u; /* Local index variable */
FUNC_ENTER_STATIC_NOERR
@@ -4073,21 +4000,21 @@ H5HF__sect_indirect_valid(const H5HF_hdr_t *hdr, const H5HF_free_section_t *sect
HDassert(sect);
/* Compute starting entry, column & row */
- start_row = sect->u.indirect.row;
- start_col = sect->u.indirect.col;
+ start_row = sect->u.indirect.row;
+ start_col = sect->u.indirect.col;
start_entry = (start_row * hdr->man_dtable.cparam.width) + start_col;
/* Compute ending entry, column & row */
end_entry = (start_entry + sect->u.indirect.num_entries) - 1;
- end_row = end_entry / hdr->man_dtable.cparam.width;
+ end_row = end_entry / hdr->man_dtable.cparam.width;
/* Sanity check any direct rows */
- if(sect->u.indirect.dir_nrows > 0) {
- unsigned dir_nrows; /* Number of direct rows in section */
- unsigned max_dir_row; /* Maximum direct row in section */
+ if (sect->u.indirect.dir_nrows > 0) {
+ unsigned dir_nrows; /* Number of direct rows in section */
+ unsigned max_dir_row; /* Maximum direct row in section */
/* Check for indirect rows in section */
- if(end_row >= hdr->man_dtable.max_direct_rows)
+ if (end_row >= hdr->man_dtable.max_direct_rows)
max_dir_row = hdr->man_dtable.max_direct_rows - 1;
else
max_dir_row = end_row;
@@ -4095,43 +4022,44 @@ H5HF__sect_indirect_valid(const H5HF_hdr_t *hdr, const H5HF_free_section_t *sect
/* Iterate over direct rows, checking pointer references */
dir_nrows = (max_dir_row - start_row) + 1;
HDassert(dir_nrows == sect->u.indirect.dir_nrows);
- for(u = 0; u < dir_nrows; u++) {
- const H5HF_free_section_t H5_ATTR_NDEBUG_UNUSED *tmp_row_sect; /* Pointer to row section */
+ for (u = 0; u < dir_nrows; u++) {
+ const H5HF_free_section_t H5_ATTR_NDEBUG_UNUSED *tmp_row_sect; /* Pointer to row section */
tmp_row_sect = sect->u.indirect.dir_rows[u];
- HDassert(tmp_row_sect->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW
- || tmp_row_sect->sect_info.type == H5HF_FSPACE_SECT_NORMAL_ROW);
+ HDassert(tmp_row_sect->sect_info.type == H5HF_FSPACE_SECT_FIRST_ROW ||
+ tmp_row_sect->sect_info.type == H5HF_FSPACE_SECT_NORMAL_ROW);
HDassert(tmp_row_sect->u.row.under == sect);
HDassert(tmp_row_sect->u.row.row == (start_row + u));
- if(u > 0) {
- const H5HF_free_section_t H5_ATTR_NDEBUG_UNUSED *tmp_row_sect2; /* Pointer to row section */
+ if (u > 0) {
+ const H5HF_free_section_t H5_ATTR_NDEBUG_UNUSED *tmp_row_sect2; /* Pointer to row section */
tmp_row_sect2 = sect->u.indirect.dir_rows[u - 1];
HDassert(tmp_row_sect2->u.row.row < tmp_row_sect->u.row.row);
HDassert(H5F_addr_lt(tmp_row_sect2->sect_info.addr, tmp_row_sect->sect_info.addr));
HDassert(tmp_row_sect2->sect_info.size <= tmp_row_sect->sect_info.size);
} /* end if */
- } /* end for */
- } /* end if */
+ } /* end for */
+ } /* end if */
/* Sanity check any indirect entries */
- if(sect->u.indirect.indir_nents > 0) {
+ if (sect->u.indirect.indir_nents > 0) {
/* Basic sanity checks */
- if(sect->sect_info.state == H5FS_SECT_LIVE) {
+ if (sect->sect_info.state == H5FS_SECT_LIVE) {
HDassert(sect->u.indirect.iblock_entries);
HDassert(sect->u.indirect.indir_nents <= sect->u.indirect.iblock_entries);
} /* end if */
HDassert(sect->u.indirect.indir_ents);
/* Sanity check each child indirect section */
- for(u = 0; u < sect->u.indirect.indir_nents; u++) {
- const H5HF_free_section_t *tmp_child_sect; /* Pointer to child indirect section */
+ for (u = 0; u < sect->u.indirect.indir_nents; u++) {
+ const H5HF_free_section_t *tmp_child_sect; /* Pointer to child indirect section */
tmp_child_sect = sect->u.indirect.indir_ents[u];
HDassert(tmp_child_sect->sect_info.type == H5HF_FSPACE_SECT_INDIRECT);
HDassert(tmp_child_sect->u.indirect.parent == sect);
- if(u > 0) {
- const H5HF_free_section_t H5_ATTR_NDEBUG_UNUSED *tmp_child_sect2; /* Pointer to child indirect section */
+ if (u > 0) {
+ const H5HF_free_section_t H5_ATTR_NDEBUG_UNUSED
+ * tmp_child_sect2; /* Pointer to child indirect section */
tmp_child_sect2 = sect->u.indirect.indir_ents[u - 1];
HDassert(H5F_addr_lt(tmp_child_sect2->sect_info.addr, tmp_child_sect->sect_info.addr));
@@ -4140,12 +4068,11 @@ H5HF__sect_indirect_valid(const H5HF_hdr_t *hdr, const H5HF_free_section_t *sect
/* Recursively check child indirect section */
H5HF__sect_indirect_valid(hdr, tmp_child_sect);
} /* end for */
- } /* end if */
+ } /* end if */
FUNC_LEAVE_NOAPI(SUCCEED)
-} /* H5HF__sect_indirect_valid() */
+} /* H5HF__sect_indirect_valid() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__sect_indirect_debug
*
@@ -4161,8 +4088,7 @@ H5HF__sect_indirect_valid(const H5HF_hdr_t *hdr, const H5HF_free_section_t *sect
*-------------------------------------------------------------------------
*/
static herr_t
-H5HF__sect_indirect_debug(const H5HF_free_section_t *sect,
- FILE *stream, int indent, int fwidth)
+H5HF__sect_indirect_debug(const H5HF_free_section_t *sect, FILE *stream, int indent, int fwidth)
{
FUNC_ENTER_STATIC_NOERR
@@ -4170,16 +4096,9 @@ H5HF__sect_indirect_debug(const H5HF_free_section_t *sect,
HDassert(sect);
/* Print indirect section information */
- HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Row:",
- sect->u.indirect.row);
- HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Column:",
- sect->u.indirect.col);
- HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Number of entries:",
- sect->u.indirect.num_entries);
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, "Row:", sect->u.indirect.row);
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, "Column:", sect->u.indirect.col);
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, "Number of entries:", sect->u.indirect.num_entries);
FUNC_LEAVE_NOAPI(SUCCEED)
} /* H5HF__sect_indirect_debug() */
-