summaryrefslogtreecommitdiffstats
path: root/src/H5FDpublic.h
diff options
context:
space:
mode:
authorDavid Young <dyoung@hdfgroup.org>2020-07-10 20:09:29 (GMT)
committerDavid Young <dyoung@hdfgroup.org>2020-07-10 20:09:29 (GMT)
commit2e66b5cf86c1a184e01eea6b67b52ac82648573a (patch)
tree6cf56f85fdc4f2b433a127d1c8d4d66dc59a8e65 /src/H5FDpublic.h
parent5493f4faacd7984bf8e442786a33e49598118788 (diff)
downloadhdf5-2e66b5cf86c1a184e01eea6b67b52ac82648573a.zip
hdf5-2e66b5cf86c1a184e01eea6b67b52ac82648573a.tar.gz
hdf5-2e66b5cf86c1a184e01eea6b67b52ac82648573a.tar.bz2
Add all extant virtual files to a list. Add an "exclusive owner" (`exc_owner`)
member to all virtual files. Add a routine, H5FD_has_conflict(), that returns true if a new virtual file is identical to an existing virtual file that has an exclusive owner. Establish an exclusive owner for a VFD SWMR virtual file's lower virtual file. Rename bsdqueue.h to H5queue.h and install it, since it's used by H5FDpublic.h. This is part of a changeset that helps us avoid creating multiple H5F_shared_t for one file when virtual datasets are used with VFD SWMR. The old code for deduplicating VFD SWMR H5F_shared_t instances did not work correctly with VFD SWMR, so we'd end up with multiple H5F_shared_t all active on the same file.
Diffstat (limited to 'src/H5FDpublic.h')
-rw-r--r--src/H5FDpublic.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/H5FDpublic.h b/src/H5FDpublic.h
index 61bf212..ab8a868 100644
--- a/src/H5FDpublic.h
+++ b/src/H5FDpublic.h
@@ -18,6 +18,7 @@
#ifndef _H5FDpublic_H
#define _H5FDpublic_H
+#include "H5queue.h"
#include "H5public.h"
#include "H5Fpublic.h" /*for H5F_close_degree_t */
@@ -319,6 +320,11 @@ typedef struct H5FD_free_t {
struct H5FD_t {
hid_t driver_id; /*driver ID for this file */
const H5FD_class_t *cls; /*constant class info */
+
+ TAILQ_ENTRY(H5FD_t) link; /* Linkage for list of all VFs. */
+ H5FD_t *exc_owner; /* Pointer to an exclusive owner
+ * or NULL if none.
+ */
unsigned long fileno; /* File 'serial' number */
unsigned access_flags; /* File access flags (from create or open) */
unsigned long feature_flags; /* VFL Driver feature Flags */