Since file data structures can be cached in memory by the H5AC package it becomes problematic to move such a data structure in the file. One cannot just copy a portion of the file from one location to another because:
Here's a correct method to move data from one location to
another. The example code assumes that one is moving a B-link
tree node from old_addr
to new_addr
.
H5AC_flush
is
FALSE
.
H5AC_flush (f, H5AC_BT, old_addr, FALSE);
H5F_block_read (f, old_addr, size, buf);
H5F_block_write (f, new_addr, size, buf);
H5AC_rename (f, H5AC_BT, old_addr, new_addr);