<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> <title>How to Relocate a File Data Structure</title> </head> <body> <h1>How to Relocate a File Data Structure</h1> <p>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: <ol> <li>the file might not contain the latest information, and</li> <li>the H5AC package might not realize that the object's address has changed and attempt to write the object to disk at the old address.</li> </ol> <p>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 <code>old_addr</code> to <code>new_addr</code>. <ol> <li>Make sure the disk is up-to-date with respect to the cache. There is no need to remove the item from the cache, hence the final argument to <code>H5AC_flush</code> is <code>FALSE</code>. <br><br> <code> H5AC_flush (f, H5AC_BT, old_addr, FALSE);<br> </code> <br> </li> <li>Read the data from the old address and write it to the new address. <br><br> <code> H5F_block_read (f, old_addr, size, buf);<br> H5F_block_write (f, new_addr, size, buf);<br> </code> <br> </li> <li>Notify the cache that the address of the object changed. <br><br> <code> H5AC_rename (f, H5AC_BT, old_addr, new_addr);<br> </code> <br> </li> </ol> <hr> <address><a href="mailto:robb@maya.nuance.com">Robb Matzke</a></address> <!-- Created: Mon Jul 14 15:09:06 EST 1997 --> <!-- hhmts start --> Last modified: Mon Jul 14 15:38:29 EST <!-- hhmts end --> </body> </html>