Commit Graph

19517 Commits

Author SHA1 Message Date
David Young
88e8b4fd7d Merge branch 'feature/vfd_swmr' into may-merge-mainzer-to-mine 2020-07-31 16:15:25 -05:00
David Young
d01bcf6667 Perform virtual dataset tests with multiple source files, too. 2020-07-31 16:14:10 -05:00
David Young
6caa0c5ac5 Let us use virtual datasets with multiple source files that are open with VFD
SWMR mode: pass H5P_FILE_ACCESS_ANY_VFD so that the discrepancy between VFD
SWMR file-access properties and default file-access properties is ignored.
2020-07-31 16:12:27 -05:00
David Young
7321d0e813 Improve code readability: extract common subexpressions into temporary
variables.
2020-07-30 17:21:24 -05:00
David Young
a8cbf2579d In test_reader_md_concur(), the child has to exit(3), not FAIL_STACK_ERROR, on
error.
2020-07-30 17:01:16 -05:00
David Young
bf004fcba8 Bug fixes: don't double-close a FAPL ID. Always close a file ID. 2020-07-30 17:00:38 -05:00
David Young
92887cad1c Update an out-of-date comment. 2020-07-30 16:58:37 -05:00
David Young
b6b92aff09 Remove superfluous casts from void * to another pointer type prior to
assignment. Use a safer sizeof(array element) idiom.  NFCI.
2020-07-30 16:56:20 -05:00
David Young
2a64d2fe93 Change H5F_open to perform deduplication of open VFDs in a more flexible way,
using the new routine H5FDdeduplicate().

Simplify H5F_open() a bit, pushing some of the configuration checks into the
SMWR VFD.  For example, check that page buffering is enabled in
H5FD_vfd_swmr_open() instead of in H5F_open().  Compare VFD SWMR configurations
in H5FD_vfd_swmr_dedup() instead of in H5F_open().

Clone the default file-access property list at a new file-access property list
ID, H5P_FILE_ACCESS_ANY_VFD.  The new ID is used to indicate that if the file
that's being opened is already open under an existing virtual file, and if that
virtual file would not ordinarily be opened with the default FAPL, then it's ok
to use that virtual file.

Add a new optional method, `dedup`, to H5FD_class_t, and use it to customize a
VFD's deduplication.

Customize the SWMR VFD's deduplication.  Make it honor H5P_FILE_ACCESS_ANY_VFD
Embed the VFD SWMR configuration in the H5FD_vfd_swmr_t to facilitate
comparison of configuration between new and old SWMR virtual files.

In H5F__sfile_search(), match using a pointer comparison instead of H5FD_cmp(),
because we will only ever enter H5F__sfile_search() with a deduplicated
H5FD_t *.
2020-07-30 16:53:01 -05:00
David Young
0b189968ff Merge branch 'feature/vfd_swmr' into may-merge-mainzer-to-mine 2020-07-28 09:41:09 -05:00
David Young
5632094d5c Initialize refresh member. 2020-07-28 09:40:35 -05:00
David Young
0cb028b717 Merge branch 'feature/vfd_swmr' into may-merge-mainzer-to-mine 2020-07-28 09:20:28 -05:00
David Young
d93bc843aa Promote more warnings to errors. 2020-07-28 09:14:12 -05:00
David Young
0fd4a7f5e1 Merge branch 'feature/vfd_swmr' into may-merge-mainzer-to-mine 2020-07-21 11:25:28 -05:00
David Young
04e775b127 Straggler from last: update declaration of vfd_swmr_create_fapl(). 2020-07-21 11:15:44 -05:00
David Young
78bd491aad Add to the "bigset" writer a -M command-line option that enables the use of
multiple files with virtual datasets.

Add to vfd_swmr_create_fapl() printf(3)-like arguments for setting the shadow
filename.  Update all callers.
2020-07-21 11:13:05 -05:00
David Young
a9fefff620 Add evsnprintf for printing a va_list to a buffer or aborting the program on
an overflow or other error.
2020-07-21 10:18:43 -05:00
David Young
6e3ad3213d Delete superfluous comments that interpret obvious program syntax/semantics. 2020-07-21 10:15:56 -05:00
David Young
0ae43ff6cd Mention an improvement asked for by ITER. 2020-07-21 10:04:49 -05:00
David Young
43cec81db6 Only count metadata reads/writes on the page buffer. Neaten the count logs. 2020-07-21 10:01:12 -05:00
David Young
c66f7d5b65 Merge branch 'feature/vfd_swmr' into may-merge-mainzer-to-mine 2020-07-15 16:47:07 -05:00
David Young
c9d8f3e4f1 Log the number of page-buffer accesses at various multiples of the page size
with log outlet `pb_access_sizes`.
2020-07-15 16:44:52 -05:00
David Young
be0b2f132d Perform the few_big and many_small tests with and without VDS enabled. 2020-07-15 16:43:48 -05:00
David Young
91a7258dbf Don't perform EOT processing on the same H5F_shared_t more than once if it has
multiple referring H5F_t on the EOT queue.  This stops the VFD SWMR writer from
advancing the shadow file's tick number too fast when we're using virtual
datasets (VDS) with VFD SWMR.
2020-07-15 16:28:52 -05:00
David Young
767afc60be Update comment. 2020-07-15 16:26:52 -05:00
David Young
0e9f3038d2 Merge branch 'feature/vfd_swmr' into may-merge-mainzer-to-mine 2020-07-14 15:13:45 -05:00
David Young
a0be3626c8 Delete whitespace at EOL. NFCI. 2020-07-14 15:13:20 -05:00
David Young
814b428b2a When H5FD_vfd_swmr_read() reads a page from the shadow file whose checksum
fails, re-load the shadow-file header and log the last-read and current tick
number.
2020-07-14 15:10:30 -05:00
David Young
2056e23fc9 Avoid some casts, change some parameters from H5FD_t to H5FD_vfd_swmr_t when
that's what both the callers and callees expect.  NFCI.
2020-07-14 15:09:18 -05:00
David Young
c3120ac3da Delete some dead code. 2020-07-14 15:06:02 -05:00
David Young
5c9d2724be Add some new diagnostic logging. 2020-07-14 15:04:37 -05:00
David Young
3d89d6ca4e Suppress the error-stack printouts while attempting to open and read an
attribute: failures are expected.
2020-07-14 15:02:49 -05:00
David Young
30a62d1380 Don't check an unsigned integer for being negative. Quiets a GCC warning. 2020-07-14 15:01:50 -05:00
David Young
7840f5f3b5 Merge branch 'feature/vfd_swmr' into may-merge-mainzer-to-mine 2020-07-14 09:06:43 -05:00
David Young
63c7ec2496 Bug fix: avoid leaking memory and other resources, perform the reader-only
close activities under the correct condition!  Extract the reader-only open and
close code into helper routines.
2020-07-14 09:00:44 -05:00
David Young
f7fab27b25 If the function-enter macro fails, return FAIL. Now the compiler can see that
if H5FD__vfd_swmr_header_deserialize() succeeds, then the header that was
passed in was actually initialized.  This squashes a used-before-initialized
warning from GCC.
2020-07-14 08:58:11 -05:00
David Young
12e5f29e48 Take care to initialize the metadata file descriptor to -1 so that we don't try
to close descriptor 0, later.
2020-07-14 08:56:32 -05:00
David Young
323380e6b9 If a group's attribute isn't present, that's ok. Retry. 2020-07-14 08:55:26 -05:00
David Young
8593cd2d93 Close attribute after use. 2020-07-14 08:54:56 -05:00
David Young
fefc6cf885 Delete dead code. NFCI. 2020-07-14 08:54:44 -05:00
David Young
326b98fd08 Delete whitespace at EOL. Join consecutive line. NFCI. 2020-07-13 10:09:40 -05:00
David Young
62240b1a55 Delete whitespace at EOL. 2020-07-13 10:03:12 -05:00
David Young
0e1b6bfcef Fix a copy-pasto in an error message. 2020-07-10 16:18:39 -05:00
David Young
a2308ffd2c Move the dapl initialization to state_init and, if VDS is enabled,
set the virtual view to "first missing."
2020-07-10 16:17:51 -05:00
David Young
2882736643 Delete unused local variables. Delete an empty line. NFCI. 2020-07-10 16:16:40 -05:00
David Young
0c98fe96e5 Don't leak a fapl on error. 2020-07-10 16:16:01 -05:00
David Young
09b17b6563 Remove gratuitous local variable initialization: it's better to let the
compiler detect use-before-initialization.  Use the safer `memset(p, ...,
sizeof(*p))` idiom.
2020-07-10 16:12:05 -05:00
David Young
98f441a606 Add a new log outlet and some log statements for EOT queue manipulation. 2020-07-10 16:10:41 -05:00
David Young
8aeba09f55 Straggler from previous: bsdqueue.h -> H5queue.h 2020-07-10 16:09:37 -05:00
David Young
847d22244a Change some H5F_t uses to H5F_shared_t uses: gradually we will rid VFD SWMR of
H5F_t.
2020-07-10 16:06:22 -05:00