summaryrefslogtreecommitdiffstats
path: root/src/H5Opkg.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2007-03-08 20:10:12 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2007-03-08 20:10:12 (GMT)
commit74a30fff3e0fcd8919ced487abd03eefd27d57c1 (patch)
tree2df0a0d2cfc51cce067f25e503e6dfd26c8e827d /src/H5Opkg.h
parent25bb6f5dd8af42d2facaab26f0cdeb7fc76456ae (diff)
downloadhdf5-74a30fff3e0fcd8919ced487abd03eefd27d57c1.zip
hdf5-74a30fff3e0fcd8919ced487abd03eefd27d57c1.tar.gz
hdf5-74a30fff3e0fcd8919ced487abd03eefd27d57c1.tar.bz2
[svn-r13477] Description:
The main purpose of this checkin was to eliminate the space used for tracking creation time indices when there is no way they can be used (i.e. attributes can't be shared in the file and the user hasn't turned on attribute creation tracking), however there were some other minor changes which crept in: - Fix a cache locking deadlock when a shared attribute and one of its components end up in the same fractal heap direct block. (This is fixed the "slow" way for right now, until John has time to add support for readers/writer locking to the cache. - Optimize attribute copying when a copy will be kept during a v2 B-tree search. - When freeing a block on disk, attempt to merge it with the metadata and "small data" aggregators. Tested on: Mac OS X/32 10.4.8 (amazon) FreeBSD/32 6.2 (duty)
Diffstat (limited to 'src/H5Opkg.h')
-rw-r--r--src/H5Opkg.h18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/H5Opkg.h b/src/H5Opkg.h
index 716260e..68066cf 100644
--- a/src/H5Opkg.h
+++ b/src/H5Opkg.h
@@ -120,7 +120,9 @@
(O)->sizeof_addr + /*addr of attribute heap */ \
(O)->sizeof_addr + /*addr of attribute name index */ \
(O)->sizeof_addr + /*addr of attribute creation order index */ \
- 2 + /*max attr. creation index */ \
+ (((O)->flags & H5O_HDR_ATTR_CRT_ORDER_TRACKED) ? ( \
+ 2 /*max attr. creation index */ \
+ ) : 0) + \
4 + /*chunk data size */ \
H5O_SIZEOF_CHKSUM) /*checksum size */ \
)
@@ -128,7 +130,7 @@
/*
* Size of object header message prefix
*/
-#define H5O_SIZEOF_MSGHDR_VERS(V) \
+#define H5O_SIZEOF_MSGHDR_VERS(V,C) \
(((V) == H5O_VERSION_1) \
? \
H5O_ALIGN_OLD(2 + /*message type */ \
@@ -139,12 +141,14 @@
(1 + /*message type */ \
2 + /*sizeof message data */ \
1 + /*flags */ \
- 2) /*creation index */ \
+ ((C) ? ( \
+ 2 /*creation index */ \
+ ) : 0)) \
)
#define H5O_SIZEOF_MSGHDR_OH(O) \
- H5O_SIZEOF_MSGHDR_VERS((O)->version)
-#define H5O_SIZEOF_MSGHDR_F(F) \
- H5O_SIZEOF_MSGHDR_VERS(H5F_USE_LATEST_FORMAT(F) ? H5O_VERSION_LATEST : H5O_VERSION_1)
+ H5O_SIZEOF_MSGHDR_VERS((O)->version, (O)->flags & H5O_HDR_ATTR_CRT_ORDER_TRACKED)
+#define H5O_SIZEOF_MSGHDR_F(F, C) \
+ H5O_SIZEOF_MSGHDR_VERS((H5F_USE_LATEST_FORMAT(F) || H5F_STORE_MSG_CRT_IDX(F)) ? H5O_VERSION_LATEST : H5O_VERSION_1, (C))
/*
* Size of chunk "header" for each chunk
@@ -241,7 +245,7 @@ struct H5O_t {
H5AC_info_t cache_info; /* Information for H5AC cache functions, _must_ be */
/* first field in structure */
- /* General information (not stored) */
+ /* File-specific information (not stored) */
size_t sizeof_size; /* Size of file sizes */
size_t sizeof_addr; /* Size of file addresses */