mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
HDFFV-10412 merge from develop
This commit is contained in:
parent
6d50d98cda
commit
bb27f1441f
@ -518,6 +518,18 @@ Bug Fixes since HDF5-1.10.1 release
|
||||
|
||||
Tools
|
||||
-----
|
||||
- h5repack
|
||||
|
||||
h5repack changes the chunk parameters when a change of layout is not
|
||||
specified and a filter is applied.
|
||||
|
||||
HDFFV-10297, HDFFV-10319 reworked code for h5repack and h5diff code
|
||||
in the tools library. The check for an existing layout was incorrectly
|
||||
placed into an if block and not executed. The check was moved into
|
||||
the normal path of the function.
|
||||
|
||||
(ADB - 2018/02/21, HDFFV-10412)
|
||||
|
||||
- h5dump
|
||||
|
||||
the tools library will hide the error stack during file open.
|
||||
|
@ -280,25 +280,6 @@ int apply_filters(const char* name, /* object name from traverse list */
|
||||
*has_filter = 1;
|
||||
if (H5Premove_filter(dcpl_id, H5Z_FILTER_ALL) < 0)
|
||||
HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Premove_filter failed");
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* check if there is an existent chunk
|
||||
* read it only if there is not a requested layout
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
if (obj.layout == -1) {
|
||||
if ((layout = H5Pget_layout(dcpl_id)) < 0)
|
||||
HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_layout failed");
|
||||
|
||||
if (layout == H5D_CHUNKED) {
|
||||
if ((rank = H5Pget_chunk(dcpl_id, NELMTS(chsize), chsize/*out*/)) < 0)
|
||||
HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_chunk failed");
|
||||
obj.layout = H5D_CHUNKED;
|
||||
obj.chunk.rank = rank;
|
||||
for (i = 0; i < rank; i++)
|
||||
obj.chunk.chunk_lengths[i] = chsize[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(nfilters) {
|
||||
*has_filter = 1;
|
||||
@ -306,6 +287,25 @@ int apply_filters(const char* name, /* object name from traverse list */
|
||||
HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "aux_copy_obj failed");
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* check if there is an existent chunk
|
||||
* read it only if there is not a requested layout
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
if (obj.layout == -1) {
|
||||
if ((layout = H5Pget_layout(dcpl_id)) < 0)
|
||||
HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_layout failed");
|
||||
|
||||
if (layout == H5D_CHUNKED) {
|
||||
if ((rank = H5Pget_chunk(dcpl_id, NELMTS(chsize), chsize/*out*/)) < 0)
|
||||
HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Pget_chunk failed");
|
||||
obj.layout = H5D_CHUNKED;
|
||||
obj.chunk.rank = rank;
|
||||
for (i = 0; i < rank; i++)
|
||||
obj.chunk.chunk_lengths[i] = chsize[i];
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* the type of filter and additional parameter
|
||||
* type can be one of the filters
|
||||
|
@ -76,8 +76,8 @@ GROUP "/" {
|
||||
DATATYPE H5T_STD_I32LE
|
||||
DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
|
||||
STORAGE_LAYOUT {
|
||||
CHUNKED ( 40, 20 )
|
||||
SIZE 1150 (2.783:1 COMPRESSION)
|
||||
CHUNKED ( 20, 10 )
|
||||
SIZE 1283 (2.494:1 COMPRESSION)
|
||||
}
|
||||
FILTERS {
|
||||
COMPRESSION DEFLATE { LEVEL 1 }
|
||||
|
@ -92,7 +92,7 @@ GROUP "/" {
|
||||
DATATYPE H5T_STD_I32LE
|
||||
DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
|
||||
STORAGE_LAYOUT {
|
||||
CHUNKED ( 40, 20 )
|
||||
CHUNKED ( 20, 10 )
|
||||
SIZE 3200 (1.000:1 COMPRESSION)
|
||||
}
|
||||
FILTERS {
|
||||
|
@ -92,7 +92,7 @@ GROUP "/" {
|
||||
DATATYPE H5T_STD_I32LE
|
||||
DATASPACE SIMPLE { ( 40, 20 ) / ( 40, 20 ) }
|
||||
STORAGE_LAYOUT {
|
||||
CHUNKED ( 40, 20 )
|
||||
CHUNKED ( 20, 10 )
|
||||
SIZE 3200 (1.000:1 COMPRESSION)
|
||||
}
|
||||
FILTERS {
|
||||
|
Loading…
Reference in New Issue
Block a user