Skip to content

Commit

Permalink
Merge branch 'develop' into release
Browse files Browse the repository at this point in the history
  • Loading branch information
brtnfld committed May 15, 2024
2 parents e3f48c9 + 2c2e39c commit 6edd39b
Show file tree
Hide file tree
Showing 9 changed files with 42 additions and 17 deletions.
3 changes: 0 additions & 3 deletions .github/workflows/cmake-ctest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -413,9 +413,6 @@ jobs:
compiler: intel
version: '2024.1'

- name: Enable Developer Command Prompt
uses: ilammy/[email protected]

- name: Set file base name (Windows_intel)
id: set-file-base
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/vol_log.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
- name: Checkout Log-based VOL
uses: actions/[email protected]
with:
repository: DataLib-ECP/vol-log-based
repository: HDFGroup/vol-log-based
path: vol-log-based

- name: Build HDF5 Log-based VOL connector and test with external tests
Expand Down
7 changes: 6 additions & 1 deletion doxygen/dox/IntroParHDF5.dox
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,13 @@ Implementation requirements were to:
\li Not have a reserved process, as this might interfere with parallel algorithms.
\li Not spawn any processes, as this is not even commonly supported now.

The following shows the Parallel HDF5 implementation layers.
The following shows the Parallel HDF5 implementation layers:

<table>
<tr><td>
\image html pimplayer.gif
</td></tr>
</table>

\subsection subsec_pintro_prog Parallel Programming with HDF5
This tutorial assumes that you are somewhat familiar with parallel programming with MPI (Message Passing Interface).
Expand Down
Binary file added doxygen/img/pimplayer.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion fortran/src/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ H5Iff.lo: $(srcdir)/H5Iff.F90 H5f90global.lo
H5Lff.lo: $(srcdir)/H5Lff.F90 H5f90global.lo
H5Off.lo: $(srcdir)/H5Off.F90 H5f90global.lo
H5Pff.lo: $(srcdir)/H5Pff.F90 H5f90global.lo H5fortkit.lo
H5Rff.lo: $(srcdir)/H5Rff.F90 H5f90global.lo
H5Rff.lo: $(srcdir)/H5Rff.F90 H5f90global.lo H5fortkit.lo
H5Sff.lo: $(srcdir)/H5Sff.F90 H5f90global.lo
H5Tff.lo: $(srcdir)/H5Tff.F90 H5f90global.lo
H5VLff.lo: $(srcdir)/H5VLff.F90 H5f90global.lo H5fortkit.lo
Expand Down
9 changes: 3 additions & 6 deletions src/H5Fsuper.c
Original file line number Diff line number Diff line change
Expand Up @@ -583,13 +583,10 @@ H5F__super_read(H5F_t *f, H5P_genplist_t *fa_plist, bool initial_read)

if (H5F_INTENT(f) & H5F_ACC_SWMR_READ) {
/*
* When the file is opened for SWMR read access, skip the check if:
* --the file is already marked for SWMR writing and
* --the file has version 3 superblock for SWMR support
* When the file is opened for SWMR read access, skip the check if
* the file has a version 3 superblock capable of SWMR support
*/
if ((sblock->status_flags & H5F_SUPER_SWMR_WRITE_ACCESS) &&
(sblock->status_flags & H5F_SUPER_WRITE_ACCESS) &&
sblock->super_vers >= HDF5_SUPERBLOCK_VERSION_3)
if (sblock->super_vers >= HDF5_SUPERBLOCK_VERSION_3)
skip_eof_check = true;
}
if (!skip_eof_check && initial_read) {
Expand Down
13 changes: 10 additions & 3 deletions src/H5Gint.c
Original file line number Diff line number Diff line change
Expand Up @@ -506,7 +506,8 @@ static herr_t
H5G__open_oid(H5G_t *grp)
{
bool obj_opened = false;
herr_t ret_value = SUCCEED;
htri_t msg_exists;
herr_t ret_value = SUCCEED;

FUNC_ENTER_PACKAGE

Expand All @@ -523,8 +524,14 @@ H5G__open_oid(H5G_t *grp)
obj_opened = true;

/* Check if this object has the right message(s) to be treated as a group */
if ((H5O_msg_exists(&(grp->oloc), H5O_STAB_ID) <= 0) && (H5O_msg_exists(&(grp->oloc), H5O_LINFO_ID) <= 0))
HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "not a group");
if ((msg_exists = H5O_msg_exists(&(grp->oloc), H5O_STAB_ID)) < 0)
HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "can't check if symbol table message exists");
if (!msg_exists) {
if ((msg_exists = H5O_msg_exists(&(grp->oloc), H5O_LINFO_ID)) < 0)
HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "can't check if link info message exists");
if (!msg_exists)
HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "not a group");
}

done:
if (ret_value < 0) {
Expand Down
6 changes: 6 additions & 0 deletions src/H5Odbg.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,10 @@ H5O__assert(const H5O_t *oh)

FUNC_ENTER_PACKAGE_NOERR

assert(oh);
assert(oh->chunk || oh->nchunks == 0);
assert(oh->mesg || oh->nmesgs == 0);

/* Initialize the tracking variables */
hdr_size = 0;
meta_space = (size_t)H5O_SIZEOF_HDR(oh) + (size_t)(H5O_SIZEOF_CHKHDR_OH(oh) * (oh->nchunks - 1));
Expand Down Expand Up @@ -140,6 +144,8 @@ H5O__assert(const H5O_t *oh)
uint8_t H5_ATTR_NDEBUG_UNUSED *curr_hdr; /* Start of current message header */
size_t curr_tot_size; /* Total size of current message (including header) */

assert(curr_msg->type);

curr_hdr = curr_msg->raw - H5O_SIZEOF_MSGHDR_OH(oh);
curr_tot_size = curr_msg->raw_size + (size_t)H5O_SIZEOF_MSGHDR_OH(oh);

Expand Down
17 changes: 15 additions & 2 deletions src/H5Oint.c
Original file line number Diff line number Diff line change
Expand Up @@ -1113,7 +1113,9 @@ H5O_protect(const H5O_loc_t *loc, unsigned prot_flags, bool pin_all_chunks)
if (cont_msg_info.msgs)
cont_msg_info.msgs = (H5O_cont_t *)H5FL_SEQ_FREE(H5O_cont_t, cont_msg_info.msgs);

if (H5O_unprotect(loc, oh, H5AC__NO_FLAGS_SET) < 0)
/* Unprotect the ohdr and delete it from cache since if we failed to load it it's in an inconsistent
* state */
if (H5O_unprotect(loc, oh, H5AC__DELETED_FLAG) < 0)
HDONE_ERROR(H5E_OHDR, H5E_CANTUNPROTECT, NULL, "unable to release object header");
}

Expand Down Expand Up @@ -1234,10 +1236,21 @@ H5O_unprotect(const H5O_loc_t *loc, H5O_t *oh, unsigned oh_flags)
} /* end if */
} /* end for */

/* Reet the flag from the unprotect */
/* Reset the flag from the unprotect */
oh->chunks_pinned = false;
} /* end if */

/* Remove the other chunks if we're removing the ohdr (due to a failure) */
if (oh_flags & H5AC__DELETED_FLAG) {
unsigned u; /* Local index variable */

/* Iterate over chunks > 0 */
for (u = 1; u < oh->nchunks; u++)
/* Expunge chunk proxy from cache */
if (H5AC_expunge_entry(loc->file, H5AC_OHDR_CHK, oh->chunk[u].addr, H5AC__NO_FLAGS_SET) < 0)
HGOTO_ERROR(H5E_OHDR, H5E_CANTUNPIN, FAIL, "unable to expunge object header chunk");
} /* end if */

/* Unprotect the object header */
if (H5AC_unprotect(loc->file, H5AC_OHDR, oh->chunk[0].addr, oh, oh_flags) < 0)
HGOTO_ERROR(H5E_OHDR, H5E_CANTUNPROTECT, FAIL, "unable to release object header");
Expand Down

0 comments on commit 6edd39b

Please sign in to comment.